9512.net
甜梦文库
当前位置:首页 >> 计算机软件及应用 >>

Tuxedo中间件在铁通业务系统中的应用与实现


Tuxedo中间件在铁通业务系统中的应用
袁启元 (中国铁通集团有限公司无锡分公司, 江苏无锡 214002) 摘要: 介绍了交易中间件的概念, Tuxedo 中间件的特点; 分析铁通计费营业支撑系统 的体系结构, 提出了利用Tuxedo整合其硬软资源的解决方案; 并给出了Tuxedo的服务器端 和C/S 模式客户端和B/S 模式客户端的实现模板。 关键词: 中间件 Tuxedo 铁通 计费营业系统

1、 引言
目前, 大型数据库应用系统大多采用以三层体系结构为基础的客户机/服务器应用模 式。而实现三层客户机/服务器应用模式的关键技术就是中间技术。Tuxedo是世界最大的独 立中间件厂商美国BEA 公司的一种事务处理(交易)中间件产品, 在电信、银行、交通、证 券、投资、政府等部门的大规模事务处理领域中有着广泛的应用。它为关键业务应用系统 提供了一个开放式的最佳环境, 支持各种各样的客户、数据库、网络、遗留系统和通讯方 式, 能够在三层客户机/服务器环境下整合各种异构平台, 通过联机事务处理, 保证交易的 完整性和数据的一致性。江苏铁通业务系统是一个典型的分布式异构系统, 以营业系统和 计费系统为核心, 其他业务系统例如资源管理系统、代理商系统, 网上营业厅系统, 银行代 收费互联系统等均以此为基础来展开。以Tuxedo交易中间件为基础的三层客户/服务器应用 模式来实现各个应用系统之间的互操作和信息共享; 从而达到如下的三个目的: 第一, 性 能好、伸缩强、可靠性高、安全、可管理、开放性好; 第二, 支持Web; 第三, 融合现有应 用, 保护原有投资。 本文接下来先对中间件和Tuxedo做比较详细的阐述; 在分析江苏铁通业 务系统体系结构问题的基础上, 提出基于Tuxedo中间件的解决方案; 最后给出用Tuxedo中 间件编程的模板。

2、Tuxedo中间件
2.1中间件 众多关于中间件的定义中, 比较普遍接受的是IDC 的表述: 中间件是一种独立的系统 软件或服务程 序, 分布式应用软件借助这种软件在不同的技术之间共享资源; 中间件位于客户机/服务器 的操作系统之上, 管理计算资源和网络通信。 介于客户机与服务器之间的夹层, 它突破了二 层C /S结构的局限性, 为构建大规模、高性能、分布式C /S应用程序提供了通信、事务、安 全、容错等基础服务, 它屏蔽了底层技术细节, 使应用程序开发不必再从底层做起, 以自身 的复杂性换来了应用程序开发的简单。中间件是构造三层结构的基础, 它的主要功能包括: 第一, 负责客户机和服务器之间的联接和通讯; 第二, 提供一个三层结构的应用开发和运 行平台; 第三, 集成多种异构的服务器和数据源; 第四, 提供负载均衡、动态伸缩、数据依 赖路由等功能为代表的管理模式; 第五, 保证全局事务完整性; 第六, 保证大规模并发处理 响应; 第七, 对异构系统互联的透明支持; 第八, 保护数据安全性。使用中间件能够带来如 下的好处: 首先, 快速投放市场; 第二, 节省应用开发费用; 第三, 减少管理开销; 第四, 降 低系统开发失败率; 第五, 易于扩展现有系统; 第六, 应用集群, 保证高可靠性; 第七, 软 件维护方便; 第八, 提高应用质量。中间件产品可以分为交易型、消息型、CORBA 型和容 器型四种。其中流行的交易型中间件有BEA 的TUXEDO, IBM 的C ICS和东方通公司的

