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. IOS WebView修改contentInset 导致webview长按弹出菜单跳动的解决方法

    最近在项目中需要用到webview 加载H5 并且在webview 底部使用原生UI添加其他空间比如广告.或者评论(Scrollview) 最初使用修改webview中scrollview 的cont ...

  2. java中==和equals的区别

  3. 利用SQL 建立和删除 LINKED SERVER

    USE IS21_xxx; if object_id('tempdb..#tmp') is not null drop table #tmp create table #tmp ( cntr ), i ...

  4. 【HOW】如何限制Reporting Services报表导出功能中格式选项

    Reporting Services报表导出功能中缺省会提供多种导出格式选项,但很多情况下不需要全部的格式选项,因此需要对这些选项进行限制.下面我们以SQL Server 2008 R2为例来说明对这 ...

  5. LCA

    2016.1.28 LCA,就是最近公共祖先,这里介绍倍增的算法. 首先我们要预处理,设f[i][j]为编号为i的节点的2j级祖先,所谓2j级祖先,就是从i节点开始往树的上层数2j个节点.如下图所示 ...

  6. Silverlight 页面传值问题(转)

    共有两种方式来传递初始化参数 1)在html或者aspx页面中object对象中加入一下代码 参数格式:参数名 = 值,参数名 = 值,... <param name="initPar ...

  7. jira的使用

    http://www.cnblogs.com/yangxia-test/p/4448002.html linux下的安装: http://blog.csdn.net/crave_shy/article ...

  8. python:让源码更安全之将py编译成so

    应用场景 Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效. python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解 ...

  9. android开发--多线程

    android中的几种多线程实现方式: 1)Activity.runOnUiThread(Runnable) 2)View.post(Runnable) ;View.postDelay(Runnabl ...

  10. nil与NULL的区别

    首先nil表示无值,任何变量在没有被赋值之前的值都为nil,对于真假判断,只有nil与false表示假,其余均为真.而NULL是一个宏定义,值为0.并且,nil一般赋值给空对象,NULL一般赋值给ni ...