DelphiXE2中的DataSnap中提供了三种不同的生命周期,开发人员可以在TDSServerClass控件的LifeCycle特性中设定,下面分别说明每一种生命周期的意义

1. Server:在整个DataSnap服务端中只会建立一个服务端类别对象以服务所有的用户端,只有当DataSnap服务器结束

才会释放该服务类别对象

2. Session:在DataSnap服务器中会为每一个连接的用户端建立一个专属的服务类别对象服务此用户端,移动用户端结束

或是关闭TSQLConnection的连接,此服务类别对象便会释放

3. Invocation: 在DataSnap服务器中没当用户端执行一次请求时,在DataSnap服务器便会为这个请求建立一个服务器

类别对象服务此用户端请求,当请求执行结束后,DataSnap服务器便会释放此服务类别对象

从上面的说明中我们可以了解,使用Server生命周期的服务端服务类别只会在DataSnap服务器中建立一个服务对象,使用Session生命周期的服务端服务类别则视用户端使用多少TSQLConnection控件藉由DataSnap驱动程式连结到DataSnap服务器的数目而在DataSnap服务器中建立相对应的服务对象来服务服务,最后使用Invocation生命周期的服务端服务类别则会在每一次用户端呼叫DataSnap服务器时被建立来服务用户端,因此被建立和释放的次数相当巨量

那么开发人员应该如何决定使用哪一种的生命周期服务端服务类别呢?这当然要看服务端服务类别香袋的服务各类,下面的表格简单的说明了每一种生命周期适用的场景:

1。Server:提供所有用户端公用的服务,由于所有用户端都使用单一的服务端服务类别对象,因此使用这种生命周期的

服务对象负荷都比较大,使用这种生命周期的服务对象适合提供快速,简单,无状态的服务为主。

2。Session:由于这种生命周期形态的服务端服务类别对象会每一个用户端的连结建立一个专属的服务对象,因此可提

供用户端无状态以及有状态的服务,也可提供长期,负荷较大的服务。

3。Invocation:这种生命周期形态的服务端服务类别对象只存在于每一个用户端的呼叫周期,因此适合提供可在背景

执行的服务,或是执行资料库的预储程序,或是批次处理等和用户端较无相关的服务。不过由于使用

这种生命周期的服务类别会被频繁的建立和释放,因此这种服务类别应该尽量精简。如果需要使用资

料库,那么也应该搭配使用dbExpress的连结池功能以加快服务速度。

DataSnap控件TDSServerClass属性LifeCycle生命周期管理(From李维)的更多相关文章

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

    From http://blog.csdn.net/sunstone/article/details/5282666 DataSnap高级技术(7)—TDSServerClass中Lifecycle生 ...

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

    Lifecycle 三种属性: Session.Invocation.Server 这三种属性都用在什么情况,有什么要注意的事项,Delphi2010中罕有说明. 如果乱用这三种属性,你的服务程序有可 ...

  3. ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性

    原文:ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性 深入讲解控件的属性持久化(一) 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开 ...

  4. C#控件事件属性大全

    C#控件及常用设计整 1.窗体... 1 2.Label 控件... 3 3.TextBox 控件... 4 4.RichTextBox控件... 5 5.NumericUpDown 控件... 7 ...

  5. Jetpack 架构组件 Lifecycle 生命周期 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. C#常用控件的属性以及方法(转载)

    -----以前看别人的,保存了下来,但是忘了源处,望见谅. C#常用控件属性及方法介绍 目录 1.窗体(Form) 2.Label (标签)控件 3.TextBox(文本框)控件 4.RichText ...

  7. C#常用控件和属性

    目录1.窗体(Form)2.Label (标签)控件3.TextBox(文本框)控件4.RichTextBox控件5.NumericUpDown控件6.Button(按钮)控件7.GroupBox(分 ...

  8. C# winform 跨线程更改窗体控件的属性

    当winform程序中新开一个线程,是无法改变主线程中窗体控件的属性的,否则运行时会报错. 若想在其他线程中控制主线程中的窗体控件,则必须利用BeginInvoke方法. 例如:添加一个名为textb ...

  9. Android中常用控件及属性

    在之前的博客为大家带来了很多关于Android和jsp的介绍,本篇将为大家带来,关于Andriod中常用控件及属性的使用方法,目的方便大家遗忘时,及时复习参考.好了废话不多讲,现在开始我们本篇内容的介 ...

随机推荐

  1. Python 文件常见操作

    # -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname()  ...

  2. 08void

    void void修饰函数返回值和参数 如果函数没有返回值,那么应给将其声明为void 如果函数没有参数,应该声明其参数为void 不存在void类型的变量 void指针的意义 C语言规定只有相同类型 ...

  3. 【MySQL】drop大表

    利用硬链接和truncate降低drop table对线上环境的影响 众所周知drop table会严重的消耗服务器IO性能,如果被drop的table容量较大,甚至会影响到线上的正常. 首先,我们看 ...

  4. 为luna版本eclipse增加Web插件

    插件地址: http://download.eclipse.org/releases/luna/

  5. svn常用操作

    1将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:sv ...

  6. form表单的enter自动提交

    当form中只有一个文本框时并且获得焦点 按enter时,就会自动提交表单.阻止自动提交 可以添加一个隐藏的input框 <input type="text" style=& ...

  7. 从高处理解android与服务器交互(看懂了做开发就会非常的容易)

    今天帮一个朋友改一个bug 他可以算是初学者吧 .我给他看了看代码,从代码和跟他聊天能明显的发现他对客户端与服务器交互 基本 不是很了解.所以我花了更多时间去给他讲客户端与服务器的关系.我觉得从这个高 ...

  8. mysql下将分隔字符串转换为数组

    MySQL存储过程可以用于分割字符串,下面就为您详细介绍这种MySQL存储过程的用法,供您参考学习之用. 现有一段字符串,如apple,banana,orange,pears,grape,要把它按照逗 ...

  9. linux 查看系统信息

    一.查看内存信息 可以使用free命令显示系统的物理内存和交换分区的总量,以及已使用的.空闲的.共享的.在内核缓冲内的和被缓存的内存数量. 使用free命令可以显示计算机系统的内存容量. [root@ ...

  10. webuploader 上传文件参数设置

    webUploader 是款很好用的优秀的开源上传组件,由百度公司开发,详细的介绍可参见webUploader 的官方文档: 最近在使用webUploader时,需要添加额外的参数,并在后台获取,参数 ...