CN102281152A - 分布式通信系统、实现方法及远程api的编组和解组方法 - Google Patents
分布式通信系统、实现方法及远程api的编组和解组方法 Download PDFInfo
- Publication number
- CN102281152A CN102281152A CN201110151180XA CN201110151180A CN102281152A CN 102281152 A CN102281152 A CN 102281152A CN 201110151180X A CN201110151180X A CN 201110151180XA CN 201110151180 A CN201110151180 A CN 201110151180A CN 102281152 A CN102281152 A CN 102281152A
- Authority
- CN
- China
- Prior art keywords
- frame
- district
- marshalling
- command
- communication
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种分布式通信系统、实现方法及远程API的编组和解组方法,其中远程API的编组和解组方法中,分别为每个通信命令建立相对应的通用编组描述模板和通用解组描述模板,将常见数据类型进行统一规格化,按模板对功能的输入和输出数据类型进行规格化,通信命令帧和通信命令响应帧分别在通信帧缓冲区内进行编组和解组。实现远程API的方法中,通过统一封装客户端及服务端组包和解包功能,提供与函数调用相近的应用接口,从而方便实现嵌入式系统分布式处理功能,在保证高效实时性的前提下使系统模块低耦合、易扩展,也为测试诊断提供了更多的入口。
Description
技术领域
本发明涉及分布式网络管理系统,具体涉及分布式通信系统、实现方法及远程API的编组和解组方法。
背景技术
如图1所示,分布式通信系统由控制系统S02和若干业务模块B01-B0n组成的业务系统S01形成,二者通过网络互连,网管S03通过SNMP协议(简单网络管理协议)经SNMP接口对控制系统S02进行管理,其中控制系统S02上设有网管代理C02、命令行服务模块C03和管理控制模块C01,网管代理C02用于支持网管S03,命令行服务模块C03用于提供命令行界面管理,管理模块C01则提供业务配置API来实现网管代理和命令行的功能,同时通过与业务模块B01-B0n的交互实现设备配置管理功能,业务模块提供设备配置API,其中设备配置API和业务配置API都属于远程API,主要特点是封装了网络和进程间通信机制。
无源光网络无源光网络(Passive Optical Network,简称PON)系统即是一种分布式系统,如图2所示,该系统可以划分为四个层面:应用层、管理层、网络层和业务层,其中应用层包括图形网管、命令行界面和WEB浏览器;管理层负责管理功能的实现,进行远程集中管理,包括应用支撑、业务配置和状态管理以及ESW(以太网管理)API、HPI(硬件平台接口)API和BIZ(业 务管理)API;网络层实现网络通信功能;业务层负责实现业务功能,进行本地管理。业务模块对应于处理各种业务功能的板卡,管理模块对应于系统控制卡或主控卡,为支持网管系统还提供了应用支撑模块,业务模块负责业务功能的实现及本地管理,管理模块负责管理功能的实现及远程集中管理,业务板卡构成业务平面,管理卡构成管理平面。
具体到PON系统实例,业务层主要包括硬件平台接口(Hardware PlatformInterface,简称HPI)、以太网交换(Ethernet Switch,简称ESW)和其它业务管理模块(BIZ),各模块以进程的方式运行,各层要向上层以库文件的形态提供应用程序接口API。管理层通过组合应用HPI、ESW、BIZ等功能库,为应用支撑层提供配置管理功能库。业务模块则分别包括功能接口机构和功能实现机构,以API的共享库方式提供,这种规范方式对业务模块的程序化自测、版本管理和升级维护提供保障。从API的实现方式上看,功能接口机构和功能实现机构可在同一进程空间内构成程序库,支持应用程序与该API库联编,称为本地API,如图3所示。将API接口机构与功能实现机构分开在不同的进程内,通过BSD Socket实现进程间通信,应用程序通过与API接口机构进行程序联编,客户端与包含功能实现的服务端进行进程通信,这样,该API接口机构可看成是远程API,如图4所示,其显著特点是功能接口实体与功能实现实体分属于管理模块和业务模块,并通过网络通信完成其功能。
具备远程通信机制的API具有良好的模块化和独立性,可部署到不同的板卡和操作系统上,供不同层次的进程调用,而相应的服务端的实现者可以不同,例如,ESW API在业务板卡上实现了基础的交换功能接口,通过对交 换芯片的控制完成以太网组网和控制功能,基于交换芯片的驱动接口工作;ESW API在主控板卡上实现的功能,是针对交换模型的配置管理功能,并基于数据库工作。HPI、ESW、BIZ模块的API部署到业务层和管理层实体上,分别实现本地管理和远程集中管理,管理层实体实现集中式配置管理,并为应用支撑模块提供配置管理API。管理层上的配置管理API是基于HPI API、ESW API和BIZ API实现的,由此可供配置管理模块和应用支撑模块使用,如果配置管理模块和应用支撑模块处于不同进程空间运行,就要求配置管理API是支持进程间通信的远程API。远程API的实现部分包括通信传输层、数据帧头、数据帧净荷:通信传输层在bsd socket API基础上编程实现,进程间通信采用TCP/IP或UDP/工P协议;数据帧头包括命令编号、净荷尺寸等;数据帧净荷包括命令输入参数或输出参数,响应帧帧头还包含返回码(错误标识),功能接口机构的接口方式包括应用程序接口API、socket通信接口。
用常规C语言编程实现接口功能的组包和解包通常是较为繁琐的过程而且存在严重的问题:若不能对输入和返回数据项进行统一规格化,则会随API功能集合规模增大编程工作量和测试/运维工作量,投入运营后还会有升级和版本管理的问题,因此不利于产品成本控制。
发明内容
本发明所要解决的技术问题是用常规C语言编程实现API接口功能组包和解包较为繁琐,并且输入和返回数据不统一,编程和测试/运维工作量大的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种分布式通 信系统中远程API的编组和解组方法,分别为每个通信命令建立相对应的通用编组描述模板和通用解组描述模板,所述通用编组描述模板或通用解组描述模板分别包括若干字段,所述字段分别用于存放命令编码以及输入参数表或输出参数表中的每个参数的类型、参数值占用的字节数以及在通信帧缓冲区帧体内的相对存储位置,所述命令编码与远程API的函数名以及通信命令一一对应;通信命令帧和通信命令响应帧分别在通信帧缓冲区内进行编组和解组,所述通信帧缓冲区包括由若干存储单元组成的帧头区和帧体区,分别与所述通信命令帧和通信命令响应帧的帧头和帧体相对应,所述帧头区用于存放命令编码和帧体区所占用的字节数,通信命令响应帧的帧头区还存放命令返回码,所述帧体区用于存放每一个输入参数值或输出参数值;编组时通过调用通用编组描述模板,依次将与远程API函数名对应的命令编码以及各输入参数或输出参数在所述帧体区所占用的字节数装载在相应的所述帧头区内,通信命令响应帧还要将命令返回码装载在所述帧头区内,并根据各输入参数或输出参数在通信帧缓冲区的帧体内的相对存储位置将各个输入参数值或输出参数值分别装载在相应的帧体区内,然后将所述帧头区和所述帧体区合并为通信命令帧或通信命令响应帧;解组时通过调用通用解组描述模板,分别从通信帧缓冲区相应的所述帧头区内取出命令编码,通信命令响应帧还要取出命令返回码,并根据各输入参数值或输出参数值在通信帧缓冲区的帧体区内的相对存储位置,从相应的所述帧体区内取出相应的输入参数值或输出参数值。
在上述分布式通信系统中远程API的编组和解组方法中,所述通用编组或解组描述模板中还包括用于存放序列型参数的个数的字段,所述帧体区还 设有还设有用于存放相应的序列型参数的个数的存储单元。
在上述分布式通信系统中远程API的编组和解组方法中,编组过程中,任一输入参数或输出参数的数据长度超出相应的所述存储单元的数据长度时,则发出错误提示,并将错误代码作为命令返回码填充到相应通信命令响应帧的所述帧头区内,如果通信命令响应帧中含有错误代码,则忽略此通信命令帧。
本发明还提供了一种采用上述的分布式通信系统中远程API的编组和解组方法实现远程API的方法,包括以下步骤:
A10,客户端和服务端均设有一个所述通信帧缓冲区,客户端调用远程API实现的功能请求命令,并根据通用编组描述模板对该功能请求命令在客户端的通信帧缓冲区内进行编组形成通信命令帧;
A20,将步骤A10生成的所述通信命令帧通过网络发送到服务端并等待回应;
A30,服务端解析所述通信命令帧,并分别调用通用解组描述模板在服务端的通信帧缓冲区内进行解组,从而获得功能请求命令及各输入参数,再使用输入参数执行相应命令的功能代码;
A40,服务端完成处理后得到相应的输出参数值,以及代表处理结果的命令返回码;
A50,服务端将输出参数值及命令返回码在服务端通信帧缓冲区内进行编组形成通信命令响应帧;
A60,所述通信命令响应帧由服务端通过网络发回客户端;
A70,客户端调用通用解组描述模板在客户端的通信帧缓冲区内进行解组,获得此功能请求命令的命令返回码和各输出参数值。
本发明还提供了一种分布式通信系统,包括控制系统和若干业务模块,所述业务模块分别通过网络与所述控制系统互连,网管通过SNMP协议向所述控制系统发送命令,由所述控制系统根据处理逻辑向各所述业务模块发出通信命令来完成功能实现,所述控制系统中设有若干通用编组和解组描述模板,分别与远程API功能集中的远程API一一对应,所述通用编组或解组描述模板分别包括若干字段,分别用于存放命令编码以及输入参数表或输出参数表中的每个参数的类型、参数值占用的字节数以及在通信帧缓冲区的帧体内的相对存储位置,所述命令编码与远程API的函数名以及通信命令一一对应;所述业务模块和所述控制系统上分别设有通信帧缓冲区、编组单元和解组单元;所述通信帧缓冲区包括由若干存储单元组成的帧头区和帧体区,分别与所述通信命令帧和通信命令响应帧的帧头和帧体相对应,所述帧头区用于存放命令编码和帧体区所占用的字节数,通信命令响应帧的帧头区还存放命令返回码,所述帧体区用于存放每一个输入参数值或每一个输出参数;所述编组单元通过调用通用编组描述模板,依次将与远程API函数名对应的命令编码以及各输入参数或输出参数在所述帧体区所占用的字节数装载在相应的所述帧头区内,通信命令响应帧还要将命令返回码装载在所述帧头区内,并根据各输入参数或输出参数在通信帧缓冲区的帧体内的相对存储位置将各个输入参数值或输出参数值分别装载在相应的帧体区内,然后将所述帧头区和所述帧体区中合并为通信命令帧或通信命令响应帧;所述解组单元调用通用解 组描述模板,分别从通信帧缓冲区的帧头区内取出命令编码,通信命令响应帧还要取出命令返回码,并根据各输入参数值或输出参数值在通信帧缓冲区的帧体内的相对存储位置,从相应的帧体区内取出相应的输入或输出参数值,对于通信命令帧,将命令编码和输入参数值送相应的处理模块执行,对于通信命令响应帧,将输出参数装配在与命令编码对应的远程API的返回结果中。
在上述分布式通信系统中,所述编组单元在编组过程中,如果任一输入参数或输出参数的数据长度超出相应的所述存储单元的数据长度时,则发出错误提示,并将错误代码作为命令返回码填充到相应通信命令响应帧的所述帧头区内,如果通信命令响应帧中含有错误代码,则忽略此通信命令帧。
本发明,分布式通信系统中远程API的编组和解组方法中,分别为每个通信命令建立相对应的通用编组描述模板和通用解组描述模板,将常见数据类型进行统一规格化,按模板对功能的输入和输出数据类型进行规格化,通信命令帧和通信命令响应帧分别在通信帧缓冲区内进行编组和解组。实现远程API的方法中,通过统一封装客户端及服务端组包和解包功能,提供与函数调用相近的应用接口,从而方便实现嵌入式系统分布式处理功能,在保证高效实时性的前提下使系统模块低耦合、易扩展,也为测试诊断提供了更多的入口。
附图说明
图1为分布式通信系统结构示意图;
图2为无源光网络PON系统分层图结构示意图;
图3为本地API原理图;
图4为远程API原理图;
图5为本发明中远程API、通信帧缓冲区和编组、解组模板之间的对应关系图;
图6为分布式通信系统远程API的实现方法流程图;
图7为远程API、通用编组/解组描述模板、通信命令帧和通信命令响应帧的关系图。
具体实施方式
本发明提供了一种分布式通信系统中远程API的编组和解组方法,所述的编组是指把远程API的常规输入或输出参数转变成序列化规格数据;所述的解组是指把序列化规格数据转变成远程API的常规输入或输出参数。所述的常规输入或输出参数是指由C语言基本数据类型定义或由基本数据类型组合的数据类型定义的数据,所述序列化规格数据是指适用于通信的统一规格的序列化数据。
为了便于理解本发明,下面首先结合图5对分布式通信系统中的远程API、通用编组/解组描述模板和通信命令帧/通信命令响应帧之间的关系加以说明。通信命令帧和通信命令响应帧格式基本相同,分别用于系统服务端发往客户端和客户端发往系统服务端,唯一的区别在于通信命令响应帧的帧头部分包含有命令返回码,用于标识编组或解组成功或失败的原因。
远程API可按如下形式表述:
返回码类型函数名(类型1参数1,类型2参数2,…,类型m参数n)
其中:
远程API的函数名与通信命令一一对应,由命令编码标识(命令ID);
返回码类型是整型,标识编组或解组成功或失败的原因;
参数表分为输入参数表和输出参数表两种,分别在通信帧缓冲区内做编组或解组处理,参数表中的输入参数或输出参数有0到多个,可看成0到多个参数形成参数表;类型指数据类型,有多种。
通信命令帧和通信命令响应帧均分别由帧头和净荷两部分组成,帧头部分包括命令编码和净荷字节数,命令编码对应远程API的函数名,净荷部分包括多个参数值,分别与远程API的输入参数值或输出参数值相对应。通信命令响应帧的帧头部分还包括命令返回码(标识正常或错误原因代码),与远程API的返回码类型相对应。
通用编组描述模板或通用解组描述模板分别包括若干字段,这些字段分别用于存放命令编码、命令返回码以及输入参数表或输出参数表中的每个参数的类型、参数值占用的字节数以及在通信帧缓冲区的帧体内的相对存储位置,其中命令编码与远程API的函数名以及通信命令一一对应。
通信帧缓冲区是一个连续分布的内存区,尺寸字节数受通信协议限制,因此要求远程API所承载的信息量有相应的限制;通信帧缓冲区包括帧头区和帧体区两部分,帧头区中的若干存储单元分别用于存放与远程API的函数名(通信命令)对应的命令编码、帧体区内参数值所占用的总字节数,通信命令响应帧的帧头区还存放命令返回码,(用于标识编组或解组成功或失败原因的错误代码),帧体区中的若干存储单元分别用于存放输入参数表或输出参数表中的各参数值,每个参数值所占的字节数以及在帧体区内的相对偏移字 节数都由通用编、解组描述模板规定。
通过通用编组和解组描述模板完成远程API与通信命令帧之间的相互转换,每个远程API都对应一套通用编组和解组描述模板,由命令编码来标识,为实现面向远程API的编程提供基础。
本发明提供的分布式通信系统远程API的编组和解组方法,包括以下步骤:
首先根据远程API的功能集分别建立与各通信命令对应的通用编组和解组描述模板。
每个远程API按与其函数名对应的命令编码调用相应的通用编组或解组描述模板在通信帧缓冲区内实现编组或解组,从而形成通信命令帧或通信命令响应帧。编组时通过调用通用编组描述模板,依次将与远程API函数名对应的命令编码以及各输入参数或输出参数在帧体区所占用的字节数装载在相应的所述帧头区内,将各个输入参数或输出参数分别根据其偏移字节数装载在通信帧缓冲区的帧体区内,然后将帧头区和帧体区合并为通信命令帧或通信命令响应帧,对于通信命令响应帧,还要将返回错误代码装载在通信命令响应帧的帧头部分。
解组时通过调用通用解组描述模板,分别从通信帧缓冲区相应的所述帧头区内取出命令编码和各输入参数值或输出参数值在通信帧缓冲区的帧体区内的偏移字节数,并根据上述偏移字节数,从相应的帧体区内取出相应的输入或输出参数值,通信命令响应帧还要取出命令返回码。对于通信命令帧,将命令编码和输入参数值送相应的处理模块执行,对于通信命令响应帧,将输出参数装配在与命令编码对应的远程API的返回结果中。编组过程中,任 一输入参数或输出参数的数据长度超出相应的帧体区的存储单元的数据长度时,则发出错误提示,并将错误代码作为命令返回码填充到相应的帧头区内,如果通信命令响应帧中含有错误代码,则忽略此通信命令帧。
对于序列型参数,通用编组或解组描述模板中标识序列型参数个数的最大值,而序列型参数的具体个数在通信帧体的相应值域中标明,非序列型参数值域则无需标明个数,默认为1个。
包含通信机制并以应用程序接口(简称API)出现的程序函数库称为远程API,一组函数构成的程序库可通过包含这组函数的原型(组函数)声明表示,一般来说都包括多个参数值(也可能无参数)和返回值,对于调用此函数的程序而言,参数可分成输入参数或输出参数,参数的数据类型可分成基本类型和复合类型,基本类型包括双节、四字节和八字节整型及浮点型,复合类型由基本类型通过序列和结构组合方式构成。函数的功能还决定参数的含义和参数之间的逻辑关系。调用远程API函数完成了数据通信过程,可看成将输入参数填写到通信交换数据块中,并在其中标示出特定的通信命令,然后将此数据块即通信命令帧传递到功能实现方,对方收到后从通信命令帧内查出命令编码,以此命令编码指示的逻辑对传来的参数进行处理,完成后按输出参数规格将结果填写到通信命令响应帧内,并将正确或错误的返回码填写到该通信命令响应帧的帧头规定区域,又将通信命令响应帧传递回调用者,由此完成通信过程。在以上过程中,API函数参数和返回码与通信命令帧或通信命令响应帧的对应关系成为远程API的核心处理部分。
通信命令的的编组/解组描述模板定制要求如下:
(1)、先要将通信命令和所需参数类型进行枚举定义,以便对应具体通 信命令和参数的实际类型。
(2)、参数长度:对序列型参数,可由成员参数类型的字节数乘以成员个数来定,参数为简单类型的都有默认的字节数,复合类型参数尺寸可通过简单类型的组合累计确定。
(3)、参数类型:包括远程API接口声明的数据结构和常规类型,可分为:基本类型、复合类型(序列)、结构和联合。简单类型包括单字节、双字节、四字节和八字节整型及浮点型,其中整型包括有符号和无符号情况。按C语言表述,复合类型包括含有序列、struct(结构)或union(联合)类型的情况,由简单类型组合而成。
(4)、相对存储位置:对于输入参数表或输出参数表,描述每个参数在帧体内的相对偏移字节数。
(5)、错误处理:帧头包含错误代码字段,先检测错误,若有错,则忽略该帧的净荷数据。
通过这样一个编组和解组的过程,在客户端与服务端分别进行编组或解组,从而形成一个统一的格式,借以完成API的调用。
通过规范系统软件模块的应用程序接口或API,有如下好处:
模块划分明晰,屏蔽内部细节;
便于实现分权分域;
规范单元测试;
实现版本管理;
方便维护和升级。
具备远程通信机制的API具备良好的模块化和独立性,可部署到不同板 卡和操作系统上,可供不同层次的进程调用,而相应的服务端的实现者可以是不同的,例如,ESW API在业务板卡上实现了基础的交换功能接口,通过对交换芯片的控制完成以太网组网和控制功能,基于交换芯片的驱动接口工作;ESW API在主控板卡上实现的功能,是针对交换模型的配置管理功能,并基于数据库工作。管理层和业务层支持远程API在程序代码上具有重用性,减少了开发的工作量和出错的机会。从应用需求上看,业务层远程API支持本地管理,而管理层远程API可为应用和表示层提供支持,而重用的程序代码也便于版本管理。
从现代程序设计的观点看,应用接口与功能实现是可以分离的,这有利于在系统设计初期,通过对主要程序模块制订较详细的应用接口,就可以尽早确定产品形态,方便后续计划和评估工作;由于功能接口可独立部署,可将同一套源代码生成的目标库部署到不同层上,与不同的功能实现部分组合,有利于高效协同构建应用系统,减轻软件文件映象的测试和维护工作量。
除了硬件、软件和系统整套部署方式外,将一组特定版本的模块组合成整套系统完成部署,对升级模块只需测试更新的功能及其兼容性,能够极大减轻测试验证的负担。
采用通用编组/解组的方法,为程序可测性带来了一定好处。可对这种轻量级的中间层通信模块建立典型的测试代码,专门测试特定API的通信过程和结果,复盖有代表性的参数和返回类型情况,作为独立的程序共享库,还可针对进程间通信、不同CPU构架的网络部件之间通信的情况进行测试,由此保证以此为基础的多个API程序模块的可用性和稳定性。
测试方法:
(1)基于人机界面,命令行CLI和图形界面GUI。
(2)程序自测测试接入点:业务模块提供本地管理界面;管理模块支持集中远程管理和系统管理程序自测要求各模块具备明确的对外接口或API,通过配置好测试流程,自动完成模块和系统功能的测试。
从程序测试角度看,可对此中间层模块建立典型的测试代码,专门测试特定API的通信过程和结果,复盖有代表性的参数和返回类型情况,作为独立的程序共享库,还可针对进程间通信、不同CPU构架的网络部件之间通信的情况进行测试,由此保证以此为基础的多个API程序模块的可用性和稳定性。
借助轻量级通用编组/解组的通信模块,可规范并一定程度简化软件模块建立远程API调用库的工作,通过统一封装客户端及服务端组包和解包功能,提供与函数调用相近的应用接口,从而方便实现嵌入式系统分布式处理功能,在保证高效实时性的前提下使系统模块低耦合、易扩展,也为测试诊断提供了更多的入口。
本发明还提供了一种采用上述编组和解组方法实现分布式通信系统远程API的方法,如图6、图7所示,包括以下步骤:
A10,客户端和服务端均设有一个通信帧缓冲区,客户端将一条通过远程API实现的功能请求命令(通信命令)在通信帧缓冲区内进行编组形成通信命令帧,即调用通用编组描述模板将功能请求命令及与该命令相对应的输入参数分别写入通信帧缓冲区内的帧头区和帧体区内形成通信命令帧;
A20,将步骤A10生成的通信命令帧通过网络发送到服务端并等待回应;
A30,服务端解析所述通信命令帧,并分别调用通用解组描述模板在服务端的通信帧缓冲区内进行解组,从而获得功能请求命令及各输入参数,再使用输入参数执行相应命令的功能代码;
A40,服务端完成处理后得到相应的输出参数值,以及代表处理结果的命令返回码(正确时为0,其它代表各种错误情况);
A50,服务端将功能请求命令的输出参数值及命令返回码在服务端的通信帧缓冲区内进行编组形成通信命令响应帧,命令返回码填写到通信命令响应帧的帧头部分;即调用通用编组描述模板将功能请求命令编码及与该命令编码相对应的输出参数分别写入通信帧缓冲区的帧头区和帧体区内,组合成通信命令响应帧;
A60,由服务端通过网络将包含此功能请求命令执行结果的通信命令响应帧发回客户端;
A70,客户端调用通用解组描述模板在客户端的通信帧缓冲区内对通信命令响应帧解组,获得此功能请求命令的命令返回码和各输出参数值。
在上述方法中,如果编组过程中,任一输入参数或输出参数的数据长度超出相应的帧体区的存储单元的数据长度时,则发出错误提示,并将错误代码作为命令返回码填充到相应的帧头区内,如果通信命令响应帧中含有错误代码,则忽略此通信命令帧,从而避免产生误操作。
对于网络远程通信,通信编程需要对多字节基本数据类型(双字节、四字节和八字节整型及浮点型)进行处理,对于通信帧的内容,分别经过网络传输和主机侧解析,由于存在主机字节序与网络字节序的不同理解,为避免出现歧义,通常可选用网络序与主机序之间的数值转换,或主机处理器CPU 大小端判断与转换的编程方案。CPU的小端(Little-endian)模式,对操作数的存放方式是从低字节到高字节;CPU的大端(Big-endian)模式,对操作数的存放方式是从高字节到低字节。
网络通信包括进程通信,在传输过程中都涉及程序数据结构到通信帧缓存的编组/解组过程,进程间通信采用TCP/IP或UDP/IP协议,在bsd socketAPI基础上编程实现。socket只负责发送和接收二进制数据块,而进程是面向应用程序接口的,接口功能一般由命令、命令返回码、输入参数表或输出参数表构成,参数类型需要显式定义,命令返回码为整型。数据帧头包括命令编号、净荷尺寸和返回码等,编程时需要填写命令编码,计算填充净荷尺寸及其他例行工作;数据帧净荷包括命令输入参数或输出参数和返回码(错误标识),每个命令的输入和输出结果不尽相同,若不同处理则工作量随命令集规模增长。本发明通过设计标准的通用编组和解组描述模板,简化了命令处理,大大提高了处理效率。
本发明还提供了一种分布式通信系统,包括控制系统和若干业务模块,业务模块分别通过网络与控制系统互连,网管通过SNMP协议向控制系统发送命令,再由控制系统综合处理,根据处理逻辑向各业务模块发出通信命令来完成功能实现,控制系统与各业务模块之间协作实现相应的功能。
所述控制系统中设有若干通用编组和解组描述模板,分别与远程API功能集中的远程API一一对应,所述通用编组或解组描述模板分别包括若干字段,分别用于存放命令编码以及输入参数表或输出参数表中的每个参数的类型、参数值占用的字节数以及在通信帧缓冲区的帧体内的相对存储位置,所 述命令编码与远程API的函数名以及通信命令一一对应;
所述业务模块和所述控制系统上分别设有通信帧缓冲区、编组单元和解组单元;
所述通信帧缓冲区包括由若干存储单元组成的帧头区和帧体区,分别与所述通信命令帧和通信命令响应帧的帧头和帧体相对应,所述帧头区用于存放命令编码和帧体区所占用的字节数,通信命令响应帧的帧头区还存放命令返回码,所述帧体区用于存放每一个输入参数值或每一个输出参数;
所述编组单元通过调用通用编组描述模板,依次将与远程API函数名对应的命令编码以及各输入参数或输出参数在所述帧体区所占用的字节数装载在相应的所述帧头区内,通信命令响应帧还要将命令返回码装载在所述帧头区内,并根据各输入参数或输出参数在通信帧缓冲区的帧体内的相对存储位置将各个输入参数值或输出参数值分别装载在相应的帧体区内,然后将所述帧头区和所述帧体区中合并为通信命令帧或通信命令响应帧;
所述解组单元调用通用解组描述模板,分别从通信帧缓冲区的帧头区内取出命令编码,通信命令响应帧还要取出命令返回码,并根据各输入参数值或输出参数值在通信帧缓冲区的帧体内的相对存储位置,从相应的帧体区内取出相应的输入或输出参数值,对于通信命令帧,将命令编码和输入参数值送相应的处理模块执行,对于通信命令响应帧,将输出参数装配在与命令编码对应的远程API的返回结果中。
所述控制系统按远程API功能集设有相应的通用编组和解组描述模板,将API函数(功能)或执行结果在通信帧缓冲区内编组成通信命令帧和通信命令响应帧,以及在通信帧缓冲区内解组成API函数所需的形式,所述通用 编组模板包括命令编码和参数表,参数表描述了每个参数的类型、参数值占用的字节数以及在通信帧缓冲区的帧体区内的相对存储位置,负责将API函数的输入参数编组到通信帧缓冲区,所述通用解组模板包括命令编码和参数表,参数表描述了每个参数的类型、参数值占用的字节数以及在通信帧缓冲区的帧体区内的相对存储位置,负责将通信帧缓冲区中的内容解组到API函数所需的形式。通用编组和解组模板中的命令编码与远程API的函数名以及通信命令一一对应。
附:远程API例子。
其中:返回码ErrCode为整型,函数名SetAuth,包含3个接口参数,其中IN表示输入参数,OUT表示输出参数。UINT8是单字节简单类型,STRUCT_ONU_BASE_INFO是结构化复杂类型,具体定义如下:
本发明的图5中,通信帧中的帧体尺寸是指帧体中包含参数值的总字节数;返回值仅在返回帧时有效,表示结果的正确性或错误原因码;IN表示输入型参数,OUT表示输出型参数。
本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
Claims (6)
1.分布式通信系统中远程API的编组和解组方法,其特征在于:
分别为每个通信命令建立相对应的通用编组描述模板和通用解组描述模板,所述通用编组描述模板或通用解组描述模板分别包括若干字段,所述字段分别用于存放命令编码以及输入参数表或输出参数表中的每个参数的类型、参数值占用的字节数以及在通信帧缓冲区帧体内的相对存储位置,所述命令编码与远程API的函数名以及通信命令一一对应;
通信命令帧和通信命令响应帧分别在通信帧缓冲区内进行编组和解组,所述通信帧缓冲区包括由若干存储单元组成的帧头区和帧体区,分别与所述通信命令帧和通信命令响应帧的帧头和帧体相对应,所述帧头区用于存放命令编码和帧体区所占用的字节数,通信命令响应帧的帧头区还存放命令返回码,所述帧体区用于存放每一个输入参数值或输出参数值;编组时通过调用通用编组描述模板,依次将与远程API函数名对应的命令编码以及各输入参数或输出参数在所述帧体区所占用的字节数装载在相应的所述帧头区内,通信命令响应帧还要将命令返回码装载在所述帧头区内,并根据各输入参数或输出参数在通信帧缓冲区的帧体内的相对存储位置将各个输入参数值或输出参数值分别装载在相应的帧体区内,然后将所述帧头区和所述帧体区合并为通信命令帧或通信命令响应帧;解组时通过调用通用解组描述模板,分别从通信帧缓冲区相应的所述帧头区内取出命令编码,通信命令响应帧还要取出命令返回码,并根据各输入参数值或输出参数值在通信帧缓冲区的帧体区内的相对存储位置,从相应的所述帧体区内取出相应的输入参数值或输出参数值。
2.如权利要求1所述的分布式通信系统中远程API的编组和解组方法,其特征在于,所述通用编组或解组描述模板中还包括用于存放序列型参数的个数的字段,所述帧体区还设有还设有用于存放相应的序列型参数的个数的存储单元。
3.如权利要求1或2所述的分布式通信系统中远程API的编组和解组方法,其特征在于,编组过程中,任一输入参数或输出参数的数据长度超出相应的所述存储单元的数据长度时,则发出错误提示,并将错误代码作为命令返回码填充到相应通信命令响应帧的所述帧头区内,如果通信命令响应帧中含有错误代码,则忽略此通信命令帧体中的输出参数内容。
4.采用如权利要求1所述的分布式通信系统中远程API的编组和解组方法实现远程API的方法,其特征在于包括以下步骤:
A10,客户端和服务端均设有一个所述通信帧缓冲区,客户端调用远程API实现的功能请求命令,并根据通用编组描述模板对该功能请求命令在客户端的通信帧缓冲区内进行编组形成通信命令帧;
A20,将步骤A10生成的所述通信命令帧通过网络发送到服务端并等待回应;
A30,服务端解析所述通信命令帧,并分别调用通用解组描述模板在服务端的通信帧缓冲区内进行解组,从而获得功能请求命令及各输入参数,再使用输入参数执行相应命令的功能代码;
A40,服务端完成处理后得到相应的输出参数值,以及代表处理结果的命令返回码;
A50,服务端将输出参数值及命令返回码在服务端通信帧缓冲区内进行编组形成通信命令响应帧;
A60,所述通信命令响应帧由服务端通过网络发回客户端;
A70,客户端调用通用解组描述模板在客户端的通信帧缓冲区内进行解组,获得此功能请求命令的命令返回码和各输出参数值。
5.分布式通信系统,包括控制系统和若干业务模块,所述业务模块分别通过网络与所述控制系统互连,网管通过SNMP协议向所述控制系统发送命令,由所述控制系统根据处理逻辑向各所述业务模块发出通信命令来完成功能实现,其特征在于,
所述控制系统中设有若干通用编组和解组描述模板,分别与远程API功能库中的远程API一一对应,所述通用编组或解组描述模板分别包括若干字段,分别用于存放命令编码以及输入参数表或输出参数表中的每个参数的类型、参数值占用的字节数以及在通信帧缓冲区的帧体内的相对存储位置,所述命令编码与远程API的函数名以及通信命令一一对应;
所述业务模块和所述控制系统上分别设有通信帧缓冲区、编组单元和解组单元;
所述通信帧缓冲区包括由若干存储单元组成的帧头区和帧体区,分别与所述通信命令帧和通信命令响应帧的帧头和帧体相对应,所述帧头区用于存放命令编码和帧体区所占用的字节数,通信命令响应帧的帧头区还存放命令返回码,所述帧体区用于存放每一个输入参数值或每一个输出参数;
所述编组单元通过调用通用编组描述模板,依次将与远程API函数名对应的命令编码以及各输入参数或输出参数在所述帧体区所占用的字节数装载在相应的所述帧头区内,通信命令响应帧还要将命令返回码装载在所述帧头区内,并根据各输入参数或输出参数在通信帧缓冲区的帧体内的相对存储位置将各个输入参数值或输出参数值分别装载在相应的帧体区内,然后将所述帧头区和所述帧体区中合并为通信命令帧或通信命令响应帧;
所述解组单元调用通用解组描述模板,分别从通信帧缓冲区的帧头区内取出命令编码,通信命令响应帧还要取出命令返回码,并根据各输入参数值或输出参数值在通信帧缓冲区的帧体内的相对存储位置,从相应的帧体区内取出相应的输入或输出参数值,对于通信命令帧,将命令编码和输入参数值送相应的处理模块执行,对于通信命令响应帧,将输出参数装配在与命令编码对应的远程API的返回结果中。
6.如权利要求5所述的分布式通信系统,其特征在于,所述编组单元在编组过程中,如果任一输入参数或输出参数的数据长度超出相应的所述存储单元的数据长度时,则发出错误提示,并将错误代码作为命令返回码填充到相应通信命令响应帧的所述帧头区内,如果通信命令响应帧中含有错误代码,则忽略此通信命令帧体内的相应输出参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110151180.XA CN102281152B (zh) | 2011-06-08 | 2011-06-08 | 分布式通信系统、实现方法及远程api的编组和解组方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110151180.XA CN102281152B (zh) | 2011-06-08 | 2011-06-08 | 分布式通信系统、实现方法及远程api的编组和解组方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102281152A true CN102281152A (zh) | 2011-12-14 |
CN102281152B CN102281152B (zh) | 2014-10-29 |
Family
ID=45106350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110151180.XA Active CN102281152B (zh) | 2011-06-08 | 2011-06-08 | 分布式通信系统、实现方法及远程api的编组和解组方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102281152B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105187244A (zh) * | 2015-08-21 | 2015-12-23 | 成都广达新网科技股份有限公司 | 一种支持多种管理模式的数字通信设备访问管理系统 |
CN105426531A (zh) * | 2015-12-18 | 2016-03-23 | 河南思维自动化设备股份有限公司 | 一种调度命令的自动解析方法 |
CN106936937A (zh) * | 2015-12-29 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 用于互联网业务交互的通用接口的实现方法和装置 |
CN107181806A (zh) * | 2017-05-27 | 2017-09-19 | 北京思特奇信息技术股份有限公司 | 一种基于dubbo的分布式业务处理系统及方法 |
CN110688142A (zh) * | 2019-10-10 | 2020-01-14 | 星环信息科技(上海)有限公司 | 应用程序编程接口的发布方法、设备及存储介质 |
CN112463706A (zh) * | 2020-12-07 | 2021-03-09 | 上海电气集团股份有限公司 | 一种数据发送、接收方法及通信终端 |
CN112559039A (zh) * | 2020-12-03 | 2021-03-26 | 类人思维(山东)智慧科技有限公司 | 一种计算机编程用指令集生成方法及系统 |
CN112671770A (zh) * | 2020-12-23 | 2021-04-16 | 波达通信设备(广州)有限公司 | 室外机串口协议解析方法、装置、计算机设备及存储介质 |
CN112752282A (zh) * | 2020-12-11 | 2021-05-04 | 武汉虹信科技发展有限责任公司 | 网元管理系统数据上报方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1848774A (zh) * | 2005-04-11 | 2006-10-18 | 华为技术有限公司 | 一种远程调用通信组件的系统及方法 |
CN101197959A (zh) * | 2007-12-29 | 2008-06-11 | 北京创毅视讯科技有限公司 | 一种终端的控制方法、系统和设备 |
CN101277301A (zh) * | 2008-04-24 | 2008-10-01 | 华为技术有限公司 | 分布式系统的接口调用方法和装置 |
CN101699397A (zh) * | 2009-10-09 | 2010-04-28 | 上海宝信软件股份有限公司 | 实现Java与XML数据绑定的方法 |
CN101840334A (zh) * | 2010-04-16 | 2010-09-22 | 中国电子科技集团公司第二十八研究所 | 一种软件构件服务化封装方法 |
-
2011
- 2011-06-08 CN CN201110151180.XA patent/CN102281152B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1848774A (zh) * | 2005-04-11 | 2006-10-18 | 华为技术有限公司 | 一种远程调用通信组件的系统及方法 |
CN101197959A (zh) * | 2007-12-29 | 2008-06-11 | 北京创毅视讯科技有限公司 | 一种终端的控制方法、系统和设备 |
CN101277301A (zh) * | 2008-04-24 | 2008-10-01 | 华为技术有限公司 | 分布式系统的接口调用方法和装置 |
CN101699397A (zh) * | 2009-10-09 | 2010-04-28 | 上海宝信软件股份有限公司 | 实现Java与XML数据绑定的方法 |
CN101840334A (zh) * | 2010-04-16 | 2010-09-22 | 中国电子科技集团公司第二十八研究所 | 一种软件构件服务化封装方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105187244A (zh) * | 2015-08-21 | 2015-12-23 | 成都广达新网科技股份有限公司 | 一种支持多种管理模式的数字通信设备访问管理系统 |
CN105187244B (zh) * | 2015-08-21 | 2018-10-30 | 成都广达新网科技股份有限公司 | 一种支持多种管理模式的数字通信设备访问管理系统及其工作方法 |
CN105426531A (zh) * | 2015-12-18 | 2016-03-23 | 河南思维自动化设备股份有限公司 | 一种调度命令的自动解析方法 |
CN106936937A (zh) * | 2015-12-29 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 用于互联网业务交互的通用接口的实现方法和装置 |
CN107181806A (zh) * | 2017-05-27 | 2017-09-19 | 北京思特奇信息技术股份有限公司 | 一种基于dubbo的分布式业务处理系统及方法 |
CN110688142A (zh) * | 2019-10-10 | 2020-01-14 | 星环信息科技(上海)有限公司 | 应用程序编程接口的发布方法、设备及存储介质 |
CN112559039A (zh) * | 2020-12-03 | 2021-03-26 | 类人思维(山东)智慧科技有限公司 | 一种计算机编程用指令集生成方法及系统 |
CN112463706A (zh) * | 2020-12-07 | 2021-03-09 | 上海电气集团股份有限公司 | 一种数据发送、接收方法及通信终端 |
CN112463706B (zh) * | 2020-12-07 | 2024-05-31 | 上海电气集团股份有限公司 | 一种数据发送、接收方法及通信终端 |
CN112752282A (zh) * | 2020-12-11 | 2021-05-04 | 武汉虹信科技发展有限责任公司 | 网元管理系统数据上报方法及系统 |
CN112752282B (zh) * | 2020-12-11 | 2022-07-19 | 武汉虹信科技发展有限责任公司 | 网元管理系统数据上报方法及系统 |
CN112671770A (zh) * | 2020-12-23 | 2021-04-16 | 波达通信设备(广州)有限公司 | 室外机串口协议解析方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102281152B (zh) | 2014-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102281152B (zh) | 分布式通信系统、实现方法及远程api的编组和解组方法 | |
CN100401707C (zh) | 一种分布式控制系统中的远程过程调用方法及系统 | |
CN100492302C (zh) | 基于Java的进程间异步通信的实现方法 | |
Afanasev et al. | An application of blockchain and smart contracts for machine-to-machine communications in cyber-physical production systems | |
CN101577718B (zh) | 多网银适配系统 | |
CN101795206B (zh) | 一种在分布式构成设备上实现snmp代理的方法和装置 | |
CN105760498A (zh) | 一种xml数据与关系型数据库匹配的实现方法 | |
CN101335648A (zh) | 一种不同接口报文间的自动转换方法及其装置 | |
CN101826018A (zh) | 一种网元管理系统界面交互开发系统及方法 | |
CN105005543A (zh) | 一种接口生成装置及方法 | |
CN107809332A (zh) | 复合接口配置及复合接口调用方法、装置 | |
CN108933774A (zh) | 数据交互系统和方法 | |
CN104125104A (zh) | 一种光网络单元中业务数据的配置方法 | |
US20070198562A1 (en) | Method and Apparatus for Ensuring Business Process Integration Capability for one or more Distributed Component Systems in Communication with one or more Legacy Systems | |
CN107908488A (zh) | 消息请求接口交互方法、装置、计算机设备及存储介质 | |
CN102111288A (zh) | 一种机器对机器的网络管理架构 | |
CN107450993A (zh) | 一种分布式iec61850通信组件的数据交互方法 | |
CN115801882A (zh) | 旧线系统与微服务系统间信息交互方法和装置 | |
CN104750468B (zh) | 一种服务端拓扑数据转换方法和转换装置 | |
CN113067914B (zh) | 一种分配子网标识的方法、装置、电子设备和存储介质 | |
CN109445384A (zh) | 一种多设备控制系统 | |
CN101483546B (zh) | 一种用于组建基于Profibus协议的PLC网络的方法 | |
CN104578418B (zh) | 基于101规约配电自动化设备的配置方法和系统及设备 | |
US20230135714A1 (en) | Integration of a machine into an existing distributed ledger network | |
CN100450028C (zh) | 一种电信设备系统资源管理的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |