由于中间层上涉及到很多数据表的连接,我为每个数据表都做了一个dataset,dataupdate,dataprovide,
这样导致remote datamoudle上面有很多这类控件。会不会导致程序运行慢?能不能简化?能不能动态生成?在客户端每次开启一个form,对应操作的数据表很少(不会超过3个),但有可能用户同时打开多个form.有经验的大侠,能不能指导一下,对于这样的三层程序,如何高效设计谢谢

解决方案 »

  1.   

    打开form的时候每个窗体创建/显示的时候就会连接远程服务器一次吗。
      

  2.   

    同时存在(打开着)多个form
    还是
    同时、并发打开多个form
    ?应该是前者吧?则没什么影响啊
      

  3.   

    form指的是childform,用户在使用中打开几个,或为了看数据,或有可能更改数据.....这些都是未知的所以我觉得 做过的同志,在这方面有经验的,不妨介绍一些我现在的做法是 每个数据表 在我的中间层都有一个dataset对应。
      

  4.   

    我的三层是采用isapi作为通用数据网关,接受查询请求,返回记录集或更新数据表
    它采用一个ado连接池,查询结果返回后,自动关闭query,但是不断开连接,以便直接为下一个查询服务
    http://blog.csdn.net/sz_haitao/archive/2009/05/15/4190602.aspx
      

  5.   

    其实你就用一个DataSetProvider和一个query就行了,所有基础数据(单表更新数据)的都用它更新,你要写一个方法供客户端调用,方法的有一个Variant参数,传的就是TClientDataSet的Delta属性,在中间层调用DataSetProvider的ApplyUpdates方法,把参数赋给它,这弱DataSetProvider就会帮你把客户端的ClientDataSet的所有变化(添加,修改,删除)解析成SQL持行,你什么都不用管,你客户端的ClientDataSet只当内存表用。我已经这样用了,感觉很爽,单表更新非常方便。如果是多表更新那就是业务逻辑操作了,可以在中间层加相应的方法供客户端调用就OK了
      

  6.   

    wzwcn的方法我觉得挺好,能给一个例子就好了
    很想学习一下
    现在很好的构架太少了
      

  7.   

    wzwcn给个例子吧
    很想学习啊
      

  8.   

    现在缺的就是一个小例子
    如何实现我觉得高手提供一个小例子,会对我们有很大的帮助我的email: [email protected]
      

  9.   

    我的设计是:ClientDataset控件只是负责数据的显示,添加、更新和删除全部通过调用方法来实现,服务端的方法中使用SQL语句来操作数据更新。理论上是按照MVC模式开发。另外,在远程数据模块中没有数据连接,数据连接在本地数据模块,远程引用本地。