工作流程 - 使用 ASN.1 进行开发

开发 ASN.1 应用程序是一个 4 个阶段的过程:

  • 第 1 阶段:指定 — 在 ASN.1 中设计您的协议
  • 第 2 阶段:翻译——将您的 ASN.1 规范编译成您的编程语言
  • 第 3 阶段:构建——编写您的应用程序
  • 第 4 阶段:运行 — 使用您的应用程序

第 1 阶段:指定 — 在 ASN.1 中设计您的协议

在第一阶段,应用程序设计人员决定他们的最终应用程序需要发送/交换的消息类型。 根据消息要求,起草新的 ASN.1 规范或使用现有规范。

在起草新的 ASN.1 规范时,确定编码规则(例如 BER、DER、PER 和 OER 很有帮助 ) 将用于发送消息。 这样做将使最终应用程序能够充分利用各种编码规则中支持的效率(例如,在使用 PER 时导致更小的编码的 ASN.1 子类型约束)。

ASN.1 规范的起草者还应牢记未来可能的要求(例如消息可扩展性和使用的编码规则的变化)。

例子:

以下抽象语法旨在在电机和远程操作员之间传递简单的控制和状态消息。 机器有两种状态:开和关。 操作员可以向机器发出开启指令、关闭指令或无动作指令。

ASN.1 规范:

-- Machine Control Abstract Syntax
MCAS DEFINITIONS::=
BEGIN
ControlPacket ::= SEQUENCE {
currentStatus INTEGER {off(0), on(1)},
nextAction    INTEGER {noAction(0), turnOn(1), turnOff(2)}
}
END

大多数 ASN.1 规范比我们的简单示例要复杂得多。 此类规范在起草时通常包含需要纠正的印刷和语法错误。 在冗长而复杂的 ASN.1 规范中手动查找和纠正此类错误可能是一项艰巨的任务。 OSS Nokalva 提供的编译器和 ASN.1 Studio IDE 等优质 ASN.1 工具可以查明这些错误,从而快速解决这些错误。


第 2 阶段:翻译——将您的 ASN.1 规范编译成您的编程语言

一旦修复了所有规范错误,就可以将 ASN.1 规范输入到 ASN.1 编译器以生成数据结构和相关代码,以包含在您的应用程序中。 生成数据结构和代码的目标语言根据所使用的 ASN.1 编译器的功能而有所不同。 例如,OSS Nokalva 提供使用 C、C++、Java 或 C# 作为目标语言的 ASN.1 编译器。


第 3 阶段:构建——编写您的应用程序

在您的应用程序代码中,您可以使用 ASN.1 编译器生成的数据结构,就像使用您自己的数据结构一样。 此外,您还可以使用运行时库函数(例如 OSS 提供的 ossEncode() 和 ossDecode() 函数)对应用程序数据进行编码、解码和执行各种其他功能。 您会发现使用全功能运行时库(例如 OSS Nokalva 提供的那些)既可以减少开发应用程序所需的时间,又可以提高其最终的可靠性和正确性。

OSS ASN.1 工具等辅助工具允许您为各种平台和嵌入式系统开发 ASN.1 应用程序。 应用程序开发变得更加容易,您可以提供的解决方案范围也得到了扩展。


第 4 阶段:运行 - 使用您的应用程序

一旦您的应用程序经过调试和测试,您就可以使用它来发送和接收 ASN.1 编码的消息。 下图说明了第一阶段示例中提到的嵌入式芯片控制器和远程计算机操作员应用程序之间的消息交换。

PC-embedded-comm

有关 OSS ASN.1 工具如何工作的更详细示例,请参阅如何使用 OSS ASN.1 Tools for C 创建应用程序的示例。