使用DataSnap从另一个服务器模块创建Delphi服务器模块的最佳方法是什么?

使用DataSnap从另一个服务器模块创建Delphi服务器模块的最佳方法是什么?,delphi,datasnap,Delphi,Datasnap,使用delphixe6/XE7 我有一个带有两个服务器模块的DataSnap独立服务器 第一个服务器模块具有“会话”生命周期: object DSServerSession: TDSServerClass OnGetClass = DSServerSessionGetClass Server = DSServer1 LifeCycle = 'Session' end procedure TServerContainer1.DSServerSessionGetClass( DSS

使用delphixe6/XE7

我有一个带有两个服务器模块的DataSnap独立服务器

第一个服务器模块具有“会话”生命周期:

object DSServerSession: TDSServerClass
  OnGetClass = DSServerSessionGetClass
  Server = DSServer1
  LifeCycle = 'Session'
end

procedure TServerContainer1.DSServerSessionGetClass(
  DSServerClass: TDSServerClass; var PersistentClass: TPersistentClass);
begin
  PersistentClass := uSM.TSM;
end;
object DSServerGlobal: TDSServerClass
  OnGetClass = DSServerGlobalGetClass
  Server = DSServer1
  LifeCycle = 'Server'
end

procedure TServerContainer1.GlobalGetClass(DSServerClass: TDSServerClass;
   var PersistentClass: TPersistentClass);
begin
  PersistentClass := uSMGlobal.TSMGlobal;
end;
第二个服务器模块具有“服务器”生命周期:

object DSServerSession: TDSServerClass
  OnGetClass = DSServerSessionGetClass
  Server = DSServer1
  LifeCycle = 'Session'
end

procedure TServerContainer1.DSServerSessionGetClass(
  DSServerClass: TDSServerClass; var PersistentClass: TPersistentClass);
begin
  PersistentClass := uSM.TSM;
end;
object DSServerGlobal: TDSServerClass
  OnGetClass = DSServerGlobalGetClass
  Server = DSServer1
  LifeCycle = 'Server'
end

procedure TServerContainer1.GlobalGetClass(DSServerClass: TDSServerClass;
   var PersistentClass: TPersistentClass);
begin
  PersistentClass := uSMGlobal.TSMGlobal;
end;
然后,客户端应用程序可以访问服务器模块上的全局对象(如用户控制功能),同时使用会话服务器模块对数据库进行请求。在应用程序的客户端,我使用SQLConnection和TDSProviderConnection


我的问题是,从同一服务器上的会话服务器模块访问全局服务器模块(生命周期=会话)的最佳方式是什么?请注意,我们没有使用DataModules的模块式客户机/服务器应用程序的全局引用(变量)。最重要的是,我需要确保客户端应用程序和会话服务器模块使用全局服务器模块的相同实例。

对于您的情况,具有会话生命周期的服务器模块是DataSnap服务器的客户端。与常规DataSnap客户端应用程序一样:将TSQLConnection组件放到会话服务器模块上,将驱动程序属性设置为DataSnap,生成DataSnap客户端类,我想您就可以开始了。

我只会使用一个lifecycle=Session的服务器模块。然后使用全局函数创建一个不同的datamodule类。然后创建此datamodule的静态引用。在客户端第一次连接时创建它。