【Tuxedo开发笔记】
Tuxedo 是一款高级的事务处理中间件,主要应用于构建大型企业级分布式系统。本文档是一份针对初学者的 Tuxedo 开发笔记,旨在介绍如何使用 BEA Tuxedo 创建客户程序和服务程序,以及如何在应用程序中使用类型缓冲区进行通信。
1. 创建BEA Tuxedo的客户程序
开发 Tuxedo 客户程序与常规的 C 和 C++编程相似,因为 Tuxedo 提供了一套基于 C 语言的应用程序事务监控接口(ATMI)。客户程序通常执行以下步骤:
- 使用 `tpchkauth()` 函数确定安全级别,这可以是无安全级别、应用程序口令、授权、访问控制列表、连接级加密或公钥加密等。
- 调用 `tpinit()` 初始化并连接到 Tuxedo 应用程序,传递必要的安全信息。
- 执行服务请求。
- 通过 `tpterm()` 断开与 Tuxedo 应用程序的连接。
2. 创建服务程序
服务程序是 Tuxedo 的核心部分,开发者只需编写服务函数,与 Tuxedo 的二进制程序一起编译为可执行文件。服务程序持续运行,直到接收到 shutdown 消息:
- 在启动时,调用 `tpsvrinit()` 函数,可以在此处打开资源(如数据库)。
- 在关闭时,调用 `tpsvrdown()` 关闭 `tpsvrinit()` 中打开的资源。
- 服务程序通过服务响应客户请求,客户程序调用服务而不直接调用服务程序。
- 使用 `tpreturn()` 结束服务请求,并可能将结果返回给客户。
3. 类型缓冲区的使用
类型缓冲区是 Tuxedo 中通信的基础,所有通信都通过这些缓冲区进行。开发者利用 `tpalloc()`, `tprealloc()`, `tpfree()` 等 ATMI 函数进行分配和回收。缓冲区有特定头部,确保跨网络、协议、CPU 架构和操作系统的兼容性,简化了分布式计算环境中的异构问题。
4. 通信模式
Tuxedo 支持多种通信模式:
- 同步 Request/Response:客户端发送请求,等待服务端响应。
- 异步 Request/Response:非阻塞模式,允许并发处理多个请求。
- 嵌套调用:在一个服务调用中嵌入另一个服务。
- 调用转发:将请求转发给其他服务器处理。
- 会话通信:维护客户端与服务端的上下文。
- 主动消息通告:服务端主动向客户端发送消息。
- 基于事件的通信:响应特定事件触发的服务调用。
- 基于队列的通信:请求被放入队列,按顺序处理。
- 使用事务:确保数据一致性,支持 ACID 属性的事务处理。
5. 简单的 Tuxedo 应用程序 - simpapp
simpapp 示例包括一个客户程序和一个服务程序,服务程序接收小写字母并返回大写。在运行此示例前,需确保安装了 C 语言编译器,设置了 $TUXDIR 环境变量,并将 TUXDIR/bin 添加到 PATH。准备步骤包括复制文件、编译程序、编辑和加载配置文件、启动应用程序、运行和监视应用程序,以及最后关闭应用程序。
通过 simpapp 示例,学习者应理解客户程序和服务器的任务,配置文件的作用,以及如何管理 Tuxedo 应用程序。这包括理解基本组件、使用命令行工具如 tmadmin 进行应用程序管理。