论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
1.3 模块化和可扩展性
在不同的应用中,所用的协议和通信组件不尽相同,要求在链路管理层不做过多的改动,既能加入新的协议模块和通信媒介模块。这样就需要设计和实现做到模块化,且各模块和链路调度模块之间必须隔离开。链路调度模块通过尽量统一的接口对各模块进行调度和管理。微软的组件对象模型技术(COM)就提供了这种特性。OPC规范应用COM/OLE技术实现了模块化和可扩展性,但OPC规范主要针对工业控制领域,在本设计中无法完全实现,故直接采用COM技术,借鉴OPC的设计思想构建本设计。每个协议模块和通信媒介模块均是一个单独COM组件,通过接口和回调接口与链路调度模块进行通信,链路管理模块以总线方式实现对协议模块和媒介模块的管理。而协议组件和通信媒介组件之间的通信则由链路调度模块转发。
所面临的难点之一在于协议组件和通信媒介组件可以有相同的数据接口,但是这些组件的特性千差万别,在设置参数和获得当前状态方面无法做到大致统一的接口,可以通过组件自解析的方式解决。链路管理模块和这些组件之间的参数用字符串或数组的方式传递,各组件在得到这些字符串后根据本身的情况进行解析,得到特定的参数。
难点之二,如前文所述,通信媒介组件与物理层密切相关,很难做到支持并行化的输入。在多条独立链路不同的线程中同时使用同一通信媒介时,各链路对物理层的操作将产生冲突,必须对通信媒介组件的数据输入进行串行化处理(排队),使同一时刻,只处理一个输入。在COM组件的多线程模型中,单线程套间(STA)模型有如下特点:如果某COM组件的对象生成在单线程套间中,则只有与同在一个套间特定的线程可以访问该对象不在同一套间的其他线程必须通过列集(marshal)技术才能访问该对象。这种技术基于COM ORPC协议和消息阶列机制,自动把对该对象的访问串行化了。所以如果每个通信媒介组件都只有一个对象且生存在STA中,则通过列集技术它的访问自动被串行化。
1.4 媒介模块和协议模块的设计
媒介组件封装了与网络平有关的操作,向上提供了建链、断链、发送数据、接收数据(回调)、参数设置、状态改变报告(回调)、参数查询、状态查询等接口。
例如在高速公路网络中,专线网络和拨号线后备链路都基于IP网络,Windows套接字接口(Winsock)提供了一个基本与协议无关的传送