zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    JavaScript实现网页换肤
    JavaScript实现鼠标效果
    JavaScript实现复选框的全选、不选、反选
    处理器解决物联网和人工智能的融合
    用小神经网络和光谱仪优化关键词识别
    电阻存储器为edge-AI提供了仿生架构
    为什么edge AI是一个无需大脑的人
    满足实时人工智能的计算需求
    传感器可以让智能手机测量生命体征
    接触追踪解决方案建立在UWB而不是蓝牙上
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3039757.html
Copyright © 2011-2022 走看看