基于ICE中间件的应用系统通信框架设计

2017-03-06 00:05李雪玲
软件导刊 2017年1期
关键词:应用系统

李雪玲

摘要摘要:在介紹ICE中间件的基础上,提出了基于ICE的应用系统通信框架设计方案。该框架负责系统各部分之间的通信,在此框架基础上可以进一步扩展系统功能。

关键词关键词:ICE中间件;应用系统;通信框架

DOIDOI:10.11907/rjdk.162129

中图分类号:TP319文献标识码:A文章编号文章编号:16727800(2017)001009102

0引言

中间件是位于客户机/服务器的操作系统之上的服务程序,这些服务程序具备标准的接口和协议。相连接的系统即使是不同的OS和硬件,也可以有符合对应接口和协议规范的实现方式。在具体应用程序的开发过程中,利用中间件提供的跨平台、统一的接口来屏蔽操作系统的多样化,以此实现稳定、安全的支撑平台,从而在异构系统间进行信息交换[1]。当前主流的面向对象中间件包括Sun公司的EJB/J2EE、Microsoft的COM+/DNA和OMG的CORBA/OMA等,都有其各自的特点。ZeroC公司于2003 年开发了一种新的轻量级面向对象的分布式中间件ICE ( Internet Communication Engine)[2]。1ICE中间件简介

ICE 作为中间件平台为构建面向对象的客户/服务器应用提供支持[3]。通过Slice (Specification Language for Ice)语言来描述(不是实现)各种类型和对象接口,再由编译器编译到特定实现语言的类型定义和API,使用其提供的应用功能,并与ICE进行交互。由于这种抽象机制,它提供了跨平台、跨语言的解决方案:客户端和服务器端可以用不同的编程语言来实现,可以在多种操作系统和硬件架构上运行,并可以采用不同的网络通信技术[4]。目前,最新版本为3.6(ICE-3.6.2在2016年4月发布),支持C++、JAVA、JavaScript、VB、C#、PHP、Ruby、Python等编程语言,并可支持Windows、Unix、Linux、Solaris、OS X等操作系统。

ICE程序是C/S架构的程序,由客户端和服务器端组成,其内部逻辑结构如图1所示。客户端与服务器端程序都是由应用代码(客户应用和服务器应用)、库代码(客户 ICE 核心、服务器ICE核心和对象适配)以及根据Slice语言定义生成的代码(代理和骨架)混合而成[5]。

2.2通信接口定义

在传统的网络应用系统开发中,开发者需要花费大量时间用于底层通信程序的实现。例如根据客户端和服务器端各自的操作系统选用与之对应的SOCKET库和API,还需考虑采用TCP或UDP协议进行通讯时的实现细节等。本文研究的基于ICE中间件的通信框架(见图2)可以便利地实现应用程序间的通信与数据传输,程序间通信的接口(图中带数字的圆圈)由ICE的SLICE语言定义,对通信双方是透明的。其中,端口1、3、5、7是程序作为ICE通信的发起端时操作系统为其分配的端口号(每次通信可能会不一样);端口2、4、6、8是程序作为ICE通信的接收端时用于监听的端口号(固定、唯一的)。

程序中,首先声明一个类型为 Ice::Communicator 的 AppSysIC 变量,通过调用Ice::initialize进行初始化,返回一个指向Ice::Communicator对象的指针;接着调用 Communicator 实例的AppSys AdapterCmd,创建一个操作命令适配器,用于监听用户操作请求,并调用Communicator 实例的AppSys AdapterData,创建一个数据传输适配器,用于监听用户的数据传输请求;实例化AppSysWorkI对象,创建Servant;将实例化的Servant作为参数传递给适配器的add方法;调用适配器的activate方法激活适配器,服务器则开始处理来自客户端的请求;最后,通过调用wait For Shutdown方法挂起发出调用的线程,直至终止。

猜你喜欢
应用系统
企业云平台建设研究