datasnap——动态注册服务类 datasnap——动态注册服务类 在DataSnap的应用程序时,我们首先需要注册的服务器类,以提供访问客户端应用程序的服务器方法。通常的做法是使用DSSer

datasnap——动态注册服务类

datasnap——动态注册服务类

在DataSnap的应用程序时,我们首先需要注册的服务器类,以提供访问客户端应用程序的服务器方法。通常的做法是使用DSServerClass组件,但有些时候,我们要做到在运行时加载。下面代码实现的类TSimpleServerClass从TDSServerClass继承,超载了Create方法并且增加了ServerClass,DataSnap Server和LifeCycle三个参数。

type 

TSimpleServerClass = class(TDSServerClass) 
private 
FPersistentClass: TPersistentClass; 
protected 
function GetDSClass: TDSClass; override; 
public 
constructor Create(AOwner: TComponent; AServer: TDSCustomServer; 
AClass: TPersistentClass; ALifeCycle: String); reintroduce; overload; 
end; 

procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer); 

implementation 

constructor TSimpleServerClass.Create(AOwner: TComponent; AServer: TDSCustomServer; 
AClass: TPersistentClass; ALifeCycle: String); 
begin 
inherited Create(AOwner); 
FPersistentClass := AClass; 
Self.Server := AServer; 
Self.LifeCycle := ALifeCycle; 
end; 

function TSimpleServerClass.GetDSClass: TDSClass; 
begin 
Result := TDSClass.Create(FPersistentClass, False); 
end;

现在我们只需要为每个Server Class初始化TSimpleServerClass。下面的代码在同一服务器上注册3个不同生命周期的类。

procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer); 
begin 
Assert(AServer.Started = false, 'Can''t add class to non active Server'); 

TSimpleServerClass.Create(AOwner, AServer, TGlobal, TDSLifeCycle.Server); 
TSimpleServerClass.Create(AOwner, AServer, TCustomer, TDSLifeCycle.Session); 
TSimpleServerClass.Create(AOwner, AServer, TObjectPool, TDSLifeCycle.Invocation); 
end;

——动态注册服务类在DataSnap的应用程序时,我们首先需要注册的服务器类,以提供访问客户端应用程序的服务器方法。通常的做法是使用DSServerClass组件,但有些时候,我们要做到在运行时加载。下面代码实现的类TSimpleServerClass从TDSServerClass继承,超载了Create方法并且增加了ServerClass,DataSnap Server和LifeCycle三个参数。type TSimpleServerClass = class(TDSServerClass) private FPersistentClass: TPersistentClass; protected function GetDSClass: TDSClass; override; public constructor Create(AOwner: TComponent; AServer: TDSCustomServer; AClass: TPersistentClass; ALifeCycle: String); reintroduce; overload; end; procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer); implementation constructor TSimpleServerClass.Create(AOwner: TComponent; AServer: TDSCustomServer; AClass: TPersistentClass; ALifeCycle: String); begin inherited Create(AOwner); FPersistentClass := AClass; Self.Server := AServer; Self.LifeCycle := ALifeCycle; end; function TSimpleServerClass.GetDSClass: TDSClass; begin Result := TDSClass.Create(FPersistentClass, False); end;现在我们只需要为每个Server Class初始化TSimpleServerClass。下面的代码在同一服务器上注册3个不同生命周期的类。procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer); begin Assert(AServer.Started = false, 'Can''t add class to non active Server'); TSimpleServerClass.Create(AOwner, AServer, TGlobal, TDSLifeCycle.Server); TSimpleServerClass.Create(AOwner, AServer, TCustomer, TDSLifeCycle.Session); TSimpleServerClass.Create(AOwner, AServer, TObjectPool, TDSLifeCycle.Invocation); end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值