datasnap——动态注册服务类

Posted 咏南中间件和开发框架

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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——动态注册服务类的主要内容,如果未能解决你的问题,请参考以下文章

RPC原来就是socket——RPC框架到dubbo的服务动态注册,服务路由,负载均衡演化

Spring BootSpring Boot之使用ImportBeanDefinitionRegistrar类实现动态注册Bean

API 网关可以动态查找在服务注册表上注册的微服务的 URI 吗?

C/C++ --- 动态注册类

2. 配置非默认端口的动态服务注册

使用 JointCode.Shuttle 动态注册 / 注销服务