论文部分内容阅读
随着网络通信技术的飞速发展,ASN.1(Abstract Syntax Notation One)语言在各个领域有着广泛的应用。它是一种用来描述结构化信息的标记语言,适合用来描述复杂的协议,是目前电信、多媒体信息传输、数据加密等领域描述协议的主要手段。在实际应用中由于它是一种在高度抽象的层次上来表示数据结构信息的高级抽象描述语言,因此需要翻译程序将其转化为相应的高级编程语言。 在3GPP(3rd Generation Partnership Project)的层三消息体系中,一般使用ASN.1语言来描述层三消息,再使用定义在ITU-T(ITU-T for ITU Telecommunication Standardization Sector)建议X.691中的各种算法来将ASN.1描述转化为传输编码,这样将消息内容的定义与传输语法相分离,并有利于消息的进一步扩充。通常整个编解码过程都用一个模块来完成,按照传统的ASN.1应用开发流程,需要首先开发出专门的编译器,将描述文件转换成能够在指定平台上运行的ASN.1源代码程序,再调用ASN.1编解码程序库完成传输信息的编解码。每当ASN.1描述文件出现升级或者更换时,就需要重新由编译器生成源代码程序,并放到指定平台上重新编译,而且消息的收发端必须同时更新源代码程序才能保证编解码的正常工作。这样,系统代码量不断增加,影响系统运行效率,而且维护成本高,不易扩展。 针对传统应用开发的不足,本文改进并实现了一种新的ASN.1编解码模块的模型,将ASN.1描述文件转换成XML(Extensible Markup Language)描述文件供调用,相当于使用XML来描述协议中PDU(Protocol Data Unit)的结构。XML与平台和语言无关,因此使用不同平台、不同编程语言的各个通信端可以共享一份XML描述。编解码的过程统一交给PDU数据处理器完成,PDU数据处理器可以解析XML描述文件,并在其中存取数据,通过遍历XML数据结构即可完成相应的编码和解码工作。由于PDU数据处理器和XML描述文件是相互独立的,而且在一个指定的运行平台上,PDU数据处理器也是固定的,所以出现ASN.1描述文件更新时,只需要生成新的XML文件,摈弃了ASN.1源代码,不需要重新编译任何程序代码,便于维护,易于扩展。