datasnap 关于lifecycle的问题
首先DSServerClass的lifecycle属性有Invocation、Server、Session三种模式;
简单叙述一下三点区别:
- server:datasnap只初始化一个TDSServerModule对象,对外提供方法的访问,需要自己做访问互斥等操作;
- Session:客户端每次链接时会自动创建TDSServerModule,断开时会自动释放这个对象,线程级调用;
- Invocation:操作更细化,长连接时,每次服务器方法调用都会创建TDSServerModule对象,比较废资源;
另外需要注意的是:
当使用session模式时,请不要重写DSServerClass1的OnDestroyInstance事件,写了系统就不会自动释放建立的TDSServerModule对象。
当使用Invocation模式时,请不要手动创建DSServerClass1CreateInstance实例,系统会自动创建,你所需要做的就是重写OnDestroyInstance方法,在方法里加上一句代码DSDestroyInstanceEventObject.ServerClassInstance.Free;就可以完成自动创建对象的释放工作。
我的IDE环境是XE8,经过这样的测试session、invocation模式都不会提示内存溢出现象。
datasnap 关于lifecycle的问题的更多相关文章
- DataSnap控件TDSServerClass属性LifeCycle生命周期管理(From李维)
DelphiXE2中的DataSnap中提供了三种不同的生命周期,开发人员可以在TDSServerClass控件的LifeCycle特性中设定,下面分别说明每一种生命周期的意义 1. Server:在 ...
- datasnap的初步 生命期LifeCycle
datasnap的初步 生命期LifeCycle TDSServerClass有一个属性LifeCycle,这个属性有三个值,很好理解1.Session,这是默认值.就是一个连接,一个Sessio ...
- 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中罕有说明. 如果乱用这三种属性,你的服务程序有可 ...
- DataSnap 2009 系列之三 (生命周期篇)
DataSnap 2009 系列之三 (生命周期篇) DataSnap 2009的服务器对象的生命周期依赖于DSServerClass组件的设置 当DSServer启动时从DSServerClass组 ...
- 多层数据库应用基于Delphi DataSnap方法调用的实现(一)返回数据集
从Delphi 2009开始,DataSnap技术发生了很大的变化,并在Delphi 2010和Delphi XE的后续版本中得到了持续的改进.Delphi 2009之前的DataSnap,虽然也实现 ...
- datasnap 的线程池(转)
datasnap的线程池 新的datasnap使用INDY10的线程池.不管你知不知道,DATASNAP都是使用线程池了,这和MIDAS不同,MIDAS默认是没有线程池的. 跟踪INDY10线程池类T ...
- Delphi 三层框架 DataSnap 的服务器端设置
elphi 三层框架 DataSnap 的服务器端设置: DataSnap 框架有三个模块:DataSnap Server,Server Module,DataSnap Client Module. ...
- 创建DataSnap Server
DataSnap REST Application http://edn.embarcadero.com/article/41305 2017.1.19 官方例子 https://community. ...
随机推荐
- 0069 如何在Intellij IDEA中查看Spring MVC项目的所有请求与处理方法的映射列表
@RequestMapping注解分散于Controller中,如何在一个列表中看到所有的请求呢,比如下面这样: File-->Project Structure-->Modules--& ...
- FreeRTOS 定时器组
以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 支持的定时器组,或者叫软件定时器,又或者叫用户定时器均可.软件定时器的功 ...
- [每天一个Linux小技巧] 查看时钟源精度
$ dmesg | grep clock [0.000000] OMAP clocksource: GPTIMER1 at 24000000 Hz [0.000000] sched_clock: 3 ...
- Linux下清空缓冲区的方法
Linux下清空缓冲区的方法 C标准规定fflush()函数是用来刷新输出(stdout)缓存的.对于输入(stdin),它是没有定义的.但是有些编译器也定义了fflush( stdin )的实现,比 ...
- tftp server setup
今天开始调试ARM的板子,要通过tftp下载到板子上,所以又要配置tftp服务器,真的烦死了… (本人酷爱装系统,所以经常都要搞配置) 因为之前已经在Ubuntu下搭建过很多次tftp服务器了,但是一 ...
- PHP——自定义函数
<?php //定义有默认值的函数 function Main3($f=5,$g=6) { echo $f*$g; } Main3(2,3); echo "<br />&q ...
- Maven + Spring 进行多环境自动切换功能
在pom.xml的<project></project>的最下放写入如下代码: <!-- profiles setting start [mvn install -P x ...
- 深入理解JVM--JVM垃圾回收机制(转)
Java语言出来之前,大家都在拼命的写C或者C++的程序,而此时存在一个很大的矛盾,C++等语言创建对象要不断的去开辟空间,不用的时候有需要不断的去释放控件,既要写构造函数,又要写析构函数,很多时候都 ...
- sql循环插入测试数据
declare @i int set @i=1while @i<61 begin insert into T_RolePower values(1,@i,1)set @i=@i+1 end
- EasyUI 另一种form提交方式
(function ($) { window.XW = {}; //全局系统对象 //异步请求统一调用方法 XW.ajax = function (options, param, callback) ...