博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
datasnap生命期LifeCycle
阅读量:5825 次
发布时间:2019-06-18

本文共 1308 字,大约阅读时间需要 4 分钟。

TDSServerClass有一个属性LifeCycle,这个属性有三个值,很好理解

1.Session,这是默认值。
说明:这是默认属性,也是delphi推荐设置。Session会为每个来自客户端的链接,建立一个线程来实例化。实例化是什么概念呢?就是这个线程把所有你将要用到的类、函数等等都建立好了,等待你客户端直接使用。这个线程和实例化并不释放,直到客户端中断连接。如果有300个客户端,那么你的服务器将会有300线程和实例,对服务器硬件和内存是个考验。

适用环境:这个设置是线程安全的!

  • 客户端数量少,每台服务器不超过连接数量: 200 x CPU个数 x (每个CPU核数x0.7) (这是经验值,稳定连接的数量,不是极限数量,别误解^_^),内存现在很便宜了,想加多大就多大!
  • 客户端频繁调用服务器数据,无论连接数量是多少,最好都用这种设置。如果客户端很多,建议采用负载平衡和多台服务器来解决。

2.Server

顾名思义,就是全局就一个PersistentClass的实例,所有的连接Call上来的ServerMethod都是这唯一实例的调用,单例模式,当然,这也就不是线程安全的,需要自己来实现线程安全。

说明:服务器对所有客户端连接使用一个实例,不是线程安全的。所以要自己控制客户端并发调用的问题(可以使用互斥、原子量等方法),让客户端的调用排成一队使用服务器资源。

 适用环境:这个设置不是线程安全的

  • 配置较低的服务器
  • 服务器连接的另一端只能是单线程工作的模式

3.Invocation

这个更细,每次ServerMethod的Call,都将创建和销毁一PersistentClass的实例。由于创建销毁比较耗资源,可以操作TDSServerClass的OnCreateInstance和OnDestroyInstance事件,在这两个事件里面做缓存池。代码如下

procedure TServerContainer1.DSServerClass1CreateInstance(   DSCreateInstanceEventObject: TDSCreateInstanceEventObject); begin  DSCreateInstanceEventObject.ServerClassInstance := 缓存池取一个实例 end;   procedure TServerContainer1.DSServerClass1DestroyInstance(   DSDestroyInstanceEventObject: TDSDestroyInstanceEventObject); begin  将DSCreateInstanceEventObject.ServerClassInstance的实例还给缓存池 end;

缓存池的实现见DATASNAP对象池章节。

说明:服务器只是建立连接,但是先不做实例化,只有当客户端请求功能的时候,服务器才开线程并实例化,当客户端用完后,服务器就释放线程和实例。

 适用环境:这个设置是线程安全的!

  • 如果客户端调用服务器数据频率低,这种方法很不错,会节约很多内存。

转载地址:http://jksdx.baihongyu.com/

你可能感兴趣的文章
MyBatis使用DEMO及cache的使用心得
查看>>
网站文章如何能自动判定是抄袭?一种算法和实践架构剖析
查看>>
【OpenCV学习】滚动条
查看>>
ofo用科技引领行业进入4.0时代 用户粘性连续8个月远甩摩拜
查看>>
无法拒绝|华为618最高优惠1000元 更有梅西签名球衣奉送
查看>>
乐信Q2季报图解:调整后净利过5亿 同比增长776%
查看>>
兰州青年志愿者“中西合璧”玩快闪 温暖旅客回家路
查看>>
计划10年建10万廉价屋 新西兰政府:比想象中难
查看>>
甘肃发首版《3D打印职业教育教材》:校企合作育专才
查看>>
内蒙古2019年精准脱贫新“目标”:20个贫困旗县全部摘帽
查看>>
韩国国会议员涉嫌投机炒房 检方称已立案调查
查看>>
李娜入选国际网球名人堂 成亚洲第一人
查看>>
为找好心人抚养孩子 浙江一离婚父亲将幼童丢弃公园
查看>>
晚婚晚育 近20年巴西35岁以上孕妇增加65%
查看>>
读书:为了那个美妙的咔哒声
查看>>
我从过去八个月的AI公司面试中学到了什么?
查看>>
jQuery实践小结
查看>>
深入探究Immutable.js的实现机制(一)
查看>>
jsp改造之sitemesh注意事项
查看>>
iOS底层原理总结 - 探寻block的本质(二)
查看>>