TongEasy; 消息型中间件有IBM 的MQ、BEA 的M essageQ 和东方通公司的TongLink; CORBA型也叫基于ORB 的中间件, 有Borland的Visiboker和国防科大的starbus; 容器型的 中间件有BEA 公司的Weblogic和IBM的WebSphere, 这两个中间件都是基于J2EE 标准。 2.2Tuxedo简介 最早具有中间件技术思想及功能的软件是IBM 的CICS, 但由于CICS不是分布式环境的 产物, 因此人们一般把Tuxedo作为第一个严格意义上的中间件产品。Tuxedo ( Transaction for Unix Environment Distributed Oriented, 意为: 基于UNIX 的分布式交易系统)是1984 年在当时属于AT&T的贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上 获得像今天一样的成功, Tuxedo 在很长一段时期里只是实验室产品, 后来被Novell收购, 在经过Novell并不成功的商业推广之后, 1995年被现在的BEA 公司收购。 尽管中间件的概念 很早就已经产生, 但中间件技术的广泛运用却是在最近10年之中。Tuxedo 是一种事务处理 (交易)中间件产品, 它是一个基于开放平台的事务处理和消息传递中间件。Tuxedo是在企 业、 Internet这样的分布式运算环境中开发和管理三层结构的C/S(客户/服务器)型关键任务应 用系统的强有力工具。 它具备分布式事务处理和应用通信功能, 并提供完善的各种服务来建立、运行和管理关键 任务应用系统。开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的 应用系统。Tuxedo 是企业、Internet分布式应用中的基础主干平台。它提供了一个开放的环 境, 支持各种各样的客户、数据库、网络、遗留系统和通讯方式。 2.3Tuxedo的特点 Tuxedo具有如下的特点: ①丰富的通信机制、位置透明性、高性能连接。其中有七种通讯 机制: 同步调用、异步调用、管道、会话、广播通知、队列、发布订阅、三层结构应用的 通讯管道。②与其他系统的平滑的互操作性。③交易管理 ④负载平衡、数据依赖型路由。 ⑤高可用、安全、压缩。⑥队列管理、优先级。⑦易开发管理升级、扩展。⑧应用可管理 性。⑨Internet网上交易。

3、Tuxedo在电信业务系统中的应用
传统的通信行业营业支撑是基于典型的客户客户/服务器服务器模式设计的。这种设计把整 个业务系统分成两个部分, 一个是CRM 系统, 服务器端用Sybase数据库, 客户端用Unix 终端程序进行业务受理。用来受理电话, ADSL的新装、移机、拆机、停机、复机、改名、 过户等业务。另一个是计费系统, 用来受理用户的预缴话费和每月的出账。服务器端用 Oracle数据库, 客户端用Unix 终端程序进行业务受理。从分析可以看出由于历史的原因原 通信行业营业支撑系统的CRM 业务模块和计费模块两大部分在数据库层次相互隔离。 CRM 用Sybase数据库, 计费用Oracle数据库。CRM 和计费都通过独立的Unix终端办理业 务, 这两个相互隔离的系统怎样进行交互呢? 利用Tuxedo可以解决这个问题, 在计费端发 布Tuxedo服务, 然后在CRM 端用后台客户端程序调用计费端发布的服务, 不断地把CRM 受理信息如, 电话, ADSL的新装, 移机, 拆机, 改名, 过户, 改资费等信息更新到计费数据 库, 最终实现CRM 和计费用户资料的同步和信息的共享, 以便计费端利用最新的受理数 据进行计费合账。 随着业务的发展和B/S模式的流行, 为CRM和计费的部分业务和新的扩展 业务提供B/S模式操作界面势在必行, 如基于CRM 的代理商系统, 网上营业厅、数据业务 系统和基于计费数据库的网上缴费系统,优惠系统。为了整合现有的硬件软件资源以及考虑 到负载平衡和安全性等因素的影响, 最终也采用了基于Tuxedo中间件的三层体系结构。分 析以往通信系统显示, 经过业务扩展的通信业务支撑系统在原来的数据库层次上又覆盖了

