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

     

  • 相关阅读:
    avalon做的抽奖效果
    [转]谈谈前端渲染 VS 后端渲染
    迷你MVVM框架 avalonjs 1.3.7发布
    迷你MVVM框架 avalonjs 学习教程22、avalon性能大揭密
    Facebook React 和 Web Components(Polymer)对比优势和劣势
    迷你MVVM框架 avalonjs 学习教程21、双向绑定链
    迷你MVVM框架 avalonjs 学习教程20、路由系统
    html中的数据岛:利用DSO和javascript在html中动态加载和浏览xml数据
    使用JS的 FileReader 读取本地文本文件(可兼容各种浏览器)
    简易版jquery
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3039757.html
Copyright © 2011-2022 走看看