有无必要做多个,一般一个Database,Query,DataSetProvider就可以完成对数据库的东西。
最好不要用table控件了。
如果做成多个,维护是个问题,因为中间层的remote module是无状态,而data module是保持数据状态的。不好。

解决方案 »

  1.   

    to:copy_paste
    如果用户同时打开多个窗口,浏览或修改多个数据表,用一个Database,Query,DataSetProvider能解决吗?
      

  2.   

    (1)主要能控制线程和数据传送不要一下子将后端资料一齐传送至客户端<--性能
    (2)集中到TDataModule(Client)和TRemoteDataModule(Server)可减少维护
    (3)规划事务处理模式
      

  3.   

    多窗体用到的TDataSet控件,你不一定要到DataModule去定义,可以动态生成一个TCientDataSet控件然后映射到Connection和DataProvider,
    减少数据控件在DataModule,但是你把对应的改在各个子窗体中,不就可以了。
      

  4.   

    to:copy_paste
    我是说的怎样解决三层结构的中间层数据模块庞大的问题,而不是客户端的数据模块!
      

  5.   

    多层结构中,个人认为:
      那些数据控件不需要很多。
    比如你访问的只有一个数据库,那么一个TDatabase或TADOConnection就可以了,
    而数据库里面有很多表,你是不是为每个表或要访问的表加入一个TDataSet和TDataSetProvider
    这就没有必要了,它的TDataSet是无状态,无游标,而客户端中的ClientDataSet取得数据,可以说是不再跟TDataSetProvider所连的TDataSet有联系,所以客户端其它窗体的可以用同一个TDataSetProvider,
    这么说来,远程数据模块有那么大大泡泡糖。
      

  6.   

    希望能得到hzb(Explorer)的经验和意见、建议!
      

  7.   

    希望能得到hzb(Explorer)的经验和意见、建议! 
      

  8.   

    希望能得到hzb(Explorer)的经验和意见、建议! 
      

  9.   

    我也不知道中间层的数据模块做多大的好,我的看法是,你可以用ClientDataSEt替换客户端相应的数据控件,然后想办法从服务端获取数据就是了,没有必要做一个庞大的服务端,copy_paste(paste)的看法有道理,只要注意一下正确设置ClientDataSEt的属性,然后注意一下并发用户的问题就行了(服务端最好做成无状态的,这样可以服务更多用户)。
    我觉得你可以把你觉得修改过程中比较棘手的问题提出来,大家讨论一下,可能会好些。
      

  10.   

    看你的做法了,如果用MTS/COM+方式的RDM的话,应该做成多个,并且要按OOA/OOD的方法来做,在李维的ADO/MTS/COM+那本书后面几章有讲到为什么要这么做,这主要是为了利用MTS/COM+的POOLING等功能,减少系统资源占用以及提高速度等,但如果是从两层向三层过渡,不想改太多,最简单就是把DM的东东全拷到RDM里去做成一个大MIDWARE,但这样的话,每一个用户连接都会产生一个RDM的实例,资源占用大些。至于分成多个中间件组件不好管理的问题要靠你最初的设计了,设计得好,会更好管理的,但这就比较复杂了,我也在学呢。
      

  11.   

    我直接用的rmd(rmote data module),用socketconnection连接(最简单的)
      

  12.   

    其实,理论上用多大都是无所谓的,关键看你系统的优化与机器的配置。我以前在pii500,256M上的数据模块里有一千多个query/table/...,根本就没什么问题。