一个Tuxedo中间件层, 把基于CRM 的代理商系统, 网上营业厅、数据业务系统和基于计费 数据库的网上缴费系统,优惠系统的服务发布在中间件服务器上, 在中间件之上又增加了 Web应用层(包括web容器和浏览器),Web应用层调用中间件服务器上的服务最终以网页的 形式展现给用户或营业厅人员。最终形成了典型的基于Tuxedo中间件的三层体系机构。 Tuxedo中间件层用来在网上暴露服务, 屏蔽底层的硬件, 操作系统,数据库的差异。从而达 到了以下三个主要目的; 第一, 性能好、伸缩强、可靠性高、安全、可管理、开放性好; 第二, 支持Web; 第三, 融合现有应用, 保护原有投资。

4

Tuxedo的实现模板

4.1 Server实现模板 一个Server编译之后是一个可执行文件, 但必须由Tuxedo调用才能发挥作用。一个Server中 可以包含多个Service, 客户端与Tuxedo 联系的也是Service。Server的启动由Tuxedo 自动协 调。以下是一个典型 的用C/C + + 实现的Server模板。 # inc lude < atm .i h> /* Tuxedo ATM I函数头文件* / # inc lude < userlog. h> /* Tuxedo日志函数头文件* / /* C /C + + , Un ix, 数据库, 业务操作类头文件* / /* * * * * * * * * * * Server启动初始化* * * * * * * * * * * / int tpsvrinit( int argc, char* * argv) { return connectdb( ); /* 连接数据库等处理* / } /* * * * * * * * * * * Server结束处理* * * * * * * * * * * / void tpsv rdone( ) { disconnectdb( ); /* 断开数据库连接等处理* / } /* * * * * * * * * * * Serv ice * * * * * * * * * * * / Serv iceName( TPSVCINFO * rqst) {/* 步骤一: 从缓冲区提取输入参数* / FBFR32 * iBuf = ( FBFR32* ) rqst - > data; Fget32( iBu,f FIELDID, ( FLDOCC32) 0, ( char* ) name, 0) ; /* 步骤二: 用输入参数调业务处理函数得到输出* / /* 步骤三: 把输出数据填入输出缓冲区* / FBFR32* oBuf = ( FBFR32* ) tpalloc( "FML32", NULL, 3200) ; /* 分配内存* / Fadd32( oBu,f SDATA, sDATA, 0); /* 把结果放入输出缓冲* / /* 步骤四: 采用Tuxedo函数返回输出缓冲区的数据* / tpreturn ( TPSUCCESS, 0, ( char * ) oBu f,f 0L, 0 ) ; } Server封装了main( )函数, 并以tpsvrin it( )和tpsvrdone( )两个函数来实现Server的启动和卸 载事件的扩展。 因此可以在tpsvrinit( )函数里自行编写代码完成Server的初始化处理, 例如想 Server保持与数据库的长连接的话, 可以在其中调用连接数据库的函数, 这样整个Server的 全部Service都将共享同一个数据库连接。同时对应的需要在tpsvrdone( )中调用关闭数据库 连接的函数。当然, 数据库的连接和关闭也可以在Serv ice中各自实现, 而不在tpsvrinit( )中 实现。在一个Server里按照业务处理逻辑可以封装多个serivce供客户端调用。作为模板这里 只写出了一个Service叫“ServiceName”作为例子。每个Service封装一个独立的业务逻辑。

