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高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明

Lifecycle 三种属性: Session、Invocation、Server这三种属性都用在什么情况,有什么要注意的事项,Delphi2010中罕有说明。如果乱用这三种属性,你的服务程序有可能崩...
  • sunstone
  • sunstone
  • 2010年02月02日 21:11
  • 5481

DataSnap—TDSServerClass中Lifecycle生命周期三种属性说明

Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明 Lifecycle 三种属性: Session、Invocation、Se...
  • jiangbin0315
  • jiangbin0315
  • 2012年09月03日 15:29
  • 422

Delphi2010中DataSnap高级技术(2)—DataSnap服务端和客户端发布分发方法

这几天继续研究DataSnap技术。针对服务器和客户端软件,如何发布呢?经过研究发现,分发方法非常简单! 服务器发布方法:1.在unit ServerMethodsUnit1单元中,添加uses Mi...
  • sunstone
  • sunstone
  • 2009年12月09日 11:14
  • 7666

Delphi2010中DataSnap高级技术

http://blog.csdn.net/leonkin/article/details/6051969 1)—为DataSnap系统服务程序添加描述 这几天一直在研究Delphi 2010的...
  • ksrsoft
  • ksrsoft
  • 2013年11月07日 17:04
  • 1199

在Datasnap服务端动态注册类

原文地址:http://www.andreanolanusse.com/en/registering-datasnap-server-class-in-runtime-with-delphi/ 当我...
  • Seatune
  • Seatune
  • 2013年11月14日 10:07
  • 867

Delphi2010开发DataSnap服务器(一)

今天简单的研究了一下Delphi开发DataSnap服务器,以下是简单的例子,各位见笑了。 第一步创建一个DataSnap Server 这里选择默认 选择好了以后这里生成3个文件,我将...
  • qwe515800
  • qwe515800
  • 2016年12月04日 16:13
  • 620

Delphi 的一个加密和压缩组件 (用于DataSnap多层程序中)

DSFC -- DataSanp过滤和压缩系列,由九个过滤器组成,是为Delphi2010版定制的。过滤器分下面三组:HASH¶MD5 MD4 SHA1 SHA512 CIPHER¶Blowfish ...
  • busintel
  • busintel
  • 2010年11月04日 12:57
  • 2762

spring中的lifeCycle(生命周期)

spring的生命周期. 1.       容器启动,实例化所有实现了BeanFactoyPostProcessor接口的类。他会在任何普通Bean实例化之前加载. 2.       实例化剩...
  • A1023824314
  • A1023824314
  • 2016年11月25日 00:20
  • 554

Delphi2010中DataSnap技术网摘

作为一个服务器软件,必须做到对客户端强有力的控制,想要控制,就必须得到客户端的网络基本信息,比如客户端IP和端口。有了客户端IP就能随心所欲操控客户端,比如终止某些客户端的连接、限制功能等等。   在...
  • xieyunc
  • xieyunc
  • 2015年08月22日 22:20
  • 1040

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

原文出处:http://blog.csdn.net/sunstone/archive/2009/12/16/5016363.aspx Delphi2010中DataSnap,如果客户端异常掉线或拔掉网...
  • night_cat
  • night_cat
  • 2011年03月06日 20:34
  • 1039
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明
举报原因:
原因补充:

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