一、tuxedo 的客户端
tuxedo的客户端有三种:
(1)本地客户端(Native Client):是指客户端和服务器在一台机子上。(BB和BBl是tuxedo的核心部件,他们在哪里,哪里就是服务器),客户端(进程)和服务器端(进程)通过IPC(进程间通讯)进行通讯。当然本地客户端也可访问其他机子的服务器,这样的话就成了远程客户端了。
(2)远程客户端(Remote Client):客户端和服务器在两台机子上,他们之间通过网线连接通讯,他们之间是TCP/IP协议链接,当然也可通过Proxy链接。
(3)Weblogic 客户端(java端)通过WTC链接底层的tuxedo程序。
二、tuxedo API(ATMI)
Client Request Server
ATMI ----------------------------------------------------->Message Queue ATMI Service
Message Queue <-----------------------------------------------------
Reply
connect to Tuxedo (链接tuxedo) -------------------------------------> main(){
allocate a buffer 分配空间 .......
tpcall(TOUPPER,...) 调用函数 TOUPPER(...){
.....
get data from buffer 得到结果 <------------------------------------------- return response
free the buffer 释放缓冲区 }
disconnect from Tuxedo 断开连接 }
TOUPPER(...)这个函数平时不会被调用,只有当来自客户端的请求到达了server端的MQ里面,而且被server通过ATMI从MQ中拿到之后,这个TOUPPER(...)函数才会被执行。
流程:
Client 用什么开发都行,client 调用tuxedo ATMI 函数库,然后ATMI将请求发送到server端的Message Queue里面去,server 通过ATMI从Message Queue 里面取出请求,取出以后,server端调用相应的service函数,service函数在处理完以后,再通过ATMI函数Reply到Client端的MQ里面去(后台的server就是被动的接受请求)
三、Messaging & Communications
tuxedo客户端和服务器之间的通讯是通过消息队列的机制来传递消息的。
四、Tuxedo Buffer Types (Tuxedo 缓冲区类型)
tuxedo 客户端和服务器���是有缓冲区的,缓冲区中的数据有不同的类型(Type),tuxedo支持不同类型的Buffer。
String 类型的 Buffer :(Text Data) 里面放置字符串,而且是文本形式的。人可读的
Carray Buffer :(Binary Data bytes) 二进制数据,机器可读的
FML Buffer:可构造出比较复杂的数据类型,(实际上就是(name/value)这样一对一对的)
View Buffer:类似C语言中的data structure
XML Buffer:Text data with data item tags
五、Message Paradigms (消息传输机制)
tuxedo的一个优点就是提供了非常丰富的消息传递机制。通常服务都是客户端主动发送请求,服务器端被动接受,一共有五大类型的传递方式:
request/response (请求/应答方式):这个是最主要的一种方式,这里面又分为同步(死等,等到超时) 异步(synchronous,asynchronous),它是无状态的,一个请求一个应答,每次请求和应答之间没有必然联系的。如 http 协议
conversation:会话形式,有状态的协议。(如:传递大文件,报告,批量处理一些数据时)
unsolicited notification:服务器主动的向客户端发送请求
publish and subscribe :发布和订阅
store and forward : 存储转发模式