在每个service中遵循以下四个步骤来封装一个这样的服务: 步骤一从缓冲区提取输入参数, 一般用Fget32 函数在TPSVCINFO 结构里用参数标识来提取, 服务里的输入和输出参数标 识以及在客户端调用时使用的输入和输出参数标识都是在写服务之前在服务端定义的宏, 并且定义了这个宏要标识的数据的数据类型, 如in,t double, string 等。步骤二: 用输入参数 调业务处理函数得到输出; 三: 把输出数据填入输出缓冲区; 四: 采用Tuxedo函数返回输出 缓冲区的数据。通常我们在第二步可以有两种方式来处理业务逻辑, 第一种方式把业务逻 辑封装在专门处理业务的类的函数里面, 这样我们在封装服务的时候只需要创建这个类的 对象, 调用相应的函数即可。这种方式可以有效利用原来已经存在的业务代码。但要注意 一个问题, 如果要在一个服务里调用多个数据库操作的函数, 为了保证事务的一致性, 不 能在各个单独的函数里面设置检查点、提交或回退, 应该在在调用第一个函数前在服务里 面设置事务检查点。在所有的被调用的业务函数之后统一进行提交或回退。第二种方式是 直接在服务里面写业务处理代码对数据库进行操作。这种方式业务逻辑不够清楚, 不能充 分使用已有的业务代码, 而且写好只后还要进行大量的业务正确性测试。 步骤三: 把输出数 据填入输出缓冲区。步骤四: 采用Tuxedo函数返回输出缓冲区的数据。 4.2 C/S结构客户端实现模板 这是最常见的调用方式之一。比如江苏铁通的CRM和计费之间的后台交互就是用的这种方 式。计 费端提供服务, CRM端作为客户端在后台调用, 实现信息的同步与共享。另外, 在和银行的 交互上也是基于这种方式, 银行作为服务端, 铁通作为客户端。下面是其实现的模板 # inc lude < atm .i h> /* TUXEDO ATM I函数头文件* / # inc lude < userlog. h> /* TUXEDO 日志函数头文件* / ..../* 其他头文件* / vo id Example ( ... ) { /* 步骤一: 初始化Tuxedo环境* / tpinit( 0); /* 步骤二: 把输入参数输入缓冲区* / FBFR32* Buf = ( FBFR32 * ) tpalloc( "FML32", NULL, 3200); /* 分配内存* / Fadd32( Bu,f SDATA, sDATA, 0); /* 把参数放入输入缓冲* / / /步骤三: 调用tuxedo服务 tpcall( ServiceName ", bu,f 0, &bu,f 0, 0) ; / /步骤四: 取输出参数Fget32( Bu,f FIELD ID, ( FLDOCC32) 0, ( char* ) name, 0) ; tpfree( buf); tpterm ( ) ; ..... } 如模板所示, 这里分成四个步骤来调用Tuxedo服务。 首先初始化Tuxedo环境, 主要是取得操 作系统 中定义的Tuxedo环境变量, 诸如服务器IP地址和端口等环境变量。 步骤二: 把输入参数输入 缓冲区; 步骤三: 调用tuxedo服务; 步骤四: 得到调用后的输出参数; 最后进行调用后的后 续处理。参数提取和设置是按中间件服务封装的时候定义的参数标识来进行的。 4.3 B/S结构客户端实现模板 B /S结构的客户端是另一种常见的客户端之一, 用网页来调用Tuxedo中间件都会用到这种

