CN101202739A - 一种asn.1报文面向对象的处理装置 - Google Patents
一种asn.1报文面向对象的处理装置 Download PDFInfo
- Publication number
- CN101202739A CN101202739A CNA2006101611811A CN200610161181A CN101202739A CN 101202739 A CN101202739 A CN 101202739A CN A2006101611811 A CNA2006101611811 A CN A2006101611811A CN 200610161181 A CN200610161181 A CN 200610161181A CN 101202739 A CN101202739 A CN 101202739A
- Authority
- CN
- China
- Prior art keywords
- message
- class
- asn
- support
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000012545 processing Methods 0.000 title claims abstract description 24
- 230000006870 function Effects 0.000 claims description 48
- 230000015572 biosynthetic process Effects 0.000 claims description 12
- 239000003550 marker Substances 0.000 claims description 9
- 239000002131 composite material Substances 0.000 claims description 5
- 238000011161 development Methods 0.000 claims description 3
- 230000000295 complement effect Effects 0.000 abstract 1
- 230000007547 defect Effects 0.000 abstract 1
- 238000012423 maintenance Methods 0.000 abstract 1
- 230000002085 persistent effect Effects 0.000 abstract 1
- 238000000034 method Methods 0.000 description 13
- 230000002688 persistence Effects 0.000 description 10
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000012360 testing method Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0233—Object-oriented techniques, for representation of network management data, e.g. common object request broker architecture [CORBA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种ASN.1报文面向对象的处理装置,包括:ASN.1底层支持模块,用于将ASN.1报文编译成程序语言实例代码;公共操作模块,用于对报文做处理以支持报文应用的操作;报文插件,用于将公共操作模块生成的代码生成报文集插件,以类描述表为插件接口;所述公共操作模块或报文插件用于修改生成的程序语言实例代码,补充类的描述信息,对生成的代码增加对类实例操作的支持;在生成的代码中建立TopClass类描述表。本发明解决报文持久化保存后报文结构实例再复原创建的问题,克服要预先知道码流数据类型才能解码的缺点,降低了报文的构造难度,极大地减轻报文开发和维护的工作量。
Description
技术领域
本发明涉及一种ASN.1协议报文处理装置,特别涉及一种ASN.1报文面向对象的处理装置。
背景技术
ASN.1(抽象文法标记规范,Abstract Syntax Notation 1)是ITU定义的描述在网络上传输信息格式的标准规范,为节点间的数据转换提供标准格式。每个节点只关心从ASN.1翻译过来或翻译成ASN.1而不必知道数据存于网络任何处的格式。它有两部分:第一部份(ISO 8824/ITU X.208)描述信息内的数据、数据类型及序列格式,也就是数据的语法;第二部分(ISO8825/ITU X.209)描述如何将各部分数据组成消息,也就是数据的基本编码规则,原来是作为X.409的一部分而开发的,后来才独立地成为一个标准。第一代PKI(即公开密钥体系Public Key Infrastructure)标准主要是基于ASN.1的,在SNMP(简单网络管理协议)中它用于定义SNMP协议数据单元和对象的格式,被广泛应用于通信和计算机的其他领域。
使用ASN.1报文格式通信也就成为电信网管系统最常见的通信方式。
ASN.1报文具有如下特殊性质:
1.报文呈树状结构,可以根据需要定义较多层次的报文嵌套。
2.报文中某个节点的类型多种多样,可能为一个简单数据类型,比如INTEGER、GRAPHICSTRING,ENUM等等;也有可能为包含再下级节点的复合数据类型SET,SEQUENCE,SET OF,SEQUENCE OF。
3.在SET,SEQUENCE结构中,某个节点有可能不存在,因为对应报文节点允许设置为OPTIONAL,表示可有可无。
4.在使用ASN.1文件时,首先在ASN.1文件定义ASN.1结构,然后通过编译器编译成为中间程序语言结构,比如Java,C++语言。然后通过使用对应的程序语言结构,达到通信的目的。
5.ASN.1支持BER(基本编码规则,Basic Encoding Rules),DER(区分编码规则,Distinguished Encoding Rules),VAL(值编码规则,ASN.1valuenotation)等编码,可以将中间语言结构实例编码为码流,但是在从码流解码为中间语言结构实例时会有问题,首先要知道码流对应的结构,然后才能用该结构的解码方法解码,如果该结构中包括ANY类型(指不确定的类型),该类型数据还要通过其它成员字段确定其特定类型才能再进一步解码。
关于ASN.1报文在C/S类型软件中一般常用的方法是:
1.建立客户端与服务器端的连接;
2.客户端与服务器端进行协议交互:
a)报文发送方填写ASN.1报文头和报文体,报文头包括命令码,报文体采用ANY类型,其真实数据类型因命令码不同而不同;
b)报文发送方编码报文为字节流,发送给报文接受方;
c)报文接受方接受到报文字节流,解码报文头,然后根据其中的命令码,用特定数据类型解码报文体;
d)报文接受方根据报文的内容,作相应的响应;
3.交互结束,关闭连接。
在针对报文的接口测试工具中经常需要模拟报文,模拟报文有两种来源,一种是通过解释性脚本语言创建,另一种是通过持久化数据创建报文结构实例,进一步还要求可以修改该实例。而在应用程序中在有时候要求将报文持久化保存为文件或保存到数据库,并且从持久化报文中再现报文。并且希望文件中的数据是可读的,可以修改其中的数据。
通常在网管子系统中采用BER编码传输,BER码流由于其不可阅读,并且对还有ANY成员的数据类型,无法直接复原,这种格式不适合持久化保存报文;DER是一种编码唯一的BER,由于同样的原因不适合持久化保存报文。而VAL(ASN.1 VALue notation)格式是一种供人可读的名字值符号格式,利用“{”,“}”进行层嵌套树状标记结构,具有下面的特点:
1.对于非最外层节点采用“名字值”的格式,对于最外层根节点采用“数据结构类型名称值”的格式。
2.对于SET,SEQUENCE的值中数据采用“{”,“}”括起来,成员之间采用”,”分隔。
3.对于SET OF,SEQUENCE OF的值中数组数据采用“{”,“}”括起来,数组元素之间采用“,”分隔。
4.对于ANY的值中数据,如果ANY中数据是字节串,采用字节串的16进制显示.如果是特定的ASN.1数据类型,则采用“特定数据结构类型名称值”的格式。
VAL格式的这些标记特点使得它有机会直接从码流完全复原为ASN.1报文实例。而现有的ASN.1编译平台,包括DSET和ESNACC都不支持完全复原ASN.1报文实例的功能。
发明内容
本发明要解决的技术问题就是提供一种ASN.1报文面向对象的处理装置,解决报文持久化保存后报文结构实例再复原创建的问题,克服要预先知道码流数据类型才能解码的缺点,降低了报文的构造难度,极大地减轻报文开发和维护的工作量。
为了解决上述技术问题,本发明提供一种ASN.1报文面向对象的处理装置包括:
ASN.1底层支持模块,用于将ASN.1报文编译成程序语言实例代码;
公共操作模块,用于对报文做处理以支持报文应用的操作;
报文插件,用于将公共操作模块生成的代码生成报文集插件,以类描述表为插件接口;
所述公共操作模块或报文插件用于修改ASN.1底层支持模块生成的程序语言实例代码,以虚函数的方式补充类的描述信息,包括类结构描述信息和创建类实例的函数;对生成的代码增加对类实例操作的支持;在生成的代码中建立TopClass类描述表,包括该TopClass类名称和类描述的对应关系,所述TopClass类指顶层类,而不是子类。
进一步地,所述程序语言实例代码为C++或JAVA程序代码。
进一步地,所述公共操作模块或报文插件对于简单数据类型、复合数据类型,补充该数据类型的类型名称和整数值、类实例创建函数;对于SET、SEQUENCE数据类型,补充各成员名称、设置是否为可有可无optional类型,以及补充成员描述信息的对应表;对于ENUM数据类型,补充其成员符号表示和数字值之间的对应表。
进一步地,所述公共操作模块或报文插件在程序语言实例代码中增加类描述表,将类的描述信息以类描述表的形式表示,以类名称为关键字,以类名称排序或做成哈希表便于检索。
进一步地,对于简单数据类型,所述公共操作模块或报文插件在程序语言实例代码中增加对类实例操作的支持包括:
增加虚函数的支持,并能够获得数据值、设置数据值;
对于复合数据类型,所述公共操作模块或报文插件在程序语言实例代码中增加对类实例操作的支持包括:
(a)增加对点标记符路径的支持;
(b)增加设置SEQUENSE、SET中的成员是否存在的标志;
(c)增加对于SQUENSE OF,SET OF数组类获得数组长度、设置数组长度、遍历数组元素的支持;
(d)增加对于CHOICE数据类型选择操作的支持;
(e)增加对于Any数据类型设置的支持,能够设置其实际类型的变量或获得实际类型的变量;
(f)增加通过点标记符路径获得相应的子节点的对象的支持。
进一步地,所述公共操作模块使用AsnTreeObject树链表表示ASN.1报文结构。
进一步地,所述公共操作模块或报文插件用于将生成的代码生成VAL格式数据。
进一步地,所述公共操作模块或报文插件用于将VAL格式数据恢复成程序语言报文实例。
进一步地,所述公共操作模块或报文插件用于将VAL格式数据转换成XML格式数据。
进一步地,所述ASN.1报文面向对象的处理装置还包括界面图形包和图形报文编辑模块,
所述界面图形包用于开发图形界面;
所述图形报文编辑模块利用图形包和公共操作模块,提供用户图形界面报文编辑功能,用于以修改AsnTreeObject树链表的方式修改、创建和编辑ASN.1报文。
进一步地,所述ASN.1报文面向对象的处理装置还包括脚本支持包、报文脚本操作模块,
所述脚本支持包用于运行脚本和对脚本扩展支持;
所述报文脚本操作模块利用脚本支持包和公共操作模块,对脚本增加ASN.1报文操作功能,用于修改AsnTreeObject树链表的方式修改、创建和编辑ASN.1报文。
本发明有如下有益效果:
1.使ASN.1报文能够持久化保存,持久化保存的数据可以完全恢复创建为数据结构实例,其中的ANY类型也已经解码。
2.报文可以采用名字值字符串符号操作,方便修改报文,支持脚本语言创建ASN.1报文。
3.报文生成方法和报文定义独立,ASN.1报文集可以采用插件方式,插件是通过MAKEFILE编译ASN.1文件自动生成的,方便报文的变动和更新,节省了维护的工作量。
4.本装置是通用的,不依赖于特定的ASN.1结构类型和ASN.1编译器。
附图说明
图1本发明实施例组成示意图;
图2为报文的转换过程示意图;
图3ESNACC C++基本类结构继承体系;
图4DSET C++基本类结构继承体系。
具体实施方式
下面结合附图及具体实施例对本发明进行详细说明。
如图1所示,ASN.1底层支持模块,应用的ASN.1结构做成报文插件,基于报文插件作一些公共操作,再基于此可以作图形编辑报文,脚本操作修改报文。报文公共操作包括特定类型报文创建、修改、VAL文件生成、编解码等各种基本应用的封装。
ASN.1底层支持模块:将ASN.1文件编译生成特定程序语言代码,如C++、Java。将ASN.1的结构编译成程序语言的类。ASN.1底层支持模块为生成的代码执行提供支持。如C++中一般提供多个库给可以给生成的代码调用,其中包括ASN.1特定语言的基类和一些支持操作的功能。
报文插件:为了对ASN.1报文集能够进行统一的处理,将ASN.1的报告经过ASN.1编译器生成的程序代码,经过按照一定的接口功能要求完善后,经过语言编译器编译生成库。可以被应用程序动态加载。插件可以用扫描程序对生成的程序代码处理后,再经过语言编译器生成库。这样其它应用模块只对接口有依赖,而不需要随报文集的变化而变化。如C++可以生成特定接口的动态库;JAVA可以把支持特定接口的Java类做成包,运行时加载包,通过类反射创建JAVA类以支持特定接口。
公共操作模块:基于ASN.1底层支持模块和报文插件接口,对报文做一些统一处理以方便支持报文应用模块的操作,如创建类事例,修改类数据成员,由VAL格式数据生成报文,两个报文进行比较等。
界面图形包:第三方提供的界面图形开发包,能方便用户开发图形界面。
图形报文编辑模块:利用图形包和ASN.1公共操作模块,提供用户方便友好图形界面报文编辑功能,可以以树表方式创建编辑ASN.1报文,树表中包括字段名称、类型的名称和整数值、数据成员的长度,数据成员的值等列。可以打开保存VAL格式。
脚本支持包:运行脚本和对脚本扩展支持的包,如PYTHON,TCL等,解释执行的,一般效率较低,但容易跨平台,可以用C++等语言对其进行扩展。
报文脚本操作模块:利用脚本扩展支持和ASN.1公共操作模块,对脚本增加ASN.1报文操作功能,方便用户以脚本的方式访问报文。
图2描述了ASN.1相关的报文、ASN.1结构定义、C++对应类结构、码流格式之间的相互转化。ASN.1脚本操作、ASN.1图形编辑所操作的数据以及形成报文相关数据的转化过程。特别通过本文发明的方法C.2,可以将永久保存的VAL报文完全恢复为C++类结构实例,进一步进行各种编码。本文提供的方法还可以支持G和H两种应用。
步骤A.ASN.1文件可以通过ASN.1的C++编译器生成C++的类结构,可以由类结构进一步创建类结构实例。
步骤B.1C++类结构实例可以编码生成BER,DER码流。
步骤B.2BER,DER码流可以解码成具体的C++类结构实例。
步骤C.1C++类结构实例可以生成VAL数据格式。
步骤C.2VAL数据格式可以通过本文方法完全恢复为C++结构实例。
步骤D C++类结构实例可以解析生成一种树型结构AsnTreeObject。
步骤E AsnTreeObject可以生成VAL格式数据。
步骤F其它格式,比如XML格式可以和VAL格式相互转化。
步骤G Asn.1脚本操作可以通过修改AsnTreeObject,进一步生成C++类结构实例。
步骤H.1AsnTreeObject可以在图形编辑器中显示。
步骤H.2Asn.1图形编辑器可以生成AsnTreeObject.
下面结合一个网管测试平台的实例,详细说明报文构造方法,本文针对在DSET ASN.1编译平台和ESNACC ASN.1编译平台,实现报文编辑器和脚本创建报文的方法,本发明可以适用于任何面向对象程序语言实现,本文主要结合C++讨论,也可以使用其它面向对象的程序语言,如JAVA语言实现。
容器说明:
本发明利用容器来缓存需要进行比较的报文节点信息。具体实施起来,容器可以是队列(deque),也可以是链表(list)或栈(stack)。下文以队列为例来说明本发明所述比较方法。队列泛指一种处理思想,可以自定义实现,也可以利用STL(标准模板库)中提供的队列类型STD::list。本发明使用的字符串类型ansistring可以是std::string,也可以是MFC的CString,也可以自己定义。
测试报文来源
本发明使用的报文来源于被测多个网管项目的子系统通信报文,每个网管由于版本不同,新版本的报文存在一定的增删,要求测试平台能够模拟报文,能够通过报文编辑器报文,通过脚本能够引用或创建报文。
ESNACC平台具体实施方式:
(一)编译平台
ESNACC是开放源码的ASN.1编译器,支持BER,PER编码,只能输出类似VAL格式的数据,不能从VAL格式解码为C++结构实例。SEQUENCE OF和SET OF是采用模板类,没有统一的基类成员函数支持支持数组长度操作和数组节点遍历。ESNACC报文类型继承体系。AsnType的顶层基类。其基本类结构继承体系见图3,ESNACC基本类继承关系层次图,ESNACC基本基类为AsnType,AsnType为抽象基类。在此之上继承了一些简单的类型来支持基本ASN.1数据类型如AsnInt、AsnReal、AsnRelativeOid、AsnAny、AsnOcts、AsnBool、AsnNull、asnString,其中AsnInt也由PERGgeneral派生,AsnEnum由AsnInt派生,AsnOid由AsnRelativeOid派生;AsnList是实现其它Asn.1类的中间类型、AsnSetOf、AsnSeqOf由AsnList派生;使用了标准模板库的std::string、std::list来进一步支持SEQUENCE OF、SET OF等。一些应用的字符串类型如VisibleString、GraphicString、Ia5String、PrintableString、NumericString是由基本字符串类型AsnString派生来的。其中GeneralizedTime、UTCTime由VisibleString派生。
(二)报文处理流程
在做接口测试工具时,要处理基于ASN.1报文,需要提供一个ASN.1报文的编辑器,能通过图形界面创建报文;测试工具支持脚本操作报文,包括修改值或数据长度等。如果从ASN.1报文的底层编解码开始做起,工作量就很大,因此要求能够利用现有的ASN.1编译器。在编译器的基础上,对编译器进行修改或将生成的ASN.1报文C++代码进行二次扫描处理以生成需要的C++程序代码。这主要是为了生成报文插件而需要的处理方法。
1.ESNACC的基本类已经具有类描述信息,其中包括对应类型的创建函数,部分生成的C++结构类型的描述信息不完善,如INTEGER(1..200)这种类型,需要通过修改编译器补充其描述信息。
2.已经能够进行C++类实例的基本操作,但是不支持点标记符路径,也没有的虚函数获得数据值、设置数据值;对SEQUENCE OF和SET OF的也没有统一数组长度操作。增加点标记符路径支持函数,支持通过点标记符路径路径获得相应的子节点的对象,通过参数选择可以创建不存在的成员;在AsnType中增加成员函数可以在AsnType中定义虚函数接口获得尺寸、设置尺寸,获得所有儿子成员节点的函数。在模板类AsnList中实现虚函数获得尺寸、设置尺寸,获得所有儿子成员节点的函数;
3.TOPCLASS类描述表的建立,ESNACC支持META信息可以编译生成类描述表const AsnModuleDesc*asnModuleDescs[]。为了通过类描述表快捷搜索元素,可以进一步将此表转化为以name为关键字的map或有序数组。
4.将步骤1-3的代码生成一个DLL,通过函数AsnModuleDesc**GetMoudleDescs()可以导出asnMoudleDescs变量,所有的TOPCLASS类可以根据需要选择导出与否。这样就变成了一个插件,插件的接口就是GetMoudleDescs,通过该结构将可以获得所有TOPCLASS的描述,创建和修改它们的实例。asnMoudleDescs指针可以在加载插件时注册,或者也可以在加载完插件后显式注册。实现图2中的步骤A。以上步骤1-4,在图1的报文插件中实现。
5.AsnTreeObject可以定义为
class AsnTreeObject{
public:
ansistring nodename;
ansistring nodeVALue;
int asnltype;
ansistring typename;
AsnType*pParent;
AsnTreeObjectList childrenlist;
};
AsnTreeObjectList为类型AsnTreeObject指针的链表,当然该结构可以根据需要增加其它额外的数据。这种结构便于遍历显示或修改。与此相关实现图2中的步骤D和E。这一部分内容在图1的公共操作模块中实现。
6.ASN.1C++报文结构实例和VAL格式数据相互生成,生成VAL格式数据的PrintVAL可以在AsnType中成为其一个成员函数;也可以作为一个以AsnType指针为参数的独立的函数。从VAL格式数据生成生成ASN.1C++报文结构实例的函数可以一个独立的函数,以VAL格式数据为参数,以AsnType指针的引用为参数,以错误码为返回值。也可以是同样函数格式的AsnType的静态成员函数。如静态成员函数,这一部分功能要在插件中实现,如果是独立函数可以在插件外其它模块实现。实现图2中的步骤C.1,C.2。步骤C.1可以利用上述1,2中的操作,在步骤C.2需要利用上述1,2,3中的操作。这一部分内容在图1的报文插件中实现。
7.为了在图形编辑器中实现对一个报文的编辑,要能列出所有的ASN.1结构类型名称,首先根据报文类型从asnMoudleDescs获得实例创建函数,然后利用上述步骤5AsnTreeObject对报文作显示,通过报文类描述的约束信息对AsnTreeObject进行编辑,进一步生成VAL格式数据,由VAL格式数据生成ASN.1C++报文结构实例。采用VAL格式数据生成C++报文结构实例,而不是由AsnTreeObject直接生成C++报文结构实例,主要目的是生成VAL格式简单,而且对编译平台基本类结构体系依赖减少,进一步对编译平台的移植性较好。利用上述的方式,同样可以通过脚本创建和修改报文。以VAL格式数据对报文进行持久化保存。
8.使用PYTHON脚本语言,通过脚本扩展支持ASN.1报文操作,这样在测试工具中就实现通过脚本创建和使用报文了。
DSET平台具体实施方式:
为了进一步说明本发明技术方案,下面以编译平台DSET结合实施例和附图再进行详细说明。
(一)编译平台
以DSET为编译平台,这个是一个不开放源代码的商业ASN.1编译器,支持BER,PER,DER等多种编码,可以输出VAL格式的数据,在具有已有C++类型实例可以通过VAL格式数据修改其中的数据成员,对其中的ANY类型数据的真实类型不识别。ENUM类型的描述信息较弱,不能直接获取符号名字串和数字值的对应表。没有TOPCLASS类描述表。其基本类结构继承体系见图4,DSET基本类继承关系层次图,其基本基类为AbstractData,AbstractData为抽象基类。基本类型如CHOICE、AbstractReal、EUNMERATED、Integer、BOOLEAN及不确定类型Any从它直接继承;StructData、D_array、D_SeqOfVal、D_SeqOfObj是实现其它Asn.1类的中间类型,D_SeqOfVal、D_SeqOfObj通过D_Array派生;AbstractString由D_SeqOfVal派生,UTCTime、GeneralizedTime、PrintableString、IA5String、GraphicString、VisibleString由AbstractString派生。
(二)报文处理流程
做基于ASN.1报文接口测试工具,需要提供一个ASN.1报文的编辑器,能通过图形界面创建报文;测试工具支持脚本操作报文,包括修改值或数据长度等。如果从ASN.1报文的底层编解码开始做起,工作量就很大,因此要求能够利用现有的的ASN.1编译器。在编译器的基础上,对编译ASN.1报文生成的C++代码进行二次扫描处理以生成需要的C++程序代码。这主要是为了生成报文插件而需要的处理方法。
1.DSET的基本类已经具有类描述信息,类型为D_AdType,每一个类型对应一个D_AdType全局类描述变量,其中包括对应类型的创建函数。部分生成的C++结构类型的描述信息不完整,如ENUM类型,需要通过额外方法获得其符号名字串和数字值的对应表。
2.对C++类实例的基本操作已经具有,在类实例中可以通过constD_AdType*get_adType()获得类描述信息,但是对于点标记符路径不完全支持,没有统一的函数获得数据值、设置数据值;增加点标记符路径支持函数,这两部分也可以在报文插件外的其它模块实现。
3.TOPCLASS类描述表的建立,DSET编译平台不支持类描述表,这个可以通过对ASN.1文件二次扫描或对生成的C++代码扫描得到所有TOPCLASS类,然后生成类描述表。在MAKE FILE中可以通过脚本AWK,SED扫描生成类描述表,也可以通过其它程序来扫描生成类描述表。
4.将步骤1~3的代码生成一个DLL,通过导出函数AdTypeEntry*getAD_TypeTbl()类描述表及表的长度,所有的TOPCLASS类可以根据需要选择导出与否,可以通过再次扫描重新生成C++头文件。这样就变成了一个插件,插件的接口就是getAD_TypeTbl(),通过该结构将可以获得所有TOPCLASS的描述,创建和修改它们的实例。可以在加载完插件后显式注册类描述表。实现图2中的步骤A。以上步骤1~4内容在图1的报文插件中实现,步骤1的关于ENUM部分内容在公共操作模块实现。
5.AsnTreeObject可以定义为
class AsnTreeObject{
public:
ansistring nodename;
ansistring nodeVALue;
int asnltype;
ansistring typename;
AbstractData*pParent;
AbstractDataList childrenlist;
};
当然该结构可以根据需要增加其它额外的数据。这种结构便于遍历显示或修改。与此相关实现图2中的步骤D和E。
6.ASN.1C++报文结构实例和VAL格式数据相互生成,生成VAL格式数据的函数已经是AbstractData一个成员函数;从VAL格式数据生成ASN.1C++报文结构实例的函数是一个独立的函数,以VAL格式数据为参数,以AbstractData指针的引用为参数,以错误码为返回值。这一部分功能由于不能修改DSET基础类的程序,所以只能独立函数可以在插件外其它模块实现。实现图2中的步骤C.1,C.2。步骤C.1可以利用上述1,2中的操作,在步骤C.2需要利用上述1,2,3中的操作。这一部分内容在图1的公共操作模块中实现。
7.为了在图形编辑器中实现对一个报文的编辑,要能列出所有的ASN.1结构类型名称,首先根据报文类型从类描述表获得实例创建函数,然后利用上述步骤5AsnTreeObject对报文进行显示,通过报文类描述的约束信息对AsnTreeObject进行编辑,进一步生成VAL格式数据,由VAL格式数据生成ASN.1C++报文结构实例。采用VAL格式数据生成C++报文结构实例,而不是由AsnTreeObject直接生成C++报文结构实例,主要目的是生成VAL格式简单,而且对编译平台基本类结构体系依赖减少,进一步对编译平台的移植性较好。利用上述的方式,同样可以通过脚本创建和修改报文。以VAL格式数据对报文进行持久化保存。
8.进一步由于XML格式的兴起,ASN.1报文的XML表示可以包括VAL格式所包括的所有信息,即名称值符号对、外层结构类型、ANY的实际类型。这样只要包括了VAL格式信息的其它数据格式可以和VAL格式在插件描述信息的基础上相互转化,进一步XML文件可以替换VAL格式数据。
应当理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案的说明和具体实施方式做出各种可能的改变或替换,所有这些改变或替换都属于本发明的权利要求的保护范围。如:由于XML格式的兴起,ASN.1报文的XML表示可以包括VAL格式所包括的所有信息,即名称值符号对、外层结构类型、ANY的实际类型。这样只要包括了VAL格式信息的其它数据格式可以和VAL格式在插件描述信息的基础上相互转化,进一步XML文件在专利中可以替换VAL格式数据。
本发明解决了报文持久化保存后报文结构实例再复原创建的问题,克服了要预先知道码流数据类型才能解码的缺点,并且ANY类型可以解码为特定的数据类型,报文创建后可以进一步修改其成员数据,并且修改是可以通过字符创方式的操作,这样可以实现通过解释创建修改脚本报文结构实例,进一步我们可以将ASN.1报文做成插件,实现报文生成方法与报文定义独立,利用已有的ASN.1编译器,同时支持图形界面ASN.1报文编辑器和脚本访问ASN.1报文。如果报文定义发生了变化,只要重新编译生成插件,而生成方法不变,降低了报文的构造难度,极大地减轻报文开发和维护的工作量。
Claims (11)
1.一种ASN.1报文面向对象的处理装置,包括:
ASN.1底层支持模块,用于将ASN.1报文编译成程序语言实例代码;
公共操作模块,用于对报文做处理以支持报文应用的操作;
其特征在于:还包括报文插件,用于将公共操作模块生成的代码生成报文集插件,以类描述表为插件接口;
所述公共操作模块或报文插件用于修改ASN.1底层支持模块生成的程序语言实例代码,以虚函数的方式补充类的描述信息,包括类结构描述信息和创建类实例的函数;对生成的代码增加对类实例操作的支持;在生成的代码中建立TopClass类描述表,包括该TopClass类名称和类描述的对应关系,所述TopClass类指顶层类,而不是子类。
2.根据权利要求1所述的处理装置,其特征在于:所述程序语言实例代码为C++或JAVA程序代码。
3.根据权利要求1所述的处理装置,其特征在于:所述公共操作模块或报文插件对于简单数据类型、复合数据类型,补充该数据类型的类型名称和整数值、类实例创建函数;对于SET、SEQUENCE数据类型,补充各成员名称、设置是否为可有可无optional类型,以及补充成员描述信息的对应表;对于ENUM数据类型,补充其成员符号表示和数字值之间的对应表。
4.根据权利要求1所述的处理装置,其特征在于:所述公共操作模块或报文插件在程序语言实例代码中增加类描述表,将类的描述信息以类描述表的形式表示,以类名称为关键字,以类名称排序或做成哈希表便于检索。
5.根据权利要求1所述的处理装置,其特征在于:
对于简单数据类型,所述公共操作模块或报文插件在程序语言实例代码中增加对类实例操作的支持包括:
增加虚函数的支持,并能够获得数据值、设置数据值;
对于复合数据类型,所述公共操作模块或报文插件在程序语言实例代码中增加对类实例操作的支持包括:
(a)增加对点标记符路径的支持;
(b)增加设置SEQUENSE、SET中的成员是否存在的标志;
(c)增加对于SQUENSE OF,SET OF数组类获得数组长度、设置数组长度、遍历数组元素的支持;
(d)增加对于CHOICE数据类型选择操作的支持;
(e)增加对于Any数据类型设置的支持,能够设置其实际类型的变量或获得实际类型的变量;
(f)增加通过点标记符路径获得相应的子节点的对象的支持。
6.根据权利要求1~5中任意一项所述的处理装置,其特征在于:所述公共操作模块使用AsnTreeObject树链表表示ASN.1报文结构。
7.根据权利要求1所述的处理装置,其特征在于:所述公共操作模块或报文插件用于将生成的代码生成VAL格式数据。
8.根据权利要求7所述的处理装置,其特征在于:所述公共操作模块或报文插件用于将VAL格式数据恢复成程序语言报文实例。
9.根据权利要求7所述的处理装置,其特征在于:所述公共操作模块或报文插件用于将VAL格式数据转换成XML格式数据。
10.根据权利要求6所述的处理装置,其特征在于:所述ASN.1报文面向对象的处理装置还包括界面图形包和图形报文编辑模块,
所述界面图形包用于开发图形界面;
所述图形报文编辑模块利用图形包和公共操作模块,提供用户图形界面报文编辑功能,用于以修改AsnTreeObject树链表的方式修改、创建和编辑ASN.1报文。
11.根据权利要求6所述的处理装置,其特征在于:所述ASN.1报文面向对象的处理装置还包括脚本支持包、报文脚本操作模块,
所述脚本支持包用于运行脚本和对脚本扩展支持;
所述报文脚本操作模块利用脚本支持包和公共操作模块,对脚本增加ASN.1报文操作功能,用于修改AsnTreeObject树链表的方式修改、创建和编辑ASN.1报文。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101611811A CN101202739A (zh) | 2006-12-11 | 2006-12-11 | 一种asn.1报文面向对象的处理装置 |
EP07845839.5A EP2124419B1 (en) | 2006-12-11 | 2007-12-06 | An object oriented management device for asn.1 message |
PT78458395T PT2124419E (pt) | 2006-12-11 | 2007-12-06 | Um dispositivo de gestão orientado a objetos para mensagem asn.1 |
US12/518,125 US8667506B2 (en) | 2006-12-11 | 2007-12-06 | Object oriented management device for ASN.1 message |
PCT/CN2007/003479 WO2008071070A1 (en) | 2006-12-11 | 2007-12-06 | An object oriented management device for asn.1 message |
ES07845839.5T ES2559680T3 (es) | 2006-12-11 | 2007-12-06 | Dispositivo de gestión orientado a objetos para mensaje ASN.1 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101611811A CN101202739A (zh) | 2006-12-11 | 2006-12-11 | 一种asn.1报文面向对象的处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101202739A true CN101202739A (zh) | 2008-06-18 |
Family
ID=39511246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101611811A Withdrawn CN101202739A (zh) | 2006-12-11 | 2006-12-11 | 一种asn.1报文面向对象的处理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8667506B2 (zh) |
EP (1) | EP2124419B1 (zh) |
CN (1) | CN101202739A (zh) |
ES (1) | ES2559680T3 (zh) |
PT (1) | PT2124419E (zh) |
WO (1) | WO2008071070A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314371A (zh) * | 2011-09-07 | 2012-01-11 | 中兴通讯股份有限公司 | 基于可扩展标记语言的编码方法、解码方法及编解码装置 |
CN103036877A (zh) * | 2012-12-10 | 2013-04-10 | 北京中创信测科技股份有限公司 | 一种基于tlv格式协议的编解码代码生成装置及方法 |
CN103246671A (zh) * | 2012-02-09 | 2013-08-14 | 中兴通讯股份有限公司 | 抽象语法标记文件的处理方法及装置 |
CN103944914A (zh) * | 2014-04-28 | 2014-07-23 | 南京熊猫电子股份有限公司 | 卫星通信系统中csn.1协议处理器的实现方法 |
CN105323103A (zh) * | 2014-08-01 | 2016-02-10 | 中兴通讯股份有限公司 | 网络运维系统及其兼容网管系统报文变化的方法 |
CN109656831A (zh) * | 2018-12-26 | 2019-04-19 | 北京物芯科技有限责任公司 | 测试报文集中化生成方法、装置、设备和存储介质 |
CN113742294A (zh) * | 2021-08-23 | 2021-12-03 | 宜通世纪科技股份有限公司 | 一种asn.1-per信令消息解码方法、系统、装置及介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3257235B1 (en) * | 2015-02-10 | 2020-05-13 | Telefonaktiebolaget LM Ericsson (publ) | A method and apparatus for data mediation |
CN106909353B (zh) * | 2015-12-22 | 2019-12-13 | 阿里巴巴集团控股有限公司 | 应用程序的运行方法和装置 |
US10860338B2 (en) * | 2018-07-18 | 2020-12-08 | Oracle International Corporation | Type-constrained operations for plug-in types |
CN114153463B (zh) * | 2022-02-09 | 2022-04-12 | 厚普智慧物联科技有限公司 | 基于脚本编译器的管理系统业务功能创建方法及系统 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI946209A0 (fi) * | 1994-12-30 | 1994-12-30 | Nokia Telecommunications Oy | Foerfarande foer jaemfoerande av attributvaerden hos kontrollerbara objektuttryck i ett naetelement |
US5983019A (en) * | 1996-03-18 | 1999-11-09 | Tandem Computers Incorporated | Method and system for providing interpretive access to an object system |
DE59604242D1 (de) * | 1996-08-20 | 2000-02-24 | Alcatel Sa | Verfahren zur Unterstützung der Adress-Interaktion zwischen einer ersten und einer zweiten Einheit |
ES2142564T3 (es) * | 1996-08-20 | 2000-04-16 | Cit Alcatel | Procedimiento para administrar la especificacion de objetos. |
EP0873026B1 (en) * | 1997-04-14 | 2005-01-12 | Alcatel | Method for providing a service for users of a telecommunication network |
US6208345B1 (en) * | 1998-04-15 | 2001-03-27 | Adc Telecommunications, Inc. | Visual data integration system and method |
US6363421B2 (en) * | 1998-05-31 | 2002-03-26 | Lucent Technologies, Inc. | Method for computer internet remote management of a telecommunication network element |
US6813770B1 (en) * | 2000-04-21 | 2004-11-02 | Sun Microsystems, Inc. | Abstract syntax notation to interface definition language converter framework for network management |
US6915324B1 (en) * | 2000-04-21 | 2005-07-05 | Sun Microsystems, Inc. | Generic and dynamic mapping of abstract syntax notation (ASN1) to and from interface definition language for network management |
US7478403B1 (en) * | 2000-04-21 | 2009-01-13 | Sun Microsystems, Inc. | Secure access to managed network objects using a configurable platform-independent gateway providing individual object-level access control |
US7783720B1 (en) * | 2000-04-21 | 2010-08-24 | Oracle America, Inc. | CORBA metadata gateway to telecommunications management network |
DE10033812A1 (de) * | 2000-07-12 | 2002-01-24 | Alcatel Sa | Verfahren zum Erzeugen von Informationsmodellen |
FI20002720A (fi) * | 2000-12-12 | 2002-06-13 | Nokia Corp | Menetelmä konversioiden suorittamiseksi |
US20030009543A1 (en) * | 2001-04-30 | 2003-01-09 | Ankur Gupta | Network management system and computer-based methods for network management |
GB2384879A (en) * | 2002-02-01 | 2003-08-06 | Sony Uk Ltd | Method for providing binary digital TV data from a structured ata format |
US20040006608A1 (en) * | 2002-07-08 | 2004-01-08 | Convergys Cmg Utah | Flexible network element interface |
CN1322709C (zh) | 2003-01-28 | 2007-06-20 | 华为技术有限公司 | 一种实现网络管理系统中配置数据组织与集中管理的方法 |
WO2005008440A2 (en) * | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | System and method for common storage object model |
US7647415B1 (en) * | 2004-02-25 | 2010-01-12 | Sun Microsystems, Inc. | Dynamic web services stack |
-
2006
- 2006-12-11 CN CNA2006101611811A patent/CN101202739A/zh not_active Withdrawn
-
2007
- 2007-12-06 ES ES07845839.5T patent/ES2559680T3/es active Active
- 2007-12-06 EP EP07845839.5A patent/EP2124419B1/en active Active
- 2007-12-06 PT PT78458395T patent/PT2124419E/pt unknown
- 2007-12-06 US US12/518,125 patent/US8667506B2/en active Active
- 2007-12-06 WO PCT/CN2007/003479 patent/WO2008071070A1/zh active Application Filing
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314371A (zh) * | 2011-09-07 | 2012-01-11 | 中兴通讯股份有限公司 | 基于可扩展标记语言的编码方法、解码方法及编解码装置 |
CN102314371B (zh) * | 2011-09-07 | 2017-04-12 | 中兴通讯股份有限公司 | 基于可扩展标记语言的编码方法、解码方法及编解码装置 |
CN103246671A (zh) * | 2012-02-09 | 2013-08-14 | 中兴通讯股份有限公司 | 抽象语法标记文件的处理方法及装置 |
CN103036877A (zh) * | 2012-12-10 | 2013-04-10 | 北京中创信测科技股份有限公司 | 一种基于tlv格式协议的编解码代码生成装置及方法 |
CN103944914A (zh) * | 2014-04-28 | 2014-07-23 | 南京熊猫电子股份有限公司 | 卫星通信系统中csn.1协议处理器的实现方法 |
CN103944914B (zh) * | 2014-04-28 | 2018-01-16 | 南京熊猫电子股份有限公司 | 卫星通信系统中csn.1协议处理器的实现方法 |
CN105323103A (zh) * | 2014-08-01 | 2016-02-10 | 中兴通讯股份有限公司 | 网络运维系统及其兼容网管系统报文变化的方法 |
CN109656831A (zh) * | 2018-12-26 | 2019-04-19 | 北京物芯科技有限责任公司 | 测试报文集中化生成方法、装置、设备和存储介质 |
CN113742294A (zh) * | 2021-08-23 | 2021-12-03 | 宜通世纪科技股份有限公司 | 一种asn.1-per信令消息解码方法、系统、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
EP2124419B1 (en) | 2015-10-21 |
EP2124419A1 (en) | 2009-11-25 |
US20100211930A1 (en) | 2010-08-19 |
ES2559680T3 (es) | 2016-02-15 |
US8667506B2 (en) | 2014-03-04 |
EP2124419A4 (en) | 2014-12-17 |
WO2008071070A1 (en) | 2008-06-19 |
PT2124419E (pt) | 2016-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101197818A (zh) | 一种asn.1报文面向对象的处理方法 | |
CN101202739A (zh) | 一种asn.1报文面向对象的处理装置 | |
JP3272014B2 (ja) | 階層構造データ処理情報を含むデータ処理辞書を作成する方法及び装置 | |
CN101840334B (zh) | 一种软件构件服务化封装方法 | |
US7020666B2 (en) | System and method for unknown type serialization | |
US6971093B1 (en) | Techniques for maintaining compatibility of a software core module and an interacting module | |
CN101222365B (zh) | 一种类c结构接口报文处理方法 | |
US7305657B2 (en) | Web server having function of Java servlet, method for updating Java program and computer program | |
JP2005182835A (ja) | 異種のデータソースのためのデータサーバを生成する方法 | |
CN101316241B (zh) | 用于通信数据的tlv格式处理方法 | |
US7093264B2 (en) | Method and apparatus for assembling Enterprise JavaBeans components | |
EP2618268A1 (en) | Method and device for data storage | |
US20080117808A1 (en) | Automatic configuration of network elements based on service contract definitions | |
CN115796190A (zh) | 基于vue和webpack的前端国际化多语言转换方法及系统 | |
CN101794223B (zh) | Wade服务消息架构的设计方法 | |
CN101355448B (zh) | 上载比较方法和装置 | |
US7912984B2 (en) | System and method for generating a wireless application from a web service definition | |
JP2004252973A (ja) | 客体指向プログラムが記録された貯蔵媒体 | |
US6839749B1 (en) | Network representation and manipulation thereof | |
US20100269104A1 (en) | System and Methods for Generic Data Marshalling without Object Modification | |
KR20050031954A (ko) | 데이터 객체 전송시스템 및 수신방법 | |
JPH1049408A (ja) | データスキーマ変換方法及び装置 | |
CN116800866A (zh) | 一种基于流机制解析xml支持平台多格式报文的方法及系统 | |
Lee | Translation of GDMO/ASN. 1 to Java objects for network management | |
Hall | Generation of Restful API Proxy Service from Soap Service |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C04 | Withdrawal of patent application after publication (patent law 2001) | ||
WW01 | Invention patent application withdrawn after publication |