俺已经晕了,客户端怎么做来着?
幸好昨天已经把文档翻译过来了,瞄了一眼,如果用静态绑定的话就只要运行两个向导就成:CORBA Client wizard和Use CORBA Object wizard。
那就干吧。咱们做一个使用VCL的客户,调用Server对象的getName方法,并将结果显示在Form的Edit里。
1、File|New, Multitier,CORBA Client wizard:

别的不动它,用Add...把testobj.idl加上。
OK。之后Project1工程生成,把它存成testclient,unit1存成clientmain。
如果IDL文件没有选好用...选上,俺这儿是自动加好了。
Interface Name嘛,IDL文件里也定义了StockServer,所以只有它一个可选。
Object Name写什么呢?别慌,记得在服务器的CORBA
Object Implementation wizard里指定过来着,是StockServerObject,就写它。绑定机制显然要用Use in
Form才方便,Form名字就懒得改了。
OK,向导自动修改了俺的clientmain.cpp/h,加入带stockServer属性(__property)的TForm1类的实例Form1。
加上删除线的说明有点问题,应该是:
当调用过Edit|Use Corba Object之后,bcb会自动将
USEUNIT("..\testobj_c.cpp");
USEUNIT("..\testobj_s.cpp");
加到testclient(project的主程序)里,前面指定的idl文件里的接口对client就可用了。我猜想如果这个时候idl文件还没有被编译,bcb应该会自动用idl2cpp去编译吧。
然后bcb会弹出一个对话框,让程序员从里边选择使用哪个接口及该接口实现类的哪个实例,并可以指定一个对象名,这个名字将做为参数传给服务器上该对象类的建构函数,从而会在服务器端生成一个该名字的对象实例,如果对象名为空白,那么client将会使用boa提供的任何一个对象实例。
//-----------题外话-----------
注意,POA是对象实现与ORB之前的中介,是VBroker4带来的新东西,它的地位相当于VBroker3时代的BOA。详情请看VBroker4的文档或CORBA新版的文档。
如果使用vbroker4进行corba应用开发的话,建议先把它的联机文档读一下,应为vbroker4实现的是corba2.3,有很多概念上的变化,而且联机文档对于corba的概念、VBroker的体系和原理、VBroker4下开发服务器与客户端的步骤都有详细讲解,在把这些理解之后再依本文的方法做bcb下的可视开发,就不会对wizard生成的那些古怪的代码感到迷惑了。嘻嘻,不要问我,我还没有看过,知道的都写在这里了。:-)
//-----------题外结束---------
BCB的Use Corba Object Wizard可以自动完成在client里调用server上的corba object所需的准备工作,它可以通过Form的property、main()中的变量、class的成员来封装对服务器对象的引用。如果分析每种情况生成的代码,它最终都是通过以下几步完成任务的:
1、定义一个~_var变量:StockServer_var FstockServer;
2、将变量绑定到一个对象实例上:FstockServer = StockServer::_bind();
注意,在Form和main()里使用时,绑定是由wizard生成的代码自动完成的,而在class里使用时你可以选择wizard是否生成绑定代码、是否自动引用生成绑定代码。
2000.3.29.
3、完成程序功能。
对这个测试程序来说简单得很,在Form1上放一个Button1一个Edit1,把标题文字改一下:

双击这个按钮,写上响应代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1-$#@62;Text=stockServer-$#@62;getName();
}
4、测试。(本地)
然后,File|Save All,再F9之,哈哈第一个CORBA程序运行成功了:

注意:记得在运行之前用start testserver.exe启动服务器哟。
没有必要用start ...,直接运行就可以了 2000.3.29.
5、网络测试。按俺的理解,把客户拷贝到其它计算机上运行就可以了,待俺试来。
哈哈,在客户端要有这么几个支持文件就可以:cp3245mt.dll orb_br.dll borlndmm.dll,还不知道是干什么用的。
注:开发环境为PWinNT4 WS+SP3,网络测试在PWinNT4 WS及Win95 OSR2测试成功,编译选项使用release配置时,Win95在缺少dll时提示程序启动出错,而NT则提示断言失败,如果编译时用debug配置会告诉你缺哪个dll。
大功告成!
关注此文的读者还看过: