RO14 –介绍DiscoveryClient和DiscoveryServer组件 实现均衡负载

来源:互联网 发布:a8超频软件 编辑:程序博客网 时间:2024/06/06 20:37
 
RO14 –介绍DiscoveryClientDiscoveryServer组件   实现均衡负载
为了使用广播通道RemOjebcts SDK包含了一对可在你的RO程序中整合服务搜索功能的控件.
假设在这种情况下:有多个运行在LAN中的服务通过RO提供不同的服务.为了均衡负载有的服务可运行在多个服务端,但是并不是所以的服务都能在任意服务端运行.
如果你的客户端不依赖与具体的服务端地址而能自动的找到可用的服务器不是很美好的事情吗?这样你可以轻松的修改服务端配置将服务从一个服务端移动到另一个服务端,或从一个服务端部署到更多的服务端,而不用修改客户端的配置.
Discovery 组件
The Discovery组件可以不写任何代码就能轻松获取可用的服务器信息.
在服务端向主窗体或DataModule中拖放一个TRODiscoveryServer控件, 就可以发布所有已经运行的自定义服务,这样客户端就可以检查服务端的那些服务可用.也可以得到一个服务端执行的RO服务对象列表,或者通过ServiceList属性指定服务器的名字.
在客户端TRODiscoveryClient给出简单的查询可用服务的方法.简单的设置其ServiceName属性为搜索到的服务器名字,调用RefreshServerList,ServerList将会显示搜索到的所有可用服务的IP地址 ,事件OnNewServersFound会被每个可用服务触发.
procedure TForm1.btn_LookupServiceClick(Sender: TObject);
begin
 RODiscoveryClient.ServiceName := ed_ServiceName.Text;
 RODiscoveryClient.RefreshServerList();
end;
 
procedure TForm1.RODiscoveryClientNewServersFound(Sender: TObject);
begin
 ListBox_Servers.Items.Assign(RODiscoveryClient.ServerList)
end;
也可以调用FindServer方法获取第一响应的服务.
理想情况下,可以使用广播服务发布服务端应用程序服务,客户端的TROBroadcastChannel发布请求.
ServerDiscovery 范例
RemObjects SDK ServerDiscovery范例向你展示如何在具体的项目中应用这些控件.这个范例中应用程序即做服务端也做客户端.作为服务端你可以在右边修改服务列表声明支持,同时客户端部分输入服务名字后获取LAN中支持这个服务的服务器.
如下截图,两个本地服务器支持SomeService服务:
 
 
原创粉丝点击