ASN1C ASN.1 Compiler

      Objective System的ASN1C编译器把ASN.1源代码和/或XML定义源文件(XSD)迅速可靠地翻译成等价的一种计算机语言(如C, C++, C#或Java)源代码。开发人员可以使用该代码翻译结构/对象到使用任何编码规则(BER, CER, DER, PER 或 XER).的ASN.1消息,或从 ASN.1消息到结构/对象。

    编译器产生的源代码由类型定义和编码/解码函数(或方法)组成。为使用ASN.1内包含的所有消息定义,提供了完整的应用程序接口(API)。

     除了编译器,一个通用的运行编/解码函数库也是该软件的一部分。此函数库包含了编码和解码ASN.1原语(如布尔型,整型)的子程序。ASN1C编译器使用了一系列对这些函数的调用来实现更复杂消息类型的编码和解码。

     获取并运行一个编码/解码器,一名程序员所有要做的事情是:
1. 运行ASN1C生成给定的ASN.1或者XSD定义, 
2. 开发一个应用,调用在生成的代码中的功能或方法,
3. 编译/连接该应用,生成代码和运行库。
为能满足第二和第三项,编译器也有应能力生成读写例程,如同创建所有代码的生成文件一样。

ASN.1 到 C 或 C++ 编译器

ASN1C能对特定的ASN.1规范生成C或C++源代码。C和C++版本都使用一个由一组低层编码和解码基本类型的简单C函数组成的通用运行基本运行库。代码生成主要是C代码并且为所有定义的ASN.1 数据类型提供一套完善的C代码API函数。

C++代码生成添加了一组类“封装”,隐藏了大部分调用编/解码函数的细节。这些封装提供了专门针对C++的附加服务,包括通过构造器实现生成类型的变量自动初始化,通过重载操作符进行数据更简单的分配和测试以及通过事件处理机制实现虚回调。

ASN.1 到 Java 或 C# 编译器

ASN1C编译器同样也能生成Java或C#代码。生成的Java代码由一系列Java源文件——每个在ASN.1规范中内定义的production(类型)生成一个。每个Java文件(至少)包括下列内容:
 

  1. 一个公共成员数据变量(或几个变量),用来保存生成类型的数据;
  2. 一个构造器(或几个),用来初始化变量;
  3. 一个编码方法;
  4. 一个解码方法;
  5. 一个打印方法,用来打印指定的输出流的对象内容。

同样也有一个Java运行库,由一系列编码和解码简单ASN.1类型的类组成。例如,ASN1 整型类编码和解码ASN.1整型变量。编译器将扩展这些基本类以形成从基本类型直接得到高级类型,或组合一系列低层对象以形成结构类型(如SEQUENCE)。

生成C#代码非常类似于上面描述的Java代码生成。为每个在ASN.1规范中定义的production 生成一个单独的C#类,包含编码和解码一个使用任何ASN.1编码规则类实例的构造器和方法。

支持Java MicroEdition (J2ME) 或者 C# compact edition库的Java 或者 C# 集成开发工具已经可用了。

首页    Objective    ASN1C ASN.1 Compiler
11