⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20000916004.htm

📁 C++ Builder学习中文版,让学者对其有一定的理解.
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML>

<HEAD>



<TITLE>BCB环境下CORBA实做之服务器</TITLE>



<META content="MSHTML 5.00.2314.1000" name=GENERATOR>

</HEAD>

<BODY aLink=#FF0000 bgColor=#ffffff leftMargin=0 link=#187800 topMargin=0 

vLink=#990099>



<div align="center">

  <table width="744" border="0" cellspacing="0" cellpadding="0" height="76">

    <tr> 

      <td> 

        <p align=center><font size="3"><br>

          <b>BCB环境下CORBA实做之服务器</b></font></p>

        <p align=center><font color="#0000ff" size="2">品雪译</font><font color=#0000ff 

size=4><br>

          </font><font color=#ff8080 

size=3></font></p>

        <p align=justify><font face=宋体>建立一个</font>CORBA<font 

face=宋体>服务器</font></p>

        <p align=justify> BCB<font face=宋体>带有多个向导(</font>Wizards<font face=宋体>)以简化</font>CORBA<font face=宋体>服务器的开发过程。以下几步描述了如何用</font>BCB<font face=宋体>建立一个</font>CORBA<font 

face=宋体>服务器。</font></p>

        <ol>

          <li><font face="宋体">定义对象界面 </font> 

          <li><font 

face=宋体>使用</font>CORBA server wizard<font face=宋体>建立一个包含起始时初始化</font>BOA<font face=宋体>和</font>ORBCORBA<font face=宋体>代码的服务器应用程序 

            </font> 

          <li><font face=宋体>编译包含界面定义的</font>IDL<font face=宋体>文件,得到框架及存根。 </font> 

          <li><font face=宋体>用</font>CORBA object wizard<font face=宋体>定义(并实现)类的实现。 

            </font> 

          <li><font face=宋体>完成</font>4<font face=宋体>建立的类实现</font>CORBA <font face="宋体">对象 

            </font> 

          <li><font face="宋体">必要时,修改CORBA界面并将修改加进类实现中。 </font></li>

        </ol>

        <p><font face="宋体">另外,可以选择将IDL文件注册加入界面库和对象激活守护进程。</font></p>

        <hr>

        <p><font face="宋体">1-1 定义对象界面</font></p>

        <p>参见OVERVIEW同主题部分。</p>

        <hr>

        <p><font face="宋体">1-2 使用CORBA server wizard建立一个包含起始时初始化BOA和ORBCORBA代码的服务器应用程序</font></p>

        <p><font face=宋体>要开始一个新的CORBA服务器工程,选择File|New,再从对话框的Multitier页选取题为CORBA 

          Server的图标。CORBA Server wizard让你指定是生成控制台程序(console application)还是窗口应用程序(windows 

          application)。</font></p>

        <p><font face=宋体>如果建立一个控制台应用程序,可以说明是否使用VCL类。如果不选,那么所有生成的代码可以移植到其它平台上。</font></p>

        <p><font face=宋体>另外,选择应用程序类型时,还可以将任何已经存在的IDL文件加进工程中,或指定你想加进一个空白的IDL文件。服务器工程最后必须一个或多个IDL文件,该文件定义客户用以与服务器通信的界面。</font></p>

        <p><font face=宋体><font 

