zoukankan      html  css  js  c++  java
  • Delphi XE2 DataSnap服务器时序

    属性设置前提:(生命周期:Session)

    DataSnap Server启动:

    ServerContainerUnit->DSServerClass1GetClass

    ServerContainerUnit->DataModuleCreate

    DataSnap Client连接服务器:

    ServerContainerUnit->DSAuthenticationManager1UserAuthorize

    ServerContainerUnit->DSServer1Connect

    DataSnap Client调用服务器方法:

    ServerContainer->DSServerClass1CreateInstance

    ServerMethods->DSServerModuleCreate(如果通过对象池获取,这里就不需要创建了。)

    ServerContainer->DSAuthenticationManager1UserAuthorize

    ServerMethods->方法代码

    DataSnap Client第二次调用服务器方法:

    ServerContainer->DSAuthenticationManager1UserAuthorize

    ServerMethods->方法代码

     ----------

    由此可以看出,ServerContainer只会创建一次,在服务器启动时创建,可以在这里初始化数据库连接池等操作;

    ServerMethods在客户端连接服务器时,不会创建,而是在第一次调用服务器的方法时才会创建,在实际调用方法前会有一个权限检测的机制。

    换种说法,就是每个客户端对应服务器的一个ServerMethods,因此可以在DSServerModuleCreate做数据集池的初始化处理,数据集的连接通过ServerContainer中初始化的数据库连接池获取。

    数据库连接池的数量不应小于DSTCPServerTransport1的PoolSize属性。

    ----

    粗略见解,错疏难免,欢迎大家指教讨论。

  • 相关阅读:
    虚树入门
    378. 骑士放置(最大独立集)
    377. 泥泞的区域(最大点集)
    352. 闇の連鎖
    P2680 运输计划
    Linux下的段错误(Segmentation fault)
    Acwing 98-分形之城
    快速幂 和 快速乘
    P1308-道路修建 (noi 2011)
    洛谷 P1070 道路游戏(noip 2009 普及组 第四题)
  • 原文地址:https://www.cnblogs.com/codingnote/p/3119090.html
Copyright © 2011-2022 走看看