CN100377556C - 通信协议的构件化实现方法 - Google Patents
通信协议的构件化实现方法 Download PDFInfo
- Publication number
- CN100377556C CN100377556C CNB2004100156660A CN200410015666A CN100377556C CN 100377556 C CN100377556 C CN 100377556C CN B2004100156660 A CNB2004100156660 A CN B2004100156660A CN 200410015666 A CN200410015666 A CN 200410015666A CN 100377556 C CN100377556 C CN 100377556C
- Authority
- CN
- China
- Prior art keywords
- protocol
- component
- interface
- componentization
- 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.)
- Expired - Fee Related
Links
- 238000004891 communication Methods 0.000 title claims abstract description 81
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000006870 function Effects 0.000 claims abstract description 50
- 238000011161 development Methods 0.000 claims abstract description 38
- 238000013461 design Methods 0.000 claims description 10
- 230000007246 mechanism Effects 0.000 claims description 9
- 238000005516 engineering process Methods 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims description 4
- 230000008520 organization Effects 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 238000005538 encapsulation Methods 0.000 abstract description 6
- 230000008901 benefit Effects 0.000 abstract description 4
- 230000002349 favourable effect Effects 0.000 abstract 3
- 238000011084 recovery Methods 0.000 abstract 1
- 230000005540 biological transmission Effects 0.000 description 26
- 238000007726 management method Methods 0.000 description 24
- 238000012546 transfer Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 230000004044 response Effects 0.000 description 5
- 238000013523 data management Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 238000007373 indentation Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000035800 maturation Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000003612 virological effect Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种通信协议的构件化实现方法。采用制订统一的接口标准,确定构件化方式,构件开发平台实现,提交构件库存储,改造操作系统以获取运行时支持等步骤。它有利于实现对通信协议的合理封装,优化对协议所实现服务的合理调用,并保持良好的向后兼容性。构件化后的通信协议,实现了协议的动态装载,支持构件重用、高度可配置性,具有开发时间短、良好的可移植性等优点。为协议的组装提供了方便。通过装载,替换不同的协议构件,提供各种类别的网络服务功能,服务质量,特别适合一些并发性、实时性、系统容灾性和运行持续性要求严格的场合。
Description
技术领域
本发明涉及数据通信领域,尤其涉及一种通信协议的构件化实现方法。
背景技术
通信领域中的通信协议本身具有种类繁多、结构复杂和多样化的特点,为了满足通信需求,减少协议设计和实现的复杂度,协议通常按不同层次进行开发,每一层分别负责不同的通信功能。不同的协议,其层的数量、各层的名字、内容和功能都不尽相同。一个协议族,比如TCP/IP,就是一组不同层次上的多个协议的组合,它包括:主机至网络层、互联网层、传输层和应用层。每一层,每一个协议都提供了不同的服务。而对于每一个协议来说,也可以分解成多个模块来实现。例如Telnet协议可分为连接、网络虚拟终端、传输控制等模块。以此得到通信协议软件的传统实现方式。
为了提高软件质量,并尽可能地缩短软件产品的开发周期,“基于构件的软件开发”应运而生。构件技术把单个的应用/服务分割成多个独立的部分(构件),这样某一块构件就可以独立的被新的构件更新、替换。整个应用/服务就可以随着新构件的不断取代旧的构件而趋于完善,更具有动态性、灵活性,易于定制。通信协议所具有的分层开发和模块化的特点,使得基于构件的软件开发方式也可以应用到通信协议软件的实现中,以提高软件质量,缩短产品开发周期,获得更好的灵活性。目前比较流行的构件例如EJB,虽然具备了分布式、封装性、扩展性、复用性和跨平台作业的特性,但是对于运行在内核模式下的通信协议,如数据链路层的地址解析协议、网络层的路由协议、传输层的传输控制协议等,EJB所采用的虚拟机机制(JVM)无法支持这些复杂的网络服务协议,也无法适应协议的运行速度。
随着网络通信技术的不断发展,需要解决许多新的需求。包括降低成本,提高可靠性,提供多种服务及有效的服务质量支持,使得不同厂商生产的软硬件之间的互用与升级,支持可编程网络及可扩展网络的概念等等。为解决以上问题,提出了新一代网络标准,指出网络由基于开放标准的模块化网络元件(Network Element,NE)构造,所谓NE是网络中的独立设备,单独的处理调用以及用户数据传输。作为新一代网络的设备标准,高级通讯计算体系结构(Advanced Telecommunications Computing Architecture,AdvancedTCA)给出了一个开放标准,针对中等规模及大规模的通信需求,描述基于背板的模块化体系结构。目标是为公共平台创建一个基础结构,提供大量由不同企业提供的可替换的模块以供选择,并满足相当长一段时间通信行业的需求。它的设计以支持新一代网络应用为目标,得到了网络设备厂商的广泛支持。在此体系下,提出了快速通道和慢速通道的概念:所谓快速通道,是指NE中的功能经过优化,并完全负责处理和交换用户信息;而慢速通道中,NE中的功能与快速通道合作,处理用户数据中快速通道不能独立处理的那一部分。网络就由一组NE处理构件组成,包括:
(1)通用的处理构件:负责处理调用,网络管理,慢速通道的包处理,以及服务端应用;
(2)数字信号处理构件:语音、图像、视频信号处理,压缩、加密、调制;
(3)网络处理构件:快速通道的数据包处理,包括路由、过滤、分类、VPN通道;
(4)现场可编程门阵列(FPGA):连接逻辑和快速通道处理构件(PPP、查表等);
(5)专用集成电路(ASIC):调制、交换板、专用处理引擎(IPSec、视频解码等)、完整的子系统(系统芯片)。
如此以来,网络模型可以由位于应用层、慢速通道层、快速通道层的NE构件组成。网络数据先交给位于最低层的快速通道层NE构件处理,在这里负责快速处理和交换网络数据包,包括路由、过滤、分类、VPN通道等快速操作;本层处理不了的协议操作,如对部分数据包的进一步查询和地址解析等操作,则交给上一层的慢速通道层NE构件处理,通常在这里处理一些网络层的协议功能;类似的,在该层处理不了的协议操作,如更新路由协议以及应用层的协议操作,则进一步交给应用层的协议构件。由此进一步得到通信设备中的协议软件模型,它分为三个层次:应用层构件实现常见的协议功能,这些构件完成大部分的协议操作,它们建立在平台服务层之上;平台服务层提供通用的系统管理服务,例如管理内存、系统、进程等资源;位于最低层的是设备驱动层,负责快速的与设备进行数据交换。基于网络元件的模块化结构为通信协议的构件化提供了理论基础,但是由于通信需求以及网络状况的多样性,如何快速高效的开发满足需求的网络元件,适应通信需求及网络环境的不断变化,保证大量网络元件间的兼容性,并提供有效的存储及检索方式都亟待解决。
发明内容
为了快速高效开发通信协议软件,获取适应网络通信的运行速度,提供各种类别的通信服务功能与服务质量,保证通信协议实现的灵活性和兼容性,并减轻协议开发人员的工作量,提高协议软件的开发质量和效率。本发明提供一种通信协议的构件化实现方法。
本发明解决技术问题所采用的技术方案是:
1)制订统一的接口标准:
通信协议的构件化实现方式在二进制代码级上实现代码的动态重用,通过在构件间规定一组相同的结构类接口,以接口的形式提供协议构件所实现的服务,实现构件间的标准动态交流;
2)确定构件化方式:
对通信协议进行拆分,完成面向对象的,基于对象、协议、接口的设计,形成构件化的协议栈,其中各个层次的协议根据通信需要,选取下层协议构件,对本层协议进行定制,构件化之后,实现通信协议的动态装载,支持构件重用、高度可配置性;
3)实现构件开发平台:
构件开发平台根据协议构件的运行平台,以及通信协议的拆分结果,为协议构件的开发生成框架代码,开发平台为开发提供项目组织与管理,并提供友好的界面,以及集成的开发、测试环境;
4)提交构件库存储:
开发完成的通信协议构件,交给构件库进行存储、管理和维护,并针对用户的通信需求提供检索服务,返回满足特定需求的协议构件;
5)改造操作系统以获取运行时支持:
改造操作系统,支持从构件库中下载构件并在本地动态加载和运行,将原来编译进内核的协议栈从内核分离出来作为模块加载运行,并在内核中预留各种构件的通信服务接口,构件之间可以通过服务接口进行通信,对协议栈的替换、修改及升级可通过模块的更新来实现,无需重新编译、配置内核,并支持远程管理、动态更新核心协议栈;在对应用层协议的支持上,基于动态链接库机制实现一套协议构件接口库,通过该库实现应用层协议构件的基本管理功能,包括接口查询功能、动态装载、移出构件功能、简单的本地管理功能如申请、下载构件、删除、更新、替换本地构件操作;而为了使以构件化方式实现的协议软件得以运行,操作系统内核也须模块化,从而提供运行时支持,因此采用按功能构件化或按使用对象构件化的方式对通信协议进行拆分;改造操作系统,使用CMP技术,使其内核通信模块化。
本发明具有的有益的效果是:通信协议的构件化有利于实现对通信协议的合理封装,优化对协议所实现服务的合理调用,并保持良好的向后兼容性使各个通信协议的实现更加合理。构件化后的通信协议,实现了协议的动态装载,支持构件重用、高度可配置性,具有开发时间短、良好的可移植性等优点。这些特性也为协议的组装提供了方便。通过装载,替换不同的协议构件,为上层提供各种类别的网络服务功能,服务质量,特别适合一些并发性、实时性、系统容灾性和运行持续性要求严格的场合。通过开发平台的辅助减轻了协议开发人员的工作量,提高了协议软件的开发的质量和效率。构件库的存在,为数量巨大、种类繁多的协议构件提供了科学的管理方式,也为用户按照自己的需求查询和获取构件提供了有效的途径。
附图说明
图1是本发明的总体流程框图;
图2是协议栈构件化实现的示意图;
图3是对HTTP协议各个功能模块的构件化示意图;
图4是按使用对象构件化的FTP协议构件模型。
具体实施方法
将通信协议按照所处在协议栈中的层次以及运行环境的要求,按不同的方式进行划分,然后将划分出来的模块通过构件开发平台进行封装,使得协议构件成为协议软件最基本的构成。开发完成的构件上传到构件库中,由构件库提供统一的存储和查询。通信设备可以根据当前的通信需求,结合自身系统资源及网络状况,从构件库中下载所需构件,并提供运行时支持,从而组装得到合适的通信协议软件。其具体实施步骤如图1所示:
(一)制订统一的接口标准
通信协议的构件化方式规定了一种普遍适用的抽象标准,在二进制代码级上实现了代码的动态重用,通过在构件间规定一组相同的结构类接口,从而实现了标准的动态交流。在遵循构件技术的规范下,以接口的形式提供服务,使得调用更加合理。封装服务的内部实现可以保证通信协议实现的灵活性和向后兼容。通信协议构件化将大大提高路由器及其它通信设备软件的开发速度,加快推向市场的进度和升级换代。
(二)确定构件化方式
协议构件化解决了软件存在的四个基本问题:基本的构件互操作性,协议版本升级,实现语言无关性以及透明的跨进程互操作性。解决途径是对通信协议进行拆分,完成面向对象的,基于对象、协议、接口的设计,形成了构件化的协议栈。对通信协议拆分时可以采取多种方法,包括按功能构件化,按使用对象构件化,按层次构件化等。构件化后的通信协议,实现了协议的动态装载,支持构件重用、高度可配置性,具有开发时间短、良好的可移植性等优点。这些特性也为协议的组装提供了方便。通过装载,替换不同的协议构件,为上层提供各种类别的网络服务功能,服务质量,特别适合一些并发性、实时性、系统容灾性和运行持续性要求严格的场合。
(三)构件开发平台实现
将划分得到的协议模块通过构件开发平台进行封装,使得协议构件成为协议软件最基本的构成。为了降低协议构件化开发的复杂度,需要一个强有力的构件开发平台,以协助构件开发人员进行协议软件开发。构件开发平台可以根据协议构件的运行平台,以及用户的输入,为协议构件的开发生成框架代码。开发平台为开发提供强有力的项目组织与管理,并提供友好的界面,以及集成的开发、测试环境,大大减轻了协议开发人员的工作量,提高了协议软件的开发的质量和效率。
(四)提交构件库存储
协议构件库是针对网络通讯需求特点开发的、不断完善改进的、用来对构件化的协议进行使用、管理和维护的软件构件库。并针对用户的需求提供检索,返回满足特定需求的构件。构件库的存在,为数量巨大、种类繁多的协议构件提供了科学的管理方式,也为用户按照自己的需求查询和获取构件提供了有效的途径。
(五)改造操作系统以获取运行时支持
为了使得构件化实现的协议得以运行,需对操作系统进行改造,将原来编译进内核的协议栈从内核分离出来作为模块加载运行,并在内核中预留各种构件的服务接口,构件之间可以通过服务接口进行通信。系统底层功能的修改可通过模块的更新来实现,对协议栈的替换、修改及升级无需重新编译、配置内核,并使远程管理、动态更新路由器的核心协议栈成为可能。在对应用层协议的支持上,基于动态链接库机制实现了一套协议构件接口库,通过该库来实现应用层协议构件的基本管理功能。通过该库提供的接口对构件进行管理和使用,包括接口查询功能、动态装载、移出构件功能、简单的本地管理功能如申请、下载构件、删除、更新、替换本地构件等操作。
通信协议的构件化是建立在协议模块化完成的基础之上。对于传统的按层次划分的协议,本发明先进行模块化,然后才能构件化,组装成协议构件。协议模块化的目的在于控制协议的粒度,先通过对通信协议的模块化,初步降低协议的粒度,为上层网络应用协议提供了统一的接口,提高了整个系统的动态可配置性,以便于上层协议能较好的进行构件化。经过协议模块化后的内核更加紧凑,协议栈更灵活,更新协议时不必全部重新编译整个内核。
以ICMP协议的模块化为例,可以提供不同的服务功能和服务质量:在传输性能差的网络环境中,通过修改传输期间生存周期TTL或者禁止ICMP回显请求、时间戳请求来减少网络负荷,实现对数据流量的控制;而在网络安全性要求高的环境,可以禁止ICMP服务类型和主机重定向功能来减少安全漏洞。在实际应用中,还可以根据通信需求,通过修改协议模块的实现,在内核态的通信服务中插入需要定制的功能。以防御攻击和病毒防护为例,发送大量无用数据包是拒绝服务攻击(DoS)与病毒传播的通用手段。在内核协议模块中,通过检查数据包类型,数据包目的端、源端,数据包发送频率等手段,过滤数据包甚至检测数据源来保证网络的安全和性能。
通过对通信协议构件化后,上层的协议可以根据不同的需要,选取下层协议的构件,对本层协议进行定制,极大的增强了协议的灵活性,从而也将使协议的实现更具灵活性。图2给出协议构件化以后,各层协议构件之间的关系的一个实例。协议1经构件化之后由构件A1、A2、A3实现。协议2经构件化之后,它的第一版本由构件B1、B2实现,第二版本由构件b1、b2实现。其中,构件A1、A3分别使用了协议2中的构件B1、B2,而构件A2则使用的是构件B2的升级版本b2。系统在运行一段时间后,由于网络状况或是系统本身资源的变化,初始配置的协议栈往往不再适合,这就要进行构件的动态替换,因此A3使用的构件B2会被构件b1所替换。实现协议的通信构件,从各种协议构件中选择符合需求的模块,按照协议层重新组装使用,显示了极大的灵活性。
协议模块化时要考虑控制实现的粒度。一般来说,构件的粒度越小,协议划分得越细,协议构件越多;构件粒度越大,协议划分得越粗,协议构件就越少。协议构件粒度的大小,决定了协议构件模块化、信息封装性、局部化的程度。如果粒度过大,构件的尺度增加,独立性降低,各个构件之间的关联度也会增加,不利于构件的动态替换与更新。由于构件粒度具有多样化的要求,并且考虑协议自身特点,对不同的协议可以采用不同的方法实施构件化:
首先可以按层次构件化。基于开放系统互联(OSI)的网络模型为通讯协议提供了构件化的方法。OSI模型有7层,从上往下分别为应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。在传输数据时,发送方将待发数据交给应用层,应用程序在数据前面加上应用报头,再把结果交给表示层。表示层可以有多种方式对此加以变换,也可以在前面加一个报头,然后把结果交给会话层。这一过程重复进行直到数据抵达物理层,然后被实际传输到接收机。在接收机里,当信息向上传递时,各种报头被一层一层的剥去,直到数据到达接收方。整个过程中的最关键的概念是,虽然数据的实际传输是垂直的,但每一层在编程时却好像数据一直是水平传输的。本发明认为,这种下层实现对上层的透明性为每层协议的封装提供了依据。因此可对每层通讯协议进行构件化,为上一层构件提供服务接口。在此构件化方法下,协议构件的封装较好,构件之间功能独立;缺点是其设计和实现往往不够灵活。在这种体系结构下,想替换掉协议中某些功能的效率低下的实现机制往往是很困难的,这就制约了协议的性能和功能。
为解决以上问题,可以采用按功能构件化的方法。协议的构件化是在对各种协议进行分析、划分的基础上组件化封装。该方法就是对协议提供的功能模块进行划分,各个子功能模块相对独立,以实现低耦合、高内聚性。
例如,超文本传输协议(HTTP)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。由于HTTP协议是基于请求/响应的(相当于C/S结构),一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。HTTP协议大致具有请求、连接、回应、处理HTTP消息、提供和解析协议参数等功能。因此HTTP协议基本上可以分为一下几个构件:Connect构件、Request构件、Response构件、URL构件、Message构件、协议参数构件等。而其中Connect构件、Request构件、Response构件用到了TCP协议,URL构件又与FTP协议,Telnet协议有密切的关系,结合协议模块化的方法,用到TCP协议的Connect等构件可以由TCP协议中的某些构件组合而成,这样不但保证了上层协议的易于扩展、定制,同时系统性能也不会损失过大。对HTTP协议各个功能模块的构件化如图3所示。
还可以按照协议构件的使用对象对协议进行构件化。对于某一个通信协议,使用对象可以分为多种,有服务端使用,有客户端使用;有给同一层协议使用的,有给上一层协议使用的;有给一般用户使用的,也有给超级用户使用的,这些使用对象的特性,都可以用来对协议进行构件化。应用程序在使用通信协议时,有可能只是使用到了协议的某一个模块,例如客户端模块。这时候,就可以提供协议构件中的客户端构件给应用程序。
例如,互联网文件传输协议(File Transfer Protocol)标准是在RFC959说明的。该协议定义了一个从远程计算机系统和本地计算机系统之间传输文件的一个标准。一般来说,传输文件的用户需要先经过认证以后才能登录网站,然后方能访问在远程服务器的文件。而大多数的FTP服务器往往提供公共帐户来允许没有远程服务器的用户可以访问该FTP服务器。一个FTP会话通常包括五个软件元素的交互。
(1)用户接口:提供了一个用户接口并使用客户端协议解释器的服务。
(2)客户PI/客户协议解释器:向远程服务器协议机发送命令并且驱动客户数据传输过程。
(3)服务器PI/服务器协议解释器:响应客户协议机发出的命令并驱动服务器端数据传输过程。
(4)客户DTP/客户数据传输过程:负责完成和服务器数据传输过程及客户端本地文件系统的通信。
(5)服务DTP/服务器数据传输过程:负责完成和客户数据传输过程及服务器端文件系统的通信。
在FTP会话中,一共会存在有两个独立的网络连接,一个是由两端的PI使用的,另一个是由两端的DTP使用的。PI之间的连接一般被称作控制连接CC(Control Connection),DTP之间的连接被称作数据连接DC(Data Connection)。
在FTP模型中,User PI创建CC。CC遵从Telnet协议。在用户初始化阶段,标准FTP命令被User PI生成并通过CC传到服务器处理。Server PI将相应的标准FTP应答通过CC回传给User PI。数据传输由DC完成。User DTP在特定端口监听,由Server DTP用指定参数初始化连接。另一种情况是用户希望在两台非本地的主机上传输文件。用户与两个服务器建立CC,安排两个服务器之间的文件传输。
从上面这些分析可以看出,FTP协议主要涉及到客户端和服务端这两个使用对象。客户端和服务端都拥有各自的数据传输模块,命令解释器模块。当然,协议也可以按功能分解为建立连接模块,数据传输模块,数据管理模块,以及建立在这些模块之上的文件传输模块。但是本发明考虑的主要是服务使用对象,从使用对象角度来看,这些功能模块都可以包含在一个模块中。所以,本发明在构造FTP协议构件的时候就可以按照FTP协议使用的对象进行划分。这是一个粒度比较大的划分方式。
一般这种大粒度的构件化方法主要出现在上层协议上,而且是针对于特殊的要求用途对协议进行分解的。建立在这些协议上的应用程序,由特定的要求选择需要的构件。例如FTP应用程序客户端,只需要使用到FTP协议构件的客户模块,就可以完成客户端所需要的功能。在这个客户端构件里面,包含了数据连接、数据传输、数据管理多项功能。FTP协议按使用对象构件化可以分成客户端构件和服务端构件。客户端构件提供用户接口,客户端数据连接、传输、管理,客户端命令解释等。服务端构件则提供文件管理接口,服务端数据连接、传输、管理,服务端命令解释。其中数据的连接使用Telnet协议构件,数据的传输使用TCP协议构件,数据管理则使用SNMP等多个底层协议的构件。图4是按使用对象构件化的FTP协议构件模型。
为了降低协议构件化开发的复杂度,需要一个强有力的构件开发平台,以协助构件开发人员进行协议软件开发。构件开发平台期望实现能够适合多种程序语言来开发针对不同平台的协议构件,因此采用了全插件(plug-in)结构来满足这种灵活性要求。针对各种不同的构件的实际需要,构件开发的实际内容都做成插件模块,由一个相对固定的IDE框架平台支持、管理。这种结构不仅能发挥灵活性,还能做到向后兼容。
构件开发平台分为两个部分,一个部分是应用程序窗口框架,另一个部分是构件向导插件。这种平台+插件方式能做到最大限度的灵活性,适应多种操作系统平台下的多种构件类型的需要。
IDE框架类似操作系统的内核,它提供了一个IDE平台,包括窗口框架,插件管理连接器,项目管理器,代码编辑器。窗口框架描述了一个MDI窗口,包括菜单与工具栏,作为各种构件向导插件的容器;插件管理连接器的处理功能包括插件管理和调用。插件管理完成插件与平台的协调,为各插件在平台上生成管理信息以及进行插件的状态跟踪。插件调用为调用各插件所实现的功能,主要通过构件向导选择相应的构件类型,也即选择了相应的插件,并根据这个插件的内容对菜单、工具栏进行扩展,使用户能通过界面调用插件提供的相应的功能;项目管理器通过xml记录项目信息,包括目录文件结构,项目属性,构件属性等。xml文件格式使各种平台、各模块间共享项目、构件信息变得更加方便;文本编辑窗口可以编辑源码,采用一系列过滤器,分析器来辅助用户完成代码,包括针对程序设计语言的代码加亮、缩进、代码折叠、快速编辑等功能。在目前的构件开发平台中,代码编译器支持目前大部分编程和教本描述语言的关键字代码加亮方式。
构件向导插件是开发平台核心部分,完成构件开发的主体过程,包括构件框架代码生成、代码分析、构件编译、构件调试。它包括对菜单选项、工具栏的扩展和内部调用等。支持com+构件和linux的.so动态链接库构件等。构件框架代码生成模块通过一个向导采集用户输入的信息,根据相应的用户要求生成此类插件的框架代码,类似MFC的appwizard;代码分析、构件编译与调试主要通过连接后台编译程序,将输出经过处理后在界面上显示出来,并相应用户操作,做相应处理。
目前的构件开发平台可以实现任意语言的向后兼容,xml的项目管理,可以实现开发平台间项目、代码共享,优化的代码编辑器,可以使源代码的编辑更加高效。
协议构件化的核心是构件,对其进行有效管理和方便的检索是构件复用的核心问题之一。协议构件由于具有逻辑复杂性、应用广泛性等因素,需要有效的分类和检索手段。在以构件复用为核心的系统中,构件库的建立、管理和维护涉及一系列问题:构件的有效分类、快捷检索和准确理解机制;用户权限控制能力;构件库体系的可定制性与库间互操作性技术问题。协议构件库是针对网络通信需求特点开发的、不断完善改进的、用来对构件化的协议进行使用、管理和维护的软件构件库。构件库的运作建立在一个面向网络的软件工程机制与专门的管理制度基础之上,由大量可复用的协议构件组成,在针对具体用户需要时可查询得到特定的构件。
协议构件库的管理为构件化的协议提供了技术支持平台,作为大规模构件复用的基础设施,提供了资源共享与复用的机制。通过Internet和局域网技术为构件资源共享提供了有力的支持, 用户可通过网络方便地进行访问;提供多种构件检索方式,以方便快捷检索服务、协议的构件;提供良好的构件反馈机制,提高了构件复用的效率和质量;支持构件通过网络提交;提供构件的验证、入库、属性修改、删除等过程和功能的管理;支持对运行态构件的管理与服务。收集、整理用户反馈意见,为检索、选取构件及构库本身提供信息;利用协议构件库,可以使操作系统更方便的使用服务、协议或服务及协议的部分功能组件,可以采用构件化和软件复用的方法对协议进行再开发。
操作系统可以通过网络发出请求,向协议构件库要求得到服务、协议或者是构件。协议构件库内存放了所有协议构件,并存储了这些协议构件构造协议和服务的方法。协议构件库从构件库中找到相应的构件,将构件组合成服务、协议后发给操作系统,或者直接将操作系统要求的构件交给操作系统,而这些服务、协议和构件则由操作系统直接使用。
协议构件库中的系统构件和应用构件全部可以独立升级、动态加载。用户也可以通过构件开发平台开发出自己的构件或协议加入协议构件库,还可以使用协议构件库中已有的构件进行开发。
为了使以构件化方式实现的协议软件得以运行,操作系统必须提供运行时支持。操作系统对协议构件化的支持集中在对原有TCP/IP协议栈实现方式的修改上,内核通信协议模块化是实现协议构件化的前提,协议的模块化为上层网络应用协议提供了统一的接口,提高了整个系统的动态可配置性。内核通信协议的模块化设计使得内核更加紧凑,TCP/IP协议栈更灵活;修改协议时不必全部重新编译整个内核;协议模块可以不依赖于某个固定的硬件平台;调用协议模块中的函数无需显示的消息传递。
常见的monolithic类型的操作系统内核,如Linux内核,与微内核相比突出的缺点就是不够灵活。互联网层有一些核心的协议被上层频繁使用,相对来说比较独立,因此可以将这些协议(例如ICMP协议)按功能划分进行模块化并统一功能接口,作为操作系统功能部件动态加载与配置。这在一些并发性、实时性、系统容灾性要求严格的场合比较适应。系统底层功能的修改通过软件升级实现,而不需要静态补丁或者硬件烧录,保证了系统的持续运行。因此,这部分工作是针对整个系统的功能管理配置而言,而不是面向用户功能服务的。在对核心协议构件的支持上,采用函数接口替换的方法来调用协议模块中实现的接口,内核通过函数符号表来维护协议的函数接口。在对应用层协议构件的支持上,可利用Linux的动态链接库机制实现了一套构件接口库,接口的内部实现可以满足构件之间的通讯、并发、同步要求。
由于SMP操作系统能更好的发挥构件化通信协议的优势。构件化的结构能充分利用SMP技术,以增加吞吐量,提高整个系统的资源利用率,使得软件上的构件化与硬件上的高速、并行结合在一起。改造之前的Linux在执行SMP内核时,将中断调用全部交给启动CPU来完成。对于速度慢的处理器,由于IO处理占用的资源比较多,这一弊病被放大很容易造成瓶颈。改造后的内核可以很好地分配中断请求。对于可构件的网络处理器体系结构,为了尽量发挥出软硬件自身的特点,软件上是方便编程,可以用来表达极其复杂的逻辑;硬件是具有高速和并行的特点。因此,设计一种通用的可编程网络处理器逻辑(PNPLD-Programmable Network Processor Logic Devices)。可以将成熟的IP核(这里的IP是知识产权的简称)作为构件。采用IA架构的IntelPXA255处理器,完成在嵌入式设备上通信协议构件化操作系统的改造,以及构件运行环境的支持。
构件标准接口是通信协议构件化的基础,构件标准接口在构件开发平台、构件库和操作系统之间形成一套统一接口,实现了构件组合之间、构件与操作系统之间、构件与构件库之间的简单清晰的数据传递标准规范,使构件更加透明,数据传输更加规范,构件管理更加方便。另外,按照构件标准接口开发出的构件具有较好的灵活性和扩展性和相对的独立性,易于独立升级、动态加载、甚至跨平台、跨进程、跨网络使用。构件标准接口提供构件交互的规则,并基于这些规则实现类似容器的标准环境。这样构件对外发生作用或构件间的交互,都是通过规范定义的接口进行,构件使用者只需要知道构件的接口,而不关心其内部实现,是设计与实现分开的关键,体现了构件化设计的本质思想。
构件标准接口是协议构件化规范的基础,根据协议构件化规范,构件开发平台能自动完成协议代码的构件化。协议构件化规范包括了为协议制定构件化方案、将进行构件化的接口提取抽象、更改原构件接口、添加构件标准接口等内容。
构件标准接口封装了协议构件的重要信息,这样构件的使用者就能够通过标准的接口获取协议构件的基本信息,比如构件名、构件版本、构件方式等。更重要的是构件的使用者还能通过接口查询函数获取标准接口的使用方法。
构件标准接口使操作系统对构件的管理更加方便。本发明所应用的操作系统是完全基于构件化的操作系统,操作系统在管理自己的系统构件的同时还要管理加载的应用构件。有了构件标准接口,操作系统能够更加妥善的管理和监控每一个构件,同时由于构件和操作系统之间这样的紧密结合而提高了系统的安全性和运行效率。
构件标准接口还提供了协议构件公共接口函数库,用于对构件进行基本的操作。包括接口查询功能、动态装载、移出构件功能、简单的本地管理功能(包括申请、下载构件、删除、更新、替换本地构件等操作)。
Claims (1)
1.一种通信协议的构件化实现方法,其特征在于:
1)制订统一的接口标准:
通信协议的构件化实现方式在二进制代码级上实现代码的动态重用,通过在构件间规定一组相同的结构类接口,以接口的形式提供协议构件所实现的服务,实现构件间的标准动态交流;
2)确定构件化方式:
对通信协议进行拆分,完成面向对象的,基于对象、协议、接口的设计,形成构件化的协议栈,其中各个层次的协议根据通信需要,选取下层协议构件,对本层协议进行定制,构件化之后,实现通信协议的动态装载,支持构件重用、高度可配置性;
3)实现构件开发平台:
构件开发平台根据协议构件的运行平台,以及通信协议的拆分结果,为协议构件的开发生成框架代码,开发平台为开发提供项目组织与管理,并提供友好的界面,以及集成的开发、测试环境;
4)提交构件库存储:
开发完成的通信协议构件,交给构件库进行存储、管理和维护,并针对用户的通信需求提供检索服务,返回满足特定需求的协议构件;
5)改造操作系统以获取运行时支持:
改造操作系统,支持从构件库中下载构件并在本地动态加载和运行,将原来编译进内核的协议栈从内核分离出来作为模块加载运行,并在内核中预留各种构件的通信服务接口,构件之间可以通过服务接口进行通信,对协议栈的替换、修改及升级可通过模块的更新来实现,无需重新编译、配置内核,并支持远程管理、动态更新核心协议栈;在对应用层协议的支持上,基于动态链接库机制实现一套协议构件接口库,通过该库实现应用层协议构件的基本管理功能,包括接口查询功能、动态装载、移出构件功能、简单的本地管理功能如申请、下载构件、删除、更新、替换本地构件操作;而为了使以构件化方式实现的协议软件得以运行,操作系统内核也须模块化,从而提供运行时支持,因此采用按功能构件化或按使用对象构件化的方式对通信协议进行拆分;改造操作系统,使用CMP技术,使其内核通信模块化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100156660A CN100377556C (zh) | 2004-01-01 | 2004-01-01 | 通信协议的构件化实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100156660A CN100377556C (zh) | 2004-01-01 | 2004-01-01 | 通信协议的构件化实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1556641A CN1556641A (zh) | 2004-12-22 |
CN100377556C true CN100377556C (zh) | 2008-03-26 |
Family
ID=34351462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100156660A Expired - Fee Related CN100377556C (zh) | 2004-01-01 | 2004-01-01 | 通信协议的构件化实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100377556C (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8891550B2 (en) | 2006-02-15 | 2014-11-18 | International Business Machines Corporation | Platform independent configuration of multiple network services |
CN100459596C (zh) * | 2006-08-28 | 2009-02-04 | 华为技术有限公司 | 一种数据加载的方法及系统 |
CN100454845C (zh) * | 2006-09-18 | 2009-01-21 | 华为技术有限公司 | 通信网络中配置规则重用方法及其系统 |
CN100442233C (zh) * | 2007-01-31 | 2008-12-10 | 华为技术有限公司 | 实现应用系统动态升级的方法及系统 |
US8738606B2 (en) * | 2007-03-30 | 2014-05-27 | Microsoft Corporation | Query generation using environment configuration |
CN101217421B (zh) * | 2008-01-17 | 2010-08-18 | 杭州华三通信技术有限公司 | 检测协议构件化实现方法、构件组、硬件适配方法和装置 |
CN101515860B (zh) * | 2008-02-20 | 2011-05-25 | 中兴通讯股份有限公司 | 对客户终端设备进行远程管理的方法和系统 |
CN101267439B (zh) * | 2008-04-28 | 2010-12-22 | 中国人民解放军信息工程大学 | 介质访问控制协议生成方法、节点通信方法、装置及系统 |
CN101404073B (zh) * | 2008-10-21 | 2011-04-06 | 浙江大学 | 一种复杂产品模糊层次配置方法 |
CN101635717B (zh) * | 2009-08-21 | 2012-07-04 | 中国科学院软件研究所 | 一种构件化新型网络协议处理方法及其系统 |
CN101719921B (zh) * | 2009-12-10 | 2012-05-23 | 清华大学 | 可重构路由器软件开发中的路由协议构件的生成方法 |
CN101820361B (zh) * | 2010-03-26 | 2014-08-13 | 中兴通讯股份有限公司 | 一种实现对多协议通信组件管理的方法及装置 |
CN101977160B (zh) * | 2010-11-30 | 2012-08-22 | 中国人民解放军信息工程大学 | 可重构路由交换平台中的路由协议软件构件重构方法 |
US8914780B2 (en) * | 2011-03-04 | 2014-12-16 | Microsoft Corporation | Incremental generation of managed assemblies |
CN102929623A (zh) * | 2012-10-24 | 2013-02-13 | 北京空间机电研究所 | 一种fpga软件ip核生成系统 |
CN103078857B (zh) * | 2012-12-31 | 2014-09-17 | 中国人民解放军总参谋部第五十四研究所 | VoIP网络协议构件化方法 |
CN103105169B (zh) * | 2013-01-25 | 2016-06-01 | 广东翼卡车联网服务有限公司 | 一种使车载导航仪导航板与地图软件兼容的方法和系统 |
CN103529821B (zh) * | 2013-09-29 | 2016-05-11 | 重庆邮电大学 | 一种基于can总线的诊断协议栈系统的可配置化方法及装置 |
CN104660570A (zh) * | 2013-11-22 | 2015-05-27 | 华耀(中国)科技有限公司 | 一种可扩展的aaa通信系统及方法 |
CN104539506A (zh) * | 2015-01-27 | 2015-04-22 | 浪潮集团有限公司 | 一种网络传输服务构件及网络传输系统 |
CN105245369B (zh) * | 2015-10-12 | 2017-05-17 | 天津市普迅电力信息技术有限公司 | 一种支持多传输协议的组件发布容器方法 |
CN109240683A (zh) * | 2018-07-13 | 2019-01-18 | 中建三局第二建设工程有限责任公司 | 模块化应用服务的总线架构计算机编程设计系统及方法 |
CN111030747B (zh) * | 2019-11-22 | 2021-08-31 | 中国科学院国家空间科学中心 | 一种基于FPGA的SpaceFibre节点IP核 |
CN114443115B (zh) * | 2020-11-05 | 2024-07-12 | 沈阳中科博微科技股份有限公司 | 一种仪表构件化模型的构建方法及其可配置方法 |
CN115442913A (zh) * | 2022-08-15 | 2022-12-06 | 浙江猫精人工智能科技有限公司 | 协议接入方法、通信方法、开发设备、网关及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1080751A (zh) * | 1992-07-01 | 1994-01-12 | L·M·埃利克逊电话股份有限公司 | 独立实现的接口说明系统 |
-
2004
- 2004-01-01 CN CNB2004100156660A patent/CN100377556C/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1080751A (zh) * | 1992-07-01 | 1994-01-12 | L·M·埃利克逊电话股份有限公司 | 独立实现的接口说明系统 |
Non-Patent Citations (4)
Title |
---|
A Guide to the Implementation and Modification ofthe Linux Protocol Stack. Glenn Herrin.Linux IP Networking. 2000 * |
The Design and Implementation of HierarchicalSoftware Systems with Reusable Components. Don Batory,Sean O'malley.ACM Transactions on Software Engineering and Methodology,Vol.1 No.4. 1992 * |
The x-Kernel: An Architecture for ImplementingNetwork Protocols. Norman C. Hutchinson, Larry L. Peterson.IEEE TRANSACTIONS ON SOFTWARE ENGINEERING,Vol.17 No.1. 1991 * |
基于构件的软件开发原则与过程. 张诚洁.烟台师范学院学报(自然科学版),第3期. 2003 * |
Also Published As
Publication number | Publication date |
---|---|
CN1556641A (zh) | 2004-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100377556C (zh) | 通信协议的构件化实现方法 | |
US7072946B2 (en) | Network router management interface with API invoked via login stream | |
AU677555B2 (en) | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes | |
CN101826987B (zh) | 一种基于融合开放网络的混合服务支撑系统及方法 | |
CN106559251A (zh) | 一种基于yang模型的编译方法、及对应的接口、组件和系统 | |
US20020161907A1 (en) | Adaptive multi-protocol communications system | |
US20060036755A1 (en) | Meta-protocol | |
JP2006134335A (ja) | スマートカードと協働する「web」タイプのブラウザを用いたオブジェクトへのアクセスシステム | |
CN102420697A (zh) | 一种可配置服务的综合资源监测管理系统及其方法 | |
EP1387262A1 (en) | Method to generate synchronization contracts for software components and web services | |
Sneed et al. | Creating web services from legacy host programs | |
Flurry et al. | The IBM application framework for e-business | |
Matthijs | Component framework technology for protocol stacks | |
CN103677854A (zh) | 适用于云计算环境下的osgi-web框架的设计方法和系统 | |
Mennie | An architecture to support dynamic composition of service components and its applicability to Internet security. | |
Tarkoma et al. | Spice: A service platform for future mobile ims services | |
Tolk | Metamodels and mappings–Ending the interoperability war | |
Keller et al. | Using ODP as a framework for CORBA-based distributed applications management | |
Roth | Preventing Wheel Reinvention: The psgconf System Configuration Framework. | |
KR100629018B1 (ko) | 기업용 무선 어플리케이션 서비스의 레가시 인터페이스시스템 및 운용방법 | |
Brown | Dynamic apache with ajax and json | |
Keller et al. | Dynamic management of Internet telephony servers: a case study based on JavaBeans and JDMK | |
Rosenauer | A standards-based approach to dynamic tool integration using Java business integration:[a redesign of the toolnet framework built on enterprise integration standards] | |
KR100495834B1 (ko) | Snmp 연산을 xml 연산으로 추상화하는 중계 시스템및 그 중계 방법과 이를 이용한 컴퓨터 프로그램 제품 | |
Rahkila et al. | Experiences on integration of network management and a distributed computing platform |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080326 Termination date: 20120101 |