• 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; 
    
    
    缓存池的实现很简单了,就不写了。
  • 相关阅读:
    Qt double转换成Qstring
    QT 控件ComboBox
    前端web项目打包(二)
    前端Web打包成可执行程序
    div中下拉框无法点击展开跟选中
    div下多个table并排排列
    VS将数据保存在excel表格中
    关于windows下任务栏应用程序标签消失问题的解决办法
    Java8中map()和flatMap()的区别
    Java对象的深拷贝
  • 原文地址:https://www.cnblogs.com/s502/p/3237533.html
Copyright © 2020-2023  润新知