1、基于中间件架构的适配器设计和开发- 1 -基于中间件架构的适配器设计和开发摘要 随着计算机技术迅速发展,特别是 Internet 及 WWW 的出现,使计算机的应用范围更为广阔,许多应用程序需在网络环境的异构平台上运行。为解决分布异构问题,人们提出了中间件(middleware)的概念。中间件是位于平台(硬件和操作系统)和应用程序之间的通用服务,这些服务具有标准的程序接口和协议。这个适配器利用 MQ 中间件屏蔽各种平台及协议之间差异的特性以及 Tuxedo 在分布、异构环境下提供保证交易完整性和数据完整性的特性来实现应用程序之间的协同,同时利用 C+语言的封装特性,对 MQ 和 Tuxedo
2、的 api 进行封装,然后通过一个主控制模块对其进行调用,实现了 2 个不同中间件数据报文的交换以及相互之间的通信。关键词 中间件 MQ Tuxedo基于中间件架构的适配器设计和开发- 2 -Abstract With the rapid development of IT ,especially the appearance of Internet and WWW, the computer is being used in more and more areas, so there are a lot of application programes needed to be run in
3、 different systems which based on Internet. People used the idea of middleware to solve the problems which cased by the distributing systems. The middleware is the common services between platforms( hareware and OS) and applications. These services include standard interfaces of the applications and
4、 protocols. Among the middlewares, the MQ can shield the differences among platforms and protocols.and the Tuxedo can provide the integrality of trade and date under the distributed systems and different systems.And this adapter uses the attribute of C+ language that can packet the apis of MQ and Tu
5、xedo.And while The adapter succeed in using these apis,that means the attributes of MQ and Tuxedo have maken the exchange and communication between these two middlewares come true.Key Words middleware MQ Tuxedo基于中间件架构的适配器设计和开发- 3 -目 录摘要 - 1 -Abstract- 2 -第一章 引 言 - 4 -1.1 系统开发背景 - 4 -1.2 系统涉及中间件的介绍 -
6、 6 -1.3 技术支持 - 7 -1.3.1 C+语言介绍 - 7 -1.3.2 开发工具 Microsoft Visual C+介绍 - 7 -第二章 项目详细设计 - 8 -2.1 系统的定位 - 8 -2.2 系统整体流程图 - 8 -2.3 适配器系统数据流程图 - 9 -2.4 系统各个模块设计 - 10 -2.4.1 MQ 模块设计 - 10 -2.4.2 Tuxedo 模块设计 - 14 -2.4.3 主控模块设计 - 16 -2.4.4 数据接收流程图 - 17 -2.4.5 组包发送流程图 - 18 -2.5 系统功能描述 - 19 -第三章 系统部分代码和分析 - 20
7、-3.1 MQ 模块部分代码 - 20 -3.2 Tuxedo 模块部分代码 - 24 -第四章 总 结 - 26 -致 谢 - 27 -参 考 文 献 - 28 -基于中间件架构的适配器设计和开发- 4 -第一章 引 言1.1 系统开发背景随着企业的 IT 环境越益复杂,企业中可能会拥有多种操作系统、不同的数据库、异构的网络环境以及若干应用等,那么如何把它们结合成一个有机的协同工作整体,真正实现企业跨平台分布式应用呢?中间件便是解决之道,它用自己的复杂换取了企业应用的简单。那么,复杂的中间件到底包含哪些种类?分别完成什么功能呢? 九十年代初客户机/服务器计算模式开始成为主流技术,将数据统一存
8、储在数据服务器上,而有关的业务逻辑都在客户端实现,即所谓胖终端的解决方案,这种两层结构的模式大大阻碍着系统的发展,单一的服务器结构紧密地依赖供应商;数据存取受到限制;难以扩展到大企业广域网或国际互联网;也难以管理客户端的机群。随着用户业务需求的增长及Internet/Intranet 的普及,将以三层或四层体系结构取代。三层结构就是把用户端的业务逻辑独立出来,并与数据库服务器中存储过程合并在一起,构成应用层,以提高计算能力,实现灵活性。在这种结构中用户端仅仅是处理图形用户界面(GUI),而目前趋势是采用具有交互功能的浏览器,即形成瘦终端的工作方式,为此,中间又增加了一层,称为 Web 服务器层
9、,形成了四层体系结构。 这类多层结构的分布系统,各服务器和终端机之间都是通过网络连接起来的,并有大量信息和数据进行传递。对每个应用系统而言,在设计和实现时需要开发的,仅是在应用服务器上的业务逻辑部分的软件,除此之外,还必须要设计处理分布系统所特有的功能的软件,而目前的系统软件(操作系统和支撑软件)都不支持。为此出现了中间件(middleware),它是基础软件的一大类,属于可复用软件的范畴;顾名思义,中间件处于处于操作系统软件与用户的应用软件的中间(如图 1-1 所示) 。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、
10、高效地开发和集成复杂的应用软件。基于中间件架构的适配器设计和开发- 5 -图 1-1 中间件产品的定位在众多关于中间件的定义中,比较普遍被接受的是 IDC 表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。IDC 对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。总之,中间件产品使设计者集中设计与应用有关的部分,大大简化了设计和维护工作。目前主要的中间件包括以下几种:1. 通信
11、处理(消息)中间件2. 事务处理(交易)中间件3. 数据存取管理中间件4. Web 服务器中间件5. 安全中间件6. 跨平台和构架的中间件7. 专用平台中间件基于中间件架构的适配器设计和开发- 6 -1.2 系统涉及中间件的介绍系统主要涉及到的一个中间件产品是 IBM 公司的 MQSeries。MQSeries 是 IBM 公司利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台。消息中间件(MOM)产品主要有以下一些优点:1. 讯程序可在不同的
12、时间运行 程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。2. 用程序的结构没有约束:在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。3. 消息放入消息队列或从消息队列中取出消息来进行通讯,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是 MOM 的任务,程序不直接与其它程
13、序通话,并且它们不涉及网络通讯的复杂性。另一个涉及到的中间件产品是 BEA 公司的 Tuxedo。Tuxedo 是在企业、Internet 这样的分布式运算环境中开发和管理三层结构的客户/服务器 (C/S)型关键任务应用系统的强有力工具。它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的应用系统。BEA 公司的 Tuxedo 是企业、 Internet 分布式应用中的基础主干平台,它提供了一个开放的环境,支持各种各样的客户、数据库、网络、遗留系统和通讯方式。基于中间件架构的适配器设计和开发
14、- 7 -1.3 技术支持1.3.1 C+语言介绍C+ 是脱胎自 C 语言的一种中级语言 . 从计算机角度看, 它可以嵌入 ASM 等低端语言; 从面向对象的程序设计角度看, 它有具备 OOP(Object Oriented Programming)的三个基本特征 - 抽象, 封装和继承。1.3.2 开发工具 Microsoft Visual C+介绍Viusal C+ 是微软公司出品的一款优秀的 C+开发工具。Visual C+具有和系统底层极好的兼容性和稳定性,VC 同时极好地集成了 windows 的各种 api,给我们编基于 windows 的程序提供极大的方便和提高效率。同时,利用
15、VC 集成的 MFC 框架开发程序仍然是目前开发桌面应用的主流模式。基于中间件架构的适配器设计和开发- 8 -第二章 项目详细设计2.1 系统的定位图 2-1 适配器在 ECIF 中的定位图 2-1 显示了适配器在 ECIF 系统中的位置,远程系统通过 MQ 中间件传输数据,本地系统通过 Tuxedo 和数据库进行交互。而适配器使这两个中间件的通信得以实现,从而使整个系统正常运行。2.2 系统整体流程图模块 1 : 对M Q 的 a p i 进行进行封装模块 2 : 对T u x e d o 的 a p i进行封装模块 3 : 整个流程的总控 , 调用模块 1 和模块 2 的接口 , 实现数据
16、的传输基于中间件架构的适配器设计 流程图I B M 公司的 M Q 中间件B E A 公司的 T u x e d o中间件图 2-2 系统设计图图 2-2 是整个系统设计的一个流程图,主要包括了 3 个模块:模块 1 的主要职责是对 MQ 的 api 进行封装,他一边连接的是 IBM 公司的中间件产品-MQSeries,另一边连接的是主控模块。模块 2 的主要职责则是对 Tuxedo 的 api 进行封装,他以便连接的是 BEA 公司的中间件产品Tuxedo,另一边是主控模块。基于中间件架构的适配器设计和开发- 9 -而模块 3 是主控模块,包括对模块 1 和模块 2 的调用,并实现通信,而且
17、把返回的消息输出到一个窗口上。2.3 适配器系统数据流程图图 2-3 适配器数据流程图 2-3 是数据在适配器传输的一个流程图,可以看到,在 MQ 里是未解析的数据,通过调用MQ 接口来取得 MQ 服务器上的数据,然后进行解析,接着将解析后的数据放入暂存数据库。然后是通过读取暂存数据库里的数据,对数据进行处理,即生成 tuxedo 能处理的需要的数据,并通过 DataServer 里的类把处理好的数据传到 Tuxedo 服务器上,这样就实现了两个中间件之间的数据传输。2.4 系统各个模块设计2.4.1 MQ 模块设计MQ 模块设计主要是一个 CMQ 类,主要描述如下表 2-1基于中间件架构的适
18、配器设计和开发- 10 -表 2-1 CMQ 的类描述类名称 CMQ类描述 适配器(EAI)的接口类父类 无子类 无约束条件 无这个类里面的主要职责就是封装了对 IBM 公司的 MQSeries 的操作类定义的属性包括了以下一些:String m_strQueueManager; /Q manager 的名字String m_strInputQueue; /输入 q 的名字String m_strOutputQueu; /输出 q 的名字String m_strChannel; /通道的名字ImqQueueManager m_QueueManager; / Queue managerImqQu
19、eue m_queue; / QueueImqMessage m_msg; / Data messageImqGetMessageOptions m_GetMsgOption; / Get message optionsImqChannel m_Channel; / MQ 通道MQOD od = MQOD_DEFAULT; /* Object Descriptor */MQOD od = MQOD_DEFAULT; /* Object Descriptor */MQMD md = MQMD_DEFAULT; /* Message Descriptor */MQPMO pmo = MQPMO_DEFAULT; /* put message options */MQHCONN Hcon; /* connection handle */MQHOBJ Hobj; /* object handle */MQLONG O_options; /* MQOPEN options */MQLONG C_options; /* MQCLOSE options */