zoukankan      html  css  js  c++  java
  • datasnap的初步 生命期LifeCycle

    datasnap的初步 生命期LifeCycle

     
    TDSServerClass有一个属性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; 
    
    
    缓存池的实现很简单了,就不写了。
  • 相关阅读:
    纯CSS实现自动轮播,CSS变量的定义与使用,计算属性的使用
    input:file样式怎样修改
    Div转为Canvas简直不要太好玩~~~
    oracle nvl2函数
    oracle 子查询
    oracle 分组函数执行分析
    oracle外部表
    oracle USING 用法
    面向对象进阶
    面向对象基础
  • 原文地址:https://www.cnblogs.com/s502/p/3237533.html
Copyright © 2011-2022 走看看