方式, 这里 的模板用java语言通过Welogic应用层调用Tuxedo中间件服务。 下面是一个典型的用java语言 通过TuxedoJolt组件调用Tuxedo中间件服务的客户端封装函数的模板。 import bea. jol.t poo.l * ; /* 引入其他bea的Jo lt组件相关的包* / /* 引入其他java或E JB 包* / public class Examp le { ...... public void functionName( ... ) { / /步骤一: 初始化连接池 if ( jo ltSession = = null) in itJo ltPool( ); / /获取在W ebLogic服务定义好的连接池 / /步骤二: 设置输入参数到DataSet对象 DataSet request = new DataSet( ) ; reques.t setVa lue( "FIELD", new Double( 123) ) ; /步骤三: 调用Tuxedo服务 Resu lt rs = transact( " Serv iceN ame", request) ; / /步骤四: 取输出参数 Stringstr = ( String) rs. getVa lue( " SDATA ", 0, " " ); ........ } ....... } 如模板函数所示, 我们要调用Tuxedo中间件就必须调用bea提供的Jolt组件包, 所以模板一 开头我们 引入bea.jol.tpool包, 然后在封装函数中首先调用Jolt组件函数initJoltPoo l初始化连接池对 象。连接池对象包括了在WebLogic服务器上配置的Tuxedo中间件的IP地址和端口等访问信 息。以便真正调用服务的时候使用。然后用DataSet设置输入参数, 第三步用Jolt组件函数 transact调用Tuxedo中间件服务, 这里输入调用参数, 并按服务名调用, 得到输出结果对象。 最后一步, 用上一步得到的结果对象提取Tuxedo中间件返回的输出参数。这里的参数提取 和设置是按中间件服务封装的时候定义的参数标识来进行的。例如这里的SDATA标识。 5、总结与展望 Tuxedo作为中间件, 保证了数据准确可靠的传送和事务的完整性, 对大规模并发处理 能够及时响应,在实际应用中系统稳定, 效果理想。当前, 我国使用计算机及网络技术实现 的电信业务系统, 基本上全都使用了中间件技术。 Tuxedo作为一个著名的交易中间件, 在国 内已经得到广泛的使用。随着国内电信业信息集中的步伐推进, 以及网上电信业务的发展, 中间件必将发挥更大的作用。

参考文献:
[ 1] 冯元, 李增智. BEA Tuxedo 应用开发与系统配置[ J]. 微电子学与计算机, 2003, 20( 12): 54- 56, 60. [ 2] BEA system, Inc. Prog ramming BEA Tuxedo ATM IApplications Using C[ EB /OL]. http:// e- docs.bea.com. [ 3] BEA system, Inc. Three_tier architecture and Tuxedo[M ] . 1998. [ 4] Internatinal System s Groups, Inc. Middleware White Paper[ Z]. 1997.

[ 5] 马雪英. 基于BEA中间件设计三层结构M IS系统[ J]. 计算机应用与软件, 2004, 21( 6): 123- 125. [ 6] 徐春金, TUXEDO中间件开发与配置[M ]. 北京: 中国电力出版社, 2003. [ 7] GUIDE International Corporation. Gu ide Business Ru les Project Final Repo rt[ R]. 1995. [ 8] 徐德华, 刘仲英. 信息系统分析方法的发展研究[ J]. 计算机工程, 2001, 27( 11): 6- 8.



更多相关文章:
tuxedo中间件
tuxedo中间件_小学教育_教育专区。tuexdo中间件的使用,适用与银行业务的开发BEA...分布式运算环境中开发和管理三 层结构的客 户/服务器型关键任务应用系统的强有...
基于中间件技术的农商银行网银系统设计与实现 开题报告...
研究如何利用 SOA 平台中间件 Tuxedo 技术对现存的诸多银行业务系统进行整合, 研究如何在不破坏原有服务 的基础上,整合接口功能,明确定义接口,引入新的服务,优化服务...
Tuxedo培训教材
Tuxedo 基础培训 1. 概述 TUXEDO 基本特性介绍 ??中间件的基本概念 ??TUXEDO ...就演变成了分布式系统的三层结构: 将业务逻辑从客户端应用中分离出来,组成业务...
由浅入深Tuxedo管理
由浅入深Tuxedo管理_计算机软件应用_IT/计算机_专业资料。本系列由gototop编写...中间件具有标准的程序接口和协议,可以实现不同硬件操作系统平台上的数 据共享...
tuxedo文件传输
组件软件模型,该结构利用 交易中间件应用的业务...交易中间件作为构造三层结构应用系统的基础平台,提供...2 客户端应用 TUXEDO 实现文件传输方法 在客户端,...
tuxedo培训
tuxedo培训_信息与通信_工程科技_专业资料。TUXEDO服务端程序TUXEDO 培训一、TUXEDO 简介 在银行、电信、金融等行业的大型计算机应用系统中,中间件的使用日益普及, 中...
tuxedo教程
第 4 页 业务系统项目建议书 作为一个完整的网络应用,需要实现上图中所列的功能。作为中间 件的 Tuxedo 实现上图中所列红色字体的功能,也就是说,用户需要完 ...
中间件运维服务
为操作系统软件、典型应用软件(如:数 据库软件中间件软件等)、业务应用软件...Tuxedo7.1 加入了多线程、Contexts、安全、第三 方安全插件的特性,这些特性在 ...
中间件技术的简介
实现 2. 中间层(业务逻辑) :实现整个应用系统...结构中起着关键的作用,下一节我们将对中间 件技术...因此人们一般把 Tuxedo 作为第一个严格意义上的中间...
中间件定义及分类
实现分 消息中间件 布式系统中可靠的、高效的、实时的跨平台数据传输,实现应用...BEA 公司的 TUXEDO 便是最著名的一个 交易中间件产品,东方通科技公司的 ...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图