2002鼻2月 电 脑 学 习 纂1囊 基于CORBA的网上信息发布技术 林德生’ 祝海涛 薛开 摘要简要介绍了CORBA技术和CORBA磕杓厦工作原理.以同上信盅发布系统为例彳卜绍了用C++Builder编写 C0RBA应用程舟曲_麟和技术。 关键词 CORBA ORB s【lIb Skeleton IDL Network Information Release Technology Based on CORBA Lin D目heng ZhuI XtmIOi Almtrm-t This paper first introduces CORBA teehnolo ̄.oonstruct and its performance prnici#e ̄Then for aIl e ̄m#e 0f the system of network information relea.w,the paper introduces the procedure and the t。chn0l。 of ‘1g a CORBA impIic ∞program by using C++Builder. Keyword CORBA ORB Stub Skeleton IDL CORBA(Commo ̄Object Request Broker Amhitecture) 化ORB,然后就是从ORB中获取BOA的一个副本,向 是对象管理组织(OMG)定义的分布式应用程序的标准结构。 smart agent注册CORBA服务器。客户与BOA没有关系.甚 在CORBA应用系统中主要分为两部分:一是位于应用程序 至不需要知道BOA是否存在。只有服务器才与BOA有关 服务器中的CORBA对象;另一个是使用的客户程序,这些 系 客户程序通过cORB^技术使用CORBA对象提供的服务 客户端的接口存根对象Stbu提供访问服务对象的静 来完成其工作 态接口。存根由服务对象的IDL界面通过IDL编译器生成, 1 CORBA结掏及工作原理 作为客户端的远程对象代理,规定客户对象如何调用服务 对象的操作。 在分布式结构中,客户不能直接与服务器通信,服务器 服务器端的接口框架对象skeleton也是由服务对象 也不能直接与客户通信。客户和服务器都要有一个代理 IDL界面通过IDL犏译器生成的,与客户端对应,在服务器 (P ̄oxy)。客户端的Proxy称为Stub,服务器端的Proxy称为 端提供访问服务对象的接口 kSeleton Stub和Skeleton 台工作,使客户端以为它在与服 务器直接通信 CORBA客户和服务器通过Proxy与0RB. 接口定义语言IDL不是骗程语言,不能用来编写具体 的操作算法,纯粹是说明性语言 但是,可咀用来定义对象 BOA和Smart Agetxt通信 如图1所示 能够进行的所有操作,包括全部输入,输出参数以及返回结 果 甚至连可能产生的操作错误也不蜊外。 ~个对象,程序在现实中可能既是客户又是服务器。这 种角色的歧义性在软件开发中经常发生。在CORBA中,只 田1 有客户—曲e nI与 对象实现 —Obie Implementation,没有 Smart Agent是帮助客户自动定位服务器的目录服务。 专门指明的服务器对象,就是为了消除这种歧义。 ORB(0biect Request Broker)对象请求代理.它可以帮 助CORBA对象互相 理解 对方,可以在CORBA对象之间 2基于CORBA的信息发布系统 传递信息.请求.可以僧理 OImA对象之问的分布与集 该系统包含三个应用程序,两个客户端血用程序和一 成 ORB使用广播数据报来确定Smart Agent的位置,能够 个服务端应用程序。它们三者间在设计和维护阶段都保持 自动在网络中搜索对象.而Micmsol ̄的DCOM体系结构要 了各自的独立性与一致性。它们的关系如下图所 求在调用远程对象时指定对象所在服务器的名称。这是 不 I)COM和CORBA的主要区别之一。 BOA(Basic obj ̄-t Adaptor)基本对象适配器,使服务器 可以自行注册。当一个服务器启动时.它首先要做的是韧始 图2两十客户程序与服务程序的关系 ・林德生哈尔滨工程大学船舶数据变换研究室硕士研究生(150001) 收稿臼期:2001—08—10 ・10・ 维普资讯 http://www.cqvip.com
(1)根据信息发布要解决的问题建立抽象模型,在此 基础上建立对象模型。然后写接口定义语言IDL。 x'et ̄axsg.c_strO; } 首先,主管向.毂务器请求发布信息,然后,客户向服务 器请求获取信息,客户如果有意见还要向服务器请求发布, (4)利用CORBA Client Wizard创建客户端主管程 序。客户程序向导创建的代码与对象实现向导创建的代码 一再后主管向服务器请求获取反馈意见。所蛆IDL文件中应 该包含两个接口。一个是面向主管,另一个是面向客户的。 IDL文件如下: intedece LmdCerbai 样。 (5)利用Use CPRBA Object Wizard的对象使用向 导绑定CORBA对象。选择LeadCoi ̄接日,创建静态激发 客户程序。在窗口中添加了一个Iabd控件和一个Edit控 M瞄扩发布信息 TheRespon ̄in s 】; intedacc ClientObj{ 件,两个Button控件和一个Memo控件。 void— setll1 艨取反馈意见 TForml::ButtoalClick ̄j ̄ct’Seader) 庸 发服务器对象发布信息 { TheClientResponse{in出ing L哪k 哪 交反馈意见 st 】: leadCorba->TheResponse ̄EdiL2->Teg.c tarO); j void_目毗n蜘积E取发布信息 fastoall TForml::Button2CliekO'Objeea Ⅲ (2)利用C++Builder的CORBA Server Wizard创建 CORBA服务器程序,加入[DL文件。向导完成了ORB、 BOA的初始化并实例化了两个对象: orb=CORBA::ORBCORBA::ORBvar__庸 发服务器对象取得反馈意见 { Memol——>Lia ̄s——>AddfleadCod.t-> ̄dr,fo0); 1 , hail(__argc 一q gvl; CORBA::BOR ̄ar b啊. _orb->IIOA_ittlt(__at' ̄e,— ); (6)创建客户端客户程序。客户程序跟主管程序相 似。只是在选择接口时要选Cli ̄tObj。在窗口中也i器加了一 个Label控件和一个Edit控件,两个Buttoa控件和一个 Memo控件。 void— B讪{ I越dc一-●l 】ead 出LL adc0 优l{ L棚d(=0rba0bj鲥 ject ClientObjlmpI dieatObL boa->objjs_rmdy(&dlemObj..ClkmtObjObjeeO; TForm1::ButtonIClick(TObjeet事se耵 (3)用CORBA Object Implementation Wizard编写 CORBA对象实现。该向导在添加代码之前,会自动编译 庸 发服务对象获得发布信息。 Memot->Lia ̄->Add(elleatObj->gedMo0); viod_fastc ̄ll TForm1::Bu,:'ton2Click(TObjeel*Sender) 庸 发服务对象发送反馈意见 { IDL文件,生成有关接口存根对象及接口框架对象的文件 并自动生成了一个代码框架,我们必须自己编写方法、操作 以最终完成对象实现。在服务器端窗口中添加有个Memo 控件和两个Label控件,以显示发布信息和反馈意见。 char-Msg 阮务器获取主管发 布的信息 AJ Ⅱg k 肌sg; ellemObj->TheCllentRe ̄j (Editl一)1l删..一☆ m 以上程序在局域网的三台机器上w 啪0操作系 msg=_Ms ̄ 统F,用C++BuLMe ̄5 0运行成功。在运行程序之前得先启 动Smart Agent.然后先运行服务端应用程序.再运行两个 客户端程序。如果要在lntemet嗣上运行要对Smart Agent Forml->Memol——>Line*—・>Add(ra ̄; P,:etumⅡ sg.cJtO; } cha—I嘲do ・I : tI 0巧 回客户反馈意见 进行适当的配置。在实际应用中,还可以结合数据库技术, 对主管和客户进行权限设置等。 参考文献 ch cIi帅t0bjJmpl:弹d 1 客户获取服务器中的发布信息 1刘晖等.用CORBA创建电子商务系统.北京:北京希望电 子出版社.2000. l ̄.ttu31 FormI一>Memol一>Te ̄a.cstr0; _2 M.Roy等著.李师贤等译.CORBA教程.北京:清华大学出 版杜,1999. } oorm*char*J ck 神 3朱时银等.C++Builder 5编程实例与技巧.北京:机械工业 出版社,2001. 棚R务器簸碍客户反馈的意见 e AnsiStrlng嘴 sg=一b日eLM 4 kent Re剐唧h等著.橡新华译.C++Builder4技术内幕.北 京:人民邮电出版社,2000. Fomd一>Memo2一>L es一>Add(ms
因篇幅问题不能全部显示,请点此查看更多更全内容