请问大家,在一个应用服务器中如何解决二个以上的数据模块窗体问题???

解决方案 »

  1.   

    使用多个远程数据模块
        可以使用多个远程数据模块来构建应用服务器。使用多个远程数据模块让你分割代码,把大型的应用服务组织进多个自包含的单元,每个单元是相对地自包含的。尽管总是可以在独立运行的应用服务器上建立多个远程数据模块,但 Delphi 还提供支持这样的模型:有一个主的“父亲”远程数据模块,把来自客户的连接分发到“子”远程数据模块。
        建立父亲远程数据模块,必须扩展它的 IAppServer 接口,添加属性显露子远程数据模块的接口。即,为每个子远程数据模块,添加一个属性到父亲数据模块的接口,属性的值是子数据模块的 IAppServer 接口。属性的获得者(getter)形式应当如下:
    function ParentRDM.Get_ChildRDM: IChildRDM;
    begin
      {note the parent RDM uses a factory component defined in the child RDM's unit.
      This is more efficient if it must create several children for different clients }
      Result := ChildRDMFactory.CreateCOMObject(nil) as IChildRDM;
      Result.ParentRDM := Self;
    end;
        关于扩展父亲远程数据模块的接口的信息,参阅扩展应用服务器接口。
        提示:也可以为每个子数据模块扩展接口,显示父亲数据模块的接口,或其它子数据模块的接口。这使应用服务器在各种数据模块间互相通信更自由。
        一旦为主远程数据模块添加属性表现子远程数据模块,客户应用程序不需要为应用服务器上的每个远程数据模块形成独立的连接。替换之,它们共享到主远程数据模块的连接,此模块分发消息到“子”数据模块。因为每个客户应用程序为每个远程数据模块使用相同的连接,远程数据模块能共享一个单独的数据库连接,节省了资源。关于子应用程序如何共享一个单独连接的信息,请参阅“使用多个数据模块连接到应用服务器”。
      

  2.   

    连接到使用多个数据模块的应用服务器
        如果应用服务器使用一个主“父亲”远程数据模块及多个子远程数据模块,如使用多个远程数据模块所述,则应用服务器上的每个远程数据模块需要用独立的连接组件。每个连接组件表现到单个远程数据模块的连接。
        客户应用程序从独立的连接到应用服务器的远程数据模块,更有效的方法是使用单个连接到被所有连接组件共享的应用服务器。即,添加单个连接组件连接到应用服务器的“主”远程数据模块,然后为每个远程数据模块添加一个附加的组件共享到主远程数据模块的连接。
    1. 对于到主远程数据模块的连接,如连接到应用服务器所述,添加并设置一个连接组件。唯一的限制是你不能使用 CORBA 或 SOAP 连接。
    2. 对于每个子远程数据模块,使用 TSharedConnection 组件。
    n 把它的 ParentConnection 属性设置为步骤 1 中添加的连接组件。TSharedConnection 组件共享这个主连接建立的连接。
    n 把它的 ChildName 属性设置为在主远程数据模块的接口上的属性的名称, 暴露希望的子远程数据模块的接口
        当把步骤 2 中放的 TSharedConnection 组件分配为 ClientDataSet 的 RemoteServer 属性的值时,它的行为如同使用到子远程数据模块的完全独立的连接。然而,TSharedConnection 组件使用由步骤 1 中所放置的组件所建立的连接。
      

  3.   

    谢谢 hiflower这么详细的解释,看来我得好好的看一下,然后有什么新的发现!!!