datasnap的初步 生命期LifeCycle
datasnap的初步 生命期LifeCycle
1.Session,这是默认值。
就是一个连接,一个Session,一个Session的意思就是连接上来后,服务器端就创建一个DSServerClassGetClass里返回的PersistentClass一个实例,并一直保持到连接断开,所有这期间的ServerMethod调用,都是这个实例的调用。所以这是线程安全的。
2.Server
顾名思义,就是全局就一个PersistentClass的实例,所有的连接Call上来的ServerMethod都是这唯一实例的调用,单例模式,当然,这也就不是线程安全的,需要自己来实现线程安全。
3.Invocation
这个更细,每次ServerMethod的Call,都将创建和销毁一PersistentClass的实例。由于创建销毁比较耗资源,可以操作TDSServerClass的OnCreateInstance和OnDestroyInstance事件,在这两个事件里面做缓存池。代码如下
procedure TServerContainer1.DSServerClass1CreateInstance(
DSCreateInstanceEventObject: TDSCreateInstanceEventObject);
begin
DSCreateInstanceEventObject.ServerClassInstance := 缓存池取一个实例
end; procedure TServerContainer1.DSServerClass1DestroyInstance(
DSDestroyInstanceEventObject: TDSDestroyInstanceEventObject);
begin
将DSCreateInstanceEventObject.ServerClassInstance的实例还给缓存池
end;
缓存池的实现很简单了,就不写了。
datasnap的初步 生命期LifeCycle的更多相关文章
- datasnap的初步
datasnap的初步-回调函数 服务器端 TServerMethods1 =class(TComponent) private { Private declarations } public { P ...
- 使用无限生命期Session的方法
使用无限生命期Session的方法 [来源] 达内 [编辑] 达内 [时间]2013-03-28 Session储存在服务器端,根据客户端提供的SessionID来得到这个用户的文件,然后读 ...
- Tomcat 8(九)解读Tomcat组件的生命周期(Lifecycle)
Tomcat 8(七)解读Bootstrap介绍过.运行startup.bat.将引发Tomcat一连串组件的启动.事实上这一连串启动是通过组件的生命周期(Lifecycle)实现的 今天来看看Lif ...
- C++临时对象的生命期
class Test{ public: Test(int a):m_int(a){ printf("this is Test(%d) ctor\n", m_int); } ~Tes ...
- How tomcat works(深入剖析tomcat)生命周期Lifecycle
How Tomcat Works (6)生命周期Lifecycle 总体概述 这一章讲的是tomcat的组件之一,LifeCycle组件,通过这个组件可以统一管理其他组件,可以达到统一启动/关闭组件的 ...
- DataSnap控件TDSServerClass属性LifeCycle生命周期管理(From李维)
DelphiXE2中的DataSnap中提供了三种不同的生命周期,开发人员可以在TDSServerClass控件的LifeCycle特性中设定,下面分别说明每一种生命周期的意义 1. Server:在 ...
- tomcat 容器生命周期lifecycle
1.复习java的事件机制 java事件机制包括三个部分:事件.事件监听器.事件源. 事件:一般继承自java.util.EventObject类,封装了事件源对象及跟事件相关的信息. 事件监听器:实 ...
- Yii2基本概念之——生命周期(LifeCycle)
人有生老病死,一年有春夏秋冬四季演替,封建王朝有兴盛.停滞.衰亡的周期律--"其兴也勃焉,其亡也忽焉".换句话说,人,季节,王朝等等这些世间万物都有自己的生命周期.同样地,在软件行 ...
- Vue 生命周期LIFECYCLE是8个吗?
vue生命周期钩子个数是:11个. export const LIFECYCLE_HOOKS = [ 'beforeCreate', 'created', 'beforeMount', 'mounte ...
随机推荐
- mysql:忘记root密码
1:修改/etc/my.cnf 2:重启服务 3:进入mysql 4:修改密码 5:刷新权限 注意:修改完成后,别忘了修改/etc/my.cnf,删除skip-grant-tables,否则重启服务后 ...
- a new blog from MarsEdit
终于在网上找到了一款mac 下的blog写作和发布工具了. 先测试一下.
- Run Loop详解
Run loops是线程的基础架构部分.一个run loop就是一个事件处理循环,用来不停的调配工作以及处理输入事件.使用run loop的目的是使你的线程在有工作的时候工作,没有的时候休眠. Run ...
- Python基础(二)之list
列表:用[]表示 常用方法: list.append,list.insert,list.remove,list.pop,list.count,list.sort,list.reverse,list.i ...
- sql事务的调用
一.数据库的SQL USE [Text]GO/****** Object: StoredProcedure [dbo].[mon] Script Date: 2017-01-03 15:59:28 * ...
- Entity Framework 学习笔记
1.自定义数据库链接字符串上下文 public class PetDbContext : DbContext { public PetDbContext() : base("name=Dem ...
- seo高级指令
1.双引号:完全匹配2.减号(-):代表搜索不包含减号后面的启事的页面3.星号(*):是常用的通配符,百度不支持4.inurl:指令用于搜索查询词出现在URL中的页面5.inanchor:指令返回的结 ...
- Laravel学习笔记(四)数据库 数据库迁移案例
创建迁移 首先,让我们创建一个MySql数据库“Laravel_db”.接下来打开app/config目录下的database.php文件.请确保default键值是mysql: return arr ...
- eclipse提高效率 MAC
1添加代码提示,在java contentaasist里面加所有字母 2行注释, 块注释mac里是command ctrl加\,鼠标行注释shift+\ 3.快速添加注释doc comman ...
- DIY的.net正则表达式工具
基本包括了常用的正则表达式测试工作. 对应.net Framework 2.0版本 VB.NET编写 百度网盘下载:http://pan.baidu.com/s/1eQAHnlo 包含源码. 在下一个 ...