2008-01-24 14:37:12 来源:www.chinaunix.net
goddess是和tuxedo类似的交易中间件平台。
goddess在近30城市的电信计费帐务系统中作为基础支撑平台,7*24小时不间断运行。5年来支撑近2000万电信用户的业务。其可靠性和效率得到充分体现。
不同的操作系统平台上goddess的开发接口完全相同。具备源码级的兼容。
基于goddess开发的三层应用几乎可以不加修改的移植到tuxedo、tongeasy平台,唯一需要变化的是初始化部分,一般不超过20行代码。
goddess应该是同类产品中最容易开发的基础平台。实际上在goddess上开发,同时也获得了orient类库中非常丰富的应用开发功能模块的支持。
goddess的编程接口主要有3个类,TMid_Task、TMid_Link和TMid_Serv。
TMid_Task用于传递远程调用的参数以及后台服务返回的结果。
TMid_Link是连接器的基类。连接器负责把客户端调用的相关参数传递给服务端,在服务端执行完毕后返回相关参数。
TMid_Serv是后台服务的基类。TMid_Serv接受来自客户端的请求,执行完毕后把相应的结果返回给客户端。
为了简化调用,系统提供了包括一组初始化函数。
goddess中每类服务进程用一个唯一的业务类型编号进行标识,一个业务类型下面可以提供相应的一组服务,采用基于名字调用的方式。
后台服务序提供了1个服务函数lower把一字符串转换成为小写,同时把字符串长度返回给客户端。这里假设服务器是本机。
服务端程序
#include <mid_itf.h>
int netlower(TMid_Task * task)
{
char * pos,str[200];
task->Get_Para("str",str);
pos = str;
while(*pos!=0)
{
if(*pos>='A'&&*pos<='Z') *pos='a'+(*pos-'A');
pos++;
};
task->Push_Para("str",str);
return 1;
}
int main(int argc, char* argv[])
{
Mid_Process_Def("lower", netlower, "转为小写");
Mid_Serv_Tfa_Start(10,"测试程序","127.0.0.1",2000,5);
return 1;
}
客户端程序
#include <mid_itf.h>
#include <string.h>
int main(int argc, char* argv[])
{
TMid_Task task;
char str[200];
int id;
Mid_Link_Tfa("127.0.0.1",2000);
for(id=0;id<20000l;id++)
{
if(id%10==0)
printf("id is %5d
",id);
task.Set_Bid(10);
strcpy(str,"ABCDE");
task.Push_Para("str",str);
task.RCall("lower");
task.Get_Para("str",str);
printf("result is %s
",str);
};
return 0;
}
任务参数类 TMid_Task
TMid_Task用于传递远程调用的参数以及后台服务返回的结果。
TMid_Task从TparaMgr继承而来,可以非常方便的传递各种类型数据,包括TSQLCA二维列表(执行sql语句返回的结果集),也可以直接把一个参数管理器作为一个变量传递。使得开发人员无需再关心报文格式和平台差异。
一般的,编写一个客户端程序需要做以下工作:
1 TMid_Task::Set_Bid
功能:设置调用服务的业务标志代码
2 TMid_Task::Push_Para(继承于参数管理类TParaMgr)
功能:设置调用服务需要传递的参数
Push_Para具有多态性
int Push_Para(char * name,int value);
int Push_Para(char * name,long value);
int Push_Para(char * name,double value);
int Push_Para(char * name,char * value);
int Push_Para(char * name,tstr * str);
int Push_Para(char * name,TSQLCA * dbio);
int Push_Para(char * name,TParaMgr * para);
int Push_Para(char * name,char * paravalue,char type);
int Push_Para(char * name,char * paravalue,char type,int len);
3 TMid_Task::RCall
功能:根据名字调用远端服务
4 TMid_Task::Get_Para(继承于参数管理类TParaMgr)
功能:获取服务端返回的结果信息
Get_Para具有多态性
int Get_Para(char * name,tstr * str);
int Get_Para(char * name,TSQLCA * dbio);
int Get_Para(char * name,TParaMgr * para);
int Get_Para(char * para,int * value);
int Get_Para(char * para,float * value);
int Get_Para(char * para,double * value);
int Get_Para(char * para,char * value);
int Get_Para(char * para,void * value,int * len);
char * Get_Addr(char * para,int * size=NULL);
goddess于1999年开始开发,并且在武汉移动综合业务系统中局部投入使用。
2001形成2.1版本,在包括昆明、绍兴、乌鲁木齐等二十多个城市的电信计费帐务系统中作为基础平台。至目前仍在稳定运行。
2004形成3.2版本,在交通部海事卫星业务系统、昆明实时计费帐务系统中作为基础平台。
2006形成5.0版本。5.0版本做了较大的改动,主要优化了体系结构,简化了调用接口,效率比原有版本有较大的提高,对多线程支持更好。基于5.0版本开发更加容易,快速。
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。