• DataSnap探询


    在XE3中,我们可以考滤用DataSnap开发多层应用。

    本记录主要查看DataSnap服务端连接及断开事件,这样能更好的理解服务端如何进行控制,即主要了解以下图中几个控件的事件触发顺序。

    以上几个控件作用说明:

      DSSerever:提供基本的DataSnap服务功能

      DSTCPServerTransport:提供TCP/IP通讯协议的支持,http(s)用不上

      DSHTTPService:提供http(s)通讯协议和RESTFUL架构的基本支持

      DSAuthenticationManager:提供安全认证的功能

      DSServerClass:提供自动输出的服务端类别让客户端调用的基本功能,它是TDSServerModule的类别

    以下为实例的服务端和客户端截图:

    服务端:

    客户端:

    以下为分别为远程连接和断开时的事件顺序图,如果不是tcp/ip协议,则服务端不会执行DSTCPServerTransport的事件。

    远程连接事件执行顺序

    远程断开执行顺序

    后记:

        根据以上的顺序,我们在开发服务端时可以在服务端建立数据库连接池,在DSServer的连接事件中一给用户分配数据库的连接,在断开事件中把分配给用户的数据库连接放回连接池即可。

       在用到DSTCPServerTransport的心跳包时,发现如果是tcp/ip连接协议,在心跳包的特定时间内没有回应时,服务端会自动调用DSTCPServerTranspor的DisConnect事件,但不会执行DSServer的disconnect.而http则没有什么反应。

    综上所述,我们在开发中间层时,在DSServer中给用户分配数据库连接池,可以把sqlconnection\adoconnection\uniconnection等连接的控件放在ServerContainer窗体中,其它的连接控件如uniDataSet\AdoDataSet\DataSetProvider等放在TServerMethods(TDSServerModule)的窗体上.

    客户端在连接时最好在调用某个事件时就打开客户端的sqlconnection,调用完后就断开客户端的sqlconnection即可。

    服务端的最大连接数与cpu有关系,好像是200*cup的核数*系数

     

    以上不对的地方请指正

    源码地址:http://download.csdn.net/detail/yagzh2000/5294600

     

  • 相关阅读:
    HttpRuntime.Cache的使用经验
    js 字符串中取得第一个字符和最后一个字符
    CSAPP笔记-第一章
    共和党减税法案的个人减税
    bash学习进行中
    建站日志
    Python学习进行中
    Check your data! 数据预处理血泪教训
    bash
    【python技巧系列】在循环中处理异常并继续运行
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3039757.html
Copyright © 2020-2023  润新知