专利名称:一种asn.1协议处理器的制作方法
技术领域:
本发明涉及一种ASN.1协议处理技术,特别涉及一种ASN.1协议处理器。
背景技术:
ASN.1协议是一种抽象文法标记规范,用以定义异构系统,例如Windows与UNIX系统之间的数据交互。ASN.1协议在电信领域应用广泛,主要用于客户/服务器结构中进行通信,其过程包括1、建立客户端与服务器端的连接;2、进行协议交互处理及协议编解码;3、关闭连接。
上述过程通常由客户端的一个软件模块——ASN.1协议处理器来实现。其中步骤2协议交互过程包含数据发送和数据接收,在发送前需要对ASN.1协议数据进行编码操作,接收后需要对服务器端字节流数据进行解码操作,实现较为复杂。
目前,在采用ASN.1协议作为通信协议的多数网管/应用系统开发中,ASN.1协议处理器的处理方法是对每条协议都使用Java进行协议交互处理及完成编解码工作,将ASN.1协议数据与字节流数据互相进行数据转换,实现对ASN.1数据的应用级编解码。Java语言是一种跨平台的编程语言,它使得代码可移植。其协议交互的基本过程参见图1,图1为现有技术ASN.1协议处理器示意图。
参见图1所示,现有技术ASN.1协议处理器100,仅由一个协议交互处理及编/解码程序101构成,所有处理过程都由它来完成。首先,由ASN.1协议处理器100建立客户端与服务器端之间的连接;然后,客户端应用系统向ASN.1协议处理器100提交ASN.1请求;ASN.1协议处理器100中的协议交互处理及编/解码程序101,使用Java将该条协议编码为服务器端能够接收的字节流数据后,将转换为字节流数据的ASN.1请求发送给服务器端的应用系统;服务器端的应用系统接收该请求后,向ASN.1协议处理器100发送ASN.1响应;协议交互处理及编/解码程序101,使用Java将该响应信息解码为ASN.1协议数据后,将处理过的ASN.1响应发送给客户端的应用系统;客户端的应用系统接收ASN.1响应,完成协议交互;最后,ASN.1协议处理器100关闭客户端与服务器端之间的这个连接。
由于现有的技术是对每条协议都在应用程序中使用Java进行协议交互处理及编解码工作,来实现对ASN.1数据的应用级编解码,使得一些大、中型软件系统的程序代码达到万行代码级,造成了巨大的开发和维护的工作量,对应用开发人员的知识和技能结构需求高。同时,由于所有功能都由一个程序来完成,对程序的准确性要求非常高,有微小的错误很难调试,又增加了调试和维护的工作量。
近年来兴起的XML技术(eXtensible Markup Language,扩展标记语言)是Web上表示结构化信息的一种标准文本格式,可以将不同数据格式的数据都转换成XML格式,通过XML的桥梁作用,在异构系统之间实现数据移植。
XML技术目前还没有应用到ASN.1通信协议的处理中。
发明内容
有鉴于此,本发明的目的在于提供一种ASN.1协议处理器,降低网管应用协议处理应用开发的难度和工作量。
为达到上述目的,本发明的技术方案具体是这样实现的一种ASN.1协议处理器,用于在客户端和服务器端之间进行协议交互和协议数据与字节流数据的转换,该协议处理器包含固化了ASN.1协议的协议数据描述模块,和固化了协议处理流程编码的协议处理流程模块;其中,协议数据描述模块存储用扩展标记语言(XML)描述的ASN.1协议描述信息,以及存储在进行协议交互前,根据该描述信息设置的协议处理流程所需要的ASN.1协议数据;协议处理流程模块根据客户端的ASN.1请求,从协议数据描述模块中取出相应的ASN.1协议描述信息,并根据该描述信息将客户端的ASN.1请求编码为服务器端能够接收的字节流数据发送给服务器端;或将从服务器端接收的字节流数据解码为ASN.1协议数据返回给客户端。
所述的协议处理流程模块可以进一步包含固化了协议交互过程的协议处理流程层、固化了编解码过程的编解码器层和连接层;协议处理流程层接收客户端发出的ASN.1请求,从协议数据描述模块中取出相应的ASN.1协议描述信息,发送给编解码器层;编解码器层根据该描述信息将客户端的ASN.1请求编码为服务器端能够接收的字节流数据,回送协议处理流程层;协议处理流程层将该字节流数据经过连接层发送给服务器端;或协议处理流程层将经过连接层从服务器端接收的字节流数据,发送给编解码器层;编解码器层将该字节流数据解码为ASN.1协议数据回送给协议处理流程层;协议处理流程层将该ASN.1协议数据返回给客户端;且连接层由协议处理流程层控制,建立客户端与服务器端的连接,并在一次协议交互完成后保持客户端与服务器端的连接,当需要进行下一次协议交互时,直接使用保持的连接进行通信。
所述的协议处理流程层可以进一步包含固化了查询数据过程的简单查询流程单元,和固化了订阅数据过程的数据订阅流程单元;所述的协议数据描述模块,进一步包含服务器端信息,和需要进入上述哪个流程单元的描述信息;所述的简单查询流程单元,可用于在客户端查询服务器端数据时,控制客户端向服务器端发出一次查询请求,并接收一次服务器端返回的查询数据;所述的数据订阅流程单元,可用于在客户端订阅服务器端数据时,控制客户端向服务器端发出一次订阅请求,并接收多次由服务器端返回的所有订阅数据。
所述的连接层可以进一步包含连接池单元和连接池管理器;连接池管理器控制连接池单元,建立和保持客户端与服务器端的连接。
所述的协议数据描述模块可以进一步包含每条ASN.1协议的名称、命令码、消息类型、请求数据类型、响应数据类型的描述信息。
由上述的技术方案可见,本发明的这种ASN.1协议处理器,降低了应用开发的难度与工作量。当协议设计发生变动时,协议处理部分的修改只需修改描述文件,而无需修改编码。大大降低了系统日后的维护工作量。同时,降低了应用系统的规模。
图1为现有技术ASN.1协议处理器示意图;图2为本发明使用的ASN.1协议处理器的一个较佳实施例示意图;图3为图2所示实施例的协议数据描述模块的结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
本发明的ASN.1协议处理器,将协议处理流程编码固化为协议处理流程模块,同时将协议处理过程中变化最为频繁的数据模块从处理流程中剥离,以XML描述文件的方式对ASN.1协议数据建立协议数据描述模块,自动实现ASN.1数据发送和接收。
将ASN.1协议交互过程进行抽象,并将其软件编码一般是java程序编码固化为协议处理流程模块,包含两类协议处理流程模块简单查询流程模块和数据订阅(有时称为实时数据服务)流程模块。另外,将编解码过程固化为编解码器,由上述流程模块进行调用,使得编解码规则也可以很容易的替换和重用。将协议处理过程进行固化,使得具体协议发生变化时,处理过程不变。
同时,使用XML语言对ASN.1协议数据和服务器信息以及由哪个流程进行处理等信息进行描述,建立协议数据描述模块。其中,ASN.1协议数据包含了所有ASN.1协议的名称、命令码、消息类型、请求数据类型和响应数据类型等描述信息。这个协议数据描述模块中的数据内容在系统开始运行时进行设置,当具体协议发生变化时,只需在系统开始运行时进行设置或修改即可,不需要改变处理过程。
这样,本发明的ASN.1协议处理器参见图2。图2为本发明使用的ASN.1协议处理器的一个较佳实施例示意图,如图2所示,本发明的协议处理器200包含固化了ASN.1协议的协议数据描述模块201,和固化了协议处理流程编码的协议流程模块202。
其中,协议数据描述模块201的结构参见图3,图3为图2所示实施例的协议数据描述模块的结构示意图。协议数据描述模块201中的协议定义301包含多个协议簇定义302;协议簇定义302包含服务器定义303和所有协议定义306;服务器定义303包含服务器名304和流程单元号码305;所有协议定义306中的一条协议定义307包含唯一标识协议的协议名308、协议命令码309、消息类型310、请求数据类型311、和响应数据312等信息。其中的消息类型310是预定义消息类型指定协议的发送方式,一般不做修改,其他定义可以根据具体协议的内容来定义。其中的数据内容在系统开始运行时进行设置。图中320表示其后的定义不只一个,可以为多个。
协议流程模块202包含固化了协议交互过程的协议处理流程层203、连接层204、和固化了编解码过程的编解码器层205。
协议处理流程层203接收客户端发出的ASN.1请求,从协议数据描述模块201中取出相应的ASN.1协议描述信息,发送给编解码器层205;编解码器层205根据该描述信息将客户端的ASN.1请求编码为服务器端能够接收的字节流数据,回送协议处理流程层203;协议处理流程层203将该字节流数据经过连接层204发送给服务器端;或协议处理流程层203将经过连接层204从服务器端接收的字节流数据,发送给编解码器层205;编解码器层205将该字节流数据解码为ASN.1协议数据回送给协议处理流程层203;协议处理流程层203将该ASN.1协议数据返回给客户端;另外,协议处理流程层203还可以包含固化了查询数据过程的简单查询流程单元,和固化了订阅数据过程的数据订阅流程单元(图2中没有示出)。
简单查询流程单元用于在客户端查询服务器端数据时,控制客户端向服务器端发出一次查询请求,并接收一次服务器端返回的查询数据,数据查询过程的特点是一去一回。典型应用场合是查询某个用户的信息,查询帐单等等。
数据订阅流程单元用于在客户端订阅服务器端数据时,控制客户端向服务器端发出一次订阅请求,并接收多次服务器端返回的所有订阅数据。数据订阅过程是客户端发一次请求将自身注册到服务器端,以后服务器端直接将订阅的数据发回给注册的客户端。这种交互的典型特点是一去多回。典型应用是实时的告警,服务器端一旦收到告警信息,会将每次的告警消息发送给所有注册的客户端。
连接层204还包含连接池单元207和连接池管理器206,通过协议处理流程层203与连接池管理器206进行通信,由连接池管理器206控制连接池单元207建立客户端与服务器端的连接,并在一次协议交互完成后保持客户端与服务器端的连接,当需要进行下一次协议交互时,直接用保持的连接进行通信。
由上述的实施例可见,本发明的这种ASN.1协议处理器,降低了应用开发的难度与工作量。当协议设计发生变动时,协议处理部分的修改只需修改描述文件,而无需修改编码。大大降低了系统日后的维护工作量。同时,应用系统的规模也得以一定程度的降低。而且,因为屏蔽了协议交互流程实现细节,降低了应用开发人员的知识和技能结构需求,从而降低了人员的培训成本。
权利要求
1.一种ASN.1协议处理器,用于在客户端和服务器端之间进行协议交互和协议数据与字节流数据的转换,其特征在于,该协议处理器包含固化了ASN.1协议的协议数据描述模块,和固化了协议处理流程编码的协议处理流程模块;其中,协议数据描述模块存储用扩展标记语言(XML)描述的ASN.1协议描述信息,以及存储在进行协议交互前,根据该描述信息设置的协议处理流程所需要的ASN.1协议数据;协议处理流程模块根据客户端的ASN.1请求,从协议数据描述模块中取出相应的ASN.1协议描述信息,并根据该描述信息将客户端的ASN.1请求编码为服务器端能够接收的字节流数据发送给服务器端;或将从服务器端接收的字节流数据解码为ASN.1协议数据返回给客户端。
2.如权利要求1所述的协议处理器,其特征在于,所述的协议处理流程模块进一步包含固化了协议交互过程的协议处理流程层、固化了编解码过程的编解码器层和连接层;协议处理流程层接收客户端发出的ASN.1请求,从协议数据描述模块中取出相应的ASN.1协议描述信息,发送给编解码器层;编解码器层根据该描述信息将客户端的ASN.1请求编码为服务器端能够接收的字节流数据,回送协议处理流程层;协议处理流程层将该字节流数据经过连接层发送给服务器端;或协议处理流程层将经过连接层从服务器端接收的字节流数据,发送给编解码器层;编解码器层将该字节流数据解码为ASN.1协议数据回送给协议处理流程层;协议处理流程层将该ASN.1协议数据返回给客户端;且连接层由协议处理流程层控制,建立客户端与服务器端的连接,并在一次协议交互完成后保持客户端与服务器端的连接,当需要进行下一次协议交互时,直接使用保持的连接进行通信。
3.如权利要求2所述的协议处理器,其特征在于,所述的协议处理流程层进一步包含固化了查询数据过程的简单查询流程单元,和固化了订阅数据过程的数据订阅流程单元;所述的协议数据描述模块,进一步包含服务器端信息,和需要进入上述哪个流程单元的描述信息;所述的简单查询流程单元,用于在客户端查询服务器端数据时,控制客户端向服务器端发出一次查询请求,并接收一次服务器端返回的查询数据;所述的数据订阅流程单元,用于在客户端订阅服务器端数据时,控制客户端向服务器端发出一次订阅请求,并接收多次由服务器端返回的所有订阅数据。
4.如权利要求2所述的处理方法,其特征在于,所述的连接层进一步包含连接池单元和连接池管理器;连接池管理器控制连接池单元,建立和保持客户端与服务器端的连接。
5.如权利要求1或3所述的协议处理器,其特征在于,所述的协议数据描述模块进一步包含每条ASN.1协议的名称、命令码、消息类型、请求数据类型、响应数据类型的描述信息。
全文摘要
本发明公开了一种ASN.1协议处理器,用于在客户端和服务器端之间进行协议交互和协议数据与字节流数据的转换,其包含固化了ASN.1协议的协议数据描述模块,和固化了协议处理流程编码的协议处理流程模块;协议数据描述模块存储用扩展标记语言(XML)描述的ASN.1协议描述信息,以及存储根据该描述信息设置的协议处理流程所需要的ASN.1协议数据;协议处理流程模块根据协议数据描述模块中的信息,按照固化的协议处理流程进行协议交互和协议转换。本发明的ASN.1协议处理器的应用,能够大幅度降低应用开发的难度与工作量和系统维护的工作量。
文档编号H04Q3/545GK1525714SQ03105350
公开日2004年9月1日 申请日期2003年2月25日 优先权日2003年2月25日
发明者陈宇, 段劲竹, 陈科锋, 周昕宇, 田国涛, 黄正, 陈 宇 申请人:华为技术有限公司