Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明

转载 2011年01月11日 15:29:00

Lifecycle 三种属性: Session、Invocation、Server

这三种属性都用在什么情况,有什么要注意的事项,Delphi2010中罕有说明。

如果乱用这三种属性,你的服务程序有可能崩溃,数据混乱,内存占用大,效率低等问题!

下面我对这三种属性的使用环境逐一介绍:

1. Session

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

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

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

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

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

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

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

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

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

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sunstone/archive/2010/02/02/5282666.aspx

相关文章推荐

Delphi2010中DataSnap高级技术(5)—建立稳定服务程序之TCP心跳包的使用

原文出处:http://blog.csdn.net/sunstone/archive/2009/12/17/5023718.aspx 为了能让我们的服务程序更加稳定,有些细节问题必须解决。就如上一讲中...

Delphi2010中DataSnap高级技术(6)—加强服务程序对访问者的控制能力

Delphi2010中DataSnap高级技术(6)—加强服务程序对访问者的控制能力

Delphi2010中DataSnap高级技术(4)—TCP keepAlive和KeepAliveInterval参数详解

Delphi2010中DataSnap高级技术(4)—TCP keepAlive和KeepAliveInterval参数详解

Delphi2010中DataSnap高级技术(4)—TCP keepAlive和KeepAliveInterval参数详解

原文出处:http://blog.csdn.net/sunstone/archive/2009/12/16/5016363.aspx Delphi2010中DataSnap,如果客户端异常掉线或拔掉网...

[转]Delphi2010中DataSnap高级技术(4)—TCP keepAlive和KeepAliveInterval参数详解

====================================================== 注:本文源代码点此下载 =============================...

生命周期LifeCycle

  • 2012-01-07 12:08
  • 46KB
  • 下载

iOS开发UI高级—06使用storyboard创建导航控制器以及控制器的生命周期

iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期 一、基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉。 在s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)