欢迎来到天天文库
浏览记录
ID:6329925
大小:487.00 KB
页数:91页
时间:2018-01-10
《tuxedo程序员指南》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.序论BEATUXEDO系统开发环境这一章介绍BEATUXEDO系统开发环境。你要编写的应用软件,也就是在此环境下进行的。你除了用C程序来表述应用软件的逻辑性外,你将会用到“应用交易监控接口”(ATMI),它涉及到BEATUXEDO系统交易监控和应用软件间的界面。ATMI基本件是类UNIX系统调用的C语言函数;但它们,在BEATUXEDO系统交易监控的控制下,在应用模块间实现通讯(包括所有你需要的相关资源),有特殊的用途。BEATUXEDO系统着重于“客户—服务”这种体系结构。这本书的第2到第7章描述了ATMI是怎样用于
2、编写、调试客户端和服务端的程序。本章只作简要介绍。客户进程一个客户进程要求用户发送一个请求给服务进程,服务进程将返回一个响应。基本的客户端操作一个客户进程用一ATMI基本件介入一个应用系统,利用另一基本件进行信息缓存的分配。这些基本件的应用,持续到信息缓存被送往一个服务并且得到响应为止。下面是一个简单的描述:main(){allocateaTPINITbufferplaceinitialclientidentificationinbufferenrollasaclientoftheBEATUXEDOapplicationa
3、llocatebufferdowhiletrue{placeuserinputinbuffersendservicerequestreceivereplypassreplytotheuser}leaveapplication}-------------------------------------------------------------------------------上图大部分是由ATMI基本件来完成的。placeuserinputinbuffer和passreplytotheuser部分是由C语言来完成。当
4、客户程序准备测试时,你要先用buildclient(1)命令来编译和链接它们。客户重复发送服务请求一个客户在离开应用程序之前,可以发送和接受很多个服务请求。这些将作为一系列的“请求/响应”调用而被发送。如果有重要的信息需要从一个调用传到另一个调用,则会有一通向会话服务的连接被设立。客户程序里的逻辑也是如此,不过是不同的ATMI基本模块被使用而已。服务器进程和服务子程序服务器是提供一个或多个服务的进程。它们不停地检测服务请求的消息队列,并且为它们分配适当的服务子程序。基本的服务端操作应用软件通过将它们的服务子程序与BEATU
5、XEDO提供的main()连接起来,达到建立服务进程的目的。本系统提供的main()是一套预定义的函数。它执行服务器的初始化和终止;为“接收和分派”引入的请求给服务程序,进行缓冲区的分配。所有这些处理相对于应用程序来说是透明的。服务器和服务子程序的交互作用,可以通过下面的描述来概括(图Figure1-1):Figure1-1Pseudo-codeforaRequest/ResponseServerandaServiceSubroutine一个服务在初始化后分配缓冲器,一直等待到请求信息加入到消息队列、请求信息出列、分派它们
6、给服务子程序处理。如果需要应答,还得考虑请求处理部分。会话范例稍微有些不同。假想的代码如下(Figure1-2)。Figure1-2Pseudo-codeforaConversationalServiceSubroutineBEATUXEDO系统提供的main()包含的内容有:使自己成为一个服务、公布服务、分配缓冲区、使请求信息出列。ATMI基本件被应用于处理请求的服务子程序中。当服务子程序准备编译和测试时,它们将通过buildserver()命令连接到服务端的main(),形成可执行的服务模块。ATMI基本件“应用交易监
7、控接口”(ATMI)是一套非常紧凑的基本件,这些基本件用于开关资源、开始和终止交易、分配和释放缓存、提供客户端和服务端的通信。下表是它们的简要描述:组名称操作应用接口tpinit()连接一个应用软件tpterm()离开一个应用软件缓存管理接口tpalloc()分配缓存tprealloc()重新计量缓存tpfree()释放缓存tptypes()取缓存类型请求/响应通信接口tpcall()发送请求等待响应tpacall()异步方式发送请求tpgetrply()异步方式调用后接受回应tpcancel()取消通信处理特殊响应tpg
8、prio()取最后请求的优先级tpsprio()取下一请求的优先级会话接口tpconnect()开始一个会话tpdiscon()结束一个会话tpsend()在会话中发送数据tprecv()在会话中接受数据主动告示接口tpnotify()通过客户id识别tpbroadcast()通过名称识别tpsetun
此文档下载收益归作者所有