color=#ff0000>注意</font>:如果在开始CORBA工程时没有加入IDL文件,你始终可以选择Project|Add to Project(对已经存在的IDL文件)或从New 

          Items对话框的Multitier页选择CORBA IDL file(以定义新IDL文件)来加入。</font></p>

        <p><font face=宋体>当你选定服务器类型,单击OK,CORBA Server wizard将新建一个指定类型的服务器工程,将CORBA库加入工程文件,加入初始化ORB(对象请求代理)和BOA(基本对象配适器)的起始代码。</font></p>

        <p><font face=宋体>自动生成的代码定义两个变量:orb和boa,你可以用它们与ORB和BOA通信。</font></p>

        <p>CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);<br>

          CORBA::BOA_var boa = orb-&gt;BOA_init(argc, argv);</p>

        <p>如果指定为控制台应用程序,还会看到下面这行:<br>

          boa-&gt;impl_is_ready();<br>

          这个调用使你的程序可以从BOA接收消息,正如Windows消息循环允许一个窗口应用程序从Windows收到消息。(而窗口型应用程序使用Windows消息循环处理CORBA消息)。</p>

        <p>ORB和BOA的细节见VisiBroker文档(可到inprise网站去下载)。</p>

        <hr>

        <p> <font face=宋体>1-3 编译包含界面定义的</font>IDL<font face=宋体>文件,得到框架及存根。</font></p>

        <p><font face="宋体">一旦你将描述CORBA界面的IDL文件加入到CORBA工程中,你就已经准备好生成存根和框架类了,这两个类将管理服务器与客户应用程序的通信。</font></p>

        <p><font face=宋体>生成存根和框架类,很简单,编译一下IDL文件就得到了。当IDL文件显示在代码编辑器和工程管理器中时选择Project|Compile 

          Unit,或在project manager的IDL文件上单击鼠标右键并选Compile就可以了。IDL编译器生成两个文件,它们会出现在工程管理器和代码编辑器中:</font> 

        <ul>

          <li><font face=宋体>服务器文件(xxx_s.cpp)。这个文件包含框架类的实现。</font> 

          <li><font face=宋体>客户端文件(xxx_c.cpp)。这个文件包含存根类的实现。</font> </li>

        </ul>

        <p><font face=宋体>工程Option对话框的CORBA页允许你影响从IDL文件生成stub和skeleton的方式。例如,你可以指定只想在工程中包含服务器单元,或指定要包含Tie类(用于当服务器使用代理模式delegation 

          model时)。这些选项影响当前工程中所有的IDL文件。</font></p>

        <p><font color=#8080ff face=宋体>注:  delegation model,当使用已经写好的从不允许多实例VCL类衍生的CORBA服务器或想与其它非CORBA应用程序共享时,可以使用不其于CORBA或不生成服务器文件的服务器类。输出不是从框架类衍生的对象时,应用程序必须使用delegation 

          model。它是这样的模式:框架类实例并不直接实现CORBA对象,而是将界面调用传给完全分离现实的类。即实现的类不是继承自skeleton而是被skeleton调用。<br>

              要使用delegation model就要在编译IDL文件时生成tie类(绑定类)。这样编译得到的框架类多出一个特殊的tie类。它充当你实现的类及其方法的代理,它将用户调用委派给你实现的类。<br>

              详情见联机帮助。</font></p>

        <hr>

        <p> <font face=宋体>1-4 用</font>CORBA object wizard<font face=宋体>定义(并实现)实现类。</font></p>

        <p><font color=#8080ff face=宋体>//译者:这里大量使用“实现”一词,其意思基本上就是实际生成。</font></p>

        <p><font face=宋体>要实现定义在IDL文件中的CORBA对象,必须实现每个框架类。要完成它,选择File|New,从对话框的mutitier页中选择CORBA 

          Object Implementation。这将触发CORBA Implementation Wizard。</font></p>

        <p><font face=宋体>CORBA Object Implementation Wizard列出工程包含的IDL文件中定义的所有界面。选择一个IDL文件,再从这个文件中选择要实现的界面。提供一个实现类的名字并指定命名.h、.cpp文件的单元名。这些文件将包含对象的定义和实现。</font></p>

        <p><font face=宋体>在向导中说明实现的类是否应该继承自动生成的框架类,或者要使用delegation model(tie类)。如果使用代理模式(且服务器是VCL可用的),还应该告诉向导使你实现的类成为一个数据模块(data 

          module)。这允许你向实现的数据模块中加入所需的构件(components)。</font></p>

        <p><font face=宋体>可以告诉向导加入代码以便应用程序启动时实例化你的CORBA对象,这样他们就有能力收到客户请求。如果你启动时实例化对象,必须给他们提供名字供客户定位用。当客户应用程序动态绑定到你的CORBA对象时,他们使用这个名字指明想要的对象。</font></p>

        <p><font face=宋体>当你点下OK时,CORBA Object Implementation Wizard生成你实现的类的定义并生成其实现,这个实现的每个方法体都是空的。如果你指定,它也可以加入实例化对象的代码。</font></p>

        <p><font face=宋体>在这些改变加进工程之前,还可以查看、编辑他们。要这样做的话,在点OK之前选上标题为Show Updates的复选框。在你查看修改之后,他们被加进工程。如果你向导结束时没有选择查看和修改,你可以以后再在代码编辑器里编辑它们。</font></p>

        <p><font face=宋体>要实现多个界面,就要多次使用CORBA对象实现向导,每次一个界面。但是,你可以提供多个名字来让向导生成单个实现类的多个实例。</font></p>

        <hr>

        <p> <font face=宋体>1-5 完成</font>4<font face=宋体>建立的类实现</font>CORBA<font face=宋体>对象</font></p>

        <p>如果你没有使用delegation model(代理模式),那么实现类是将从框架类衍生而来,框架类是编译IDL文件时生成的。否则就你的实现类就不会有明确祖先。你可以改变这个类定义使它继承服务程序的其它类,但不要移去任何已有的对框架类的继承。</p>

        <p>考虑如下取自IDL文件account.IDL中的片断(该文件在BCB例子中):</p>

        <p><strong>interface</strong> Account {<br>

          &nbsp; <strong>float </strong>balance();<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -