码迷,mamicode.com
首页 > Windows程序 > 详细

DelphiXE7 Datasnap TDSClientCallbackChannelManager内部实现初探

时间:2015-01-13 01:24:29      阅读:762      评论:0      收藏:0      [点我收藏+]

标签:

回调的原理很简单,开一个线程(为了区别其它线程,先将此线程命名为“通道线程”),注册一个“轻量”的回调,然后此线程(通道线程)等服务器返回信息(回调),服务器有信息返回时,通道线程再开个线程执行用户注册的回调(TDBXCallback)的EXECUTE方法。通道线程返回继续等服务器的回调信息。

TDSClientCallbackChannelManager.Broadcast

TDSClientCallbackChannelManager.NotifyCallback

这两方法可以通过服务器向其它客户端发送信息,NotifyCallback方法可以接收到其它客户的回复信息。这两个方法在发送消息的时候,会和服务器建立一个新的连接,(可以在服务器监测到)。发送信息后,立即断开连接。频繁的发送,可能对服务程序有影响。程序退出时,会再连接,断开2-3次,进行一些收尾操作,如注销通道等。

TDSClientCallbackChannelManager注册的回调,DEMO或文档上称为“重量级”的回调。(XE7之前的DEMO中有,现在好像是整到其它DEMO中了)

当我们需要和其它客户端通信或广播消息时,最好在服务程序加入一个方法,由客户端程序调用此方法来实现消息的广播,而不是通过TDSClientCallbackChannelManager。

XE7的DEMO中即采取了这种方式。这样就减少了和服务程序的连接断开次数,增加了服务端的性能。

 

DelphiXE7 Datasnap TDSClientCallbackChannelManager内部实现初探

标签:

原文地址:http://www.cnblogs.com/Jiaojiawang/p/4220268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!