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; 
    
    
    缓存池的实现很简单了,就不写了。
  • 相关阅读:
    基于决策树和智能搜索系统
    基于神经网络的人工智能系统
    身边的人工智能&人工智能发展史
    Linux简介和环境的搭建
    回来啦
    顺序表
    方格计数
    2000年的1月1日,是那一年的第1天。 那么,2000年的5月4日,是那一年的第几天?
    十三、排序算法
    十二、预处理
  • 原文地址:https://www.cnblogs.com/s502/p/3237533.html
Copyright © 2011-2022 走看看