DataSnap控件TDSServerClass属性LifeCycle生命周期管理(From李维)
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李维)的更多相关文章
- DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明
From http://blog.csdn.net/sunstone/article/details/5282666 DataSnap高级技术(7)—TDSServerClass中Lifecycle生 ...
- Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明
Lifecycle 三种属性: Session.Invocation.Server 这三种属性都用在什么情况,有什么要注意的事项,Delphi2010中罕有说明. 如果乱用这三种属性,你的服务程序有可 ...
- ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性
原文:ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性 深入讲解控件的属性持久化(一) 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开 ...
- C#控件事件属性大全
C#控件及常用设计整 1.窗体... 1 2.Label 控件... 3 3.TextBox 控件... 4 4.RichTextBox控件... 5 5.NumericUpDown 控件... 7 ...
- Jetpack 架构组件 Lifecycle 生命周期 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- C#常用控件的属性以及方法(转载)
-----以前看别人的,保存了下来,但是忘了源处,望见谅. C#常用控件属性及方法介绍 目录 1.窗体(Form) 2.Label (标签)控件 3.TextBox(文本框)控件 4.RichText ...
- C#常用控件和属性
目录1.窗体(Form)2.Label (标签)控件3.TextBox(文本框)控件4.RichTextBox控件5.NumericUpDown控件6.Button(按钮)控件7.GroupBox(分 ...
- C# winform 跨线程更改窗体控件的属性
当winform程序中新开一个线程,是无法改变主线程中窗体控件的属性的,否则运行时会报错. 若想在其他线程中控制主线程中的窗体控件,则必须利用BeginInvoke方法. 例如:添加一个名为textb ...
- Android中常用控件及属性
在之前的博客为大家带来了很多关于Android和jsp的介绍,本篇将为大家带来,关于Andriod中常用控件及属性的使用方法,目的方便大家遗忘时,及时复习参考.好了废话不多讲,现在开始我们本篇内容的介 ...
随机推荐
- ruby 生成有条件限制的随机数
#conding:utf-8 #生成只有数字的随机码可控制长度def random_int(len) newpass = "" 1.upto(len){ |i| newpass & ...
- IIS7.5 伪静态 脚本映射 配置方法
首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为7.0,我们知道,IIS7.0与IIS6.0 核心注意的地方:先要将应用池设置为集成模式,修改OK后,再 ...
- 获取layer.open弹出层的返回值
正在开发的车联网项目用到了layer API.当我在开发“新建电子围栏”的时候需要弹出地图,用户在地图中画一个区域,最后将这个弹出层的数据返回给原页面.下面是我的实现过:程: 触发弹出层的代码: la ...
- C# 进程间通信之二传递复杂数据类型(转)
从C#下使用WM_COPYDATA传输数据说到Marshal的应用 笔者曾在一个项目的实施过程中,需要使用WM_COPYDATA在本地机器的两个进程间传输数据.在C++中实现非常简单,但在C#中实现时 ...
- stickUp让页面元素“固定”位置
stickUp能让页面目标元素“固定”在浏览器窗口的顶部,即便页面在滚动,目标元素仍然能出现在设定的位置. http://www.bootcss.com/p/stickup/
- 如何通过JavaScript构建Asp.net服务端控件
摘要 虽然ASP.NET的服务器控件一直被大家所诟病,但是用户控件(ACSX)在某些场景下还是非常有用的. 在一些极特珠的情况下,我们会使用JavaScript动态的构建页面中的控件,但假设遇到了我要 ...
- List subList(startIndex, endIndex);
1. subList(startIndex, endIndex);//startIndex开始,到endIndex结束,不包含endIndex! 2. 集合排序可以实现 java.util.Compa ...
- 71. Merge k Sorted Lists
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- Android开发-自动更新
为车机写apk,先实现版本的自动更新. 1.不能再主线程中调用会阻塞ui的功能,需要使用异步方式调用网络,引入Android Async Http框架,需要两个包:android-async-http ...
- 十四、View Port 2.0
1. 分为以下几类: (1) data classes: 用来访问scene中的geometry 和 shaders (2)scene override: 主要是用户自定义的drawing .shad ...