一个三层结构的一个中间层数据模块一般能做多大? 有无必要做多个,一般一个Database,Query,DataSetProvider就可以完成对数据库的东西。最好不要用table控件了。如果做成多个,维护是个问题,因为中间层的remote module是无状态,而data module是保持数据状态的。不好。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to:copy_paste如果用户同时打开多个窗口,浏览或修改多个数据表,用一个Database,Query,DataSetProvider能解决吗? (1)主要能控制线程和数据传送不要一下子将后端资料一齐传送至客户端<--性能(2)集中到TDataModule(Client)和TRemoteDataModule(Server)可减少维护(3)规划事务处理模式 多窗体用到的TDataSet控件,你不一定要到DataModule去定义,可以动态生成一个TCientDataSet控件然后映射到Connection和DataProvider,减少数据控件在DataModule,但是你把对应的改在各个子窗体中,不就可以了。 to:copy_paste我是说的怎样解决三层结构的中间层数据模块庞大的问题,而不是客户端的数据模块! 多层结构中,个人认为: 那些数据控件不需要很多。比如你访问的只有一个数据库,那么一个TDatabase或TADOConnection就可以了,而数据库里面有很多表,你是不是为每个表或要访问的表加入一个TDataSet和TDataSetProvider这就没有必要了,它的TDataSet是无状态,无游标,而客户端中的ClientDataSet取得数据,可以说是不再跟TDataSetProvider所连的TDataSet有联系,所以客户端其它窗体的可以用同一个TDataSetProvider,这么说来,远程数据模块有那么大大泡泡糖。 希望能得到hzb(Explorer)的经验和意见、建议! 希望能得到hzb(Explorer)的经验和意见、建议! 希望能得到hzb(Explorer)的经验和意见、建议! 我也不知道中间层的数据模块做多大的好,我的看法是,你可以用ClientDataSEt替换客户端相应的数据控件,然后想办法从服务端获取数据就是了,没有必要做一个庞大的服务端,copy_paste(paste)的看法有道理,只要注意一下正确设置ClientDataSEt的属性,然后注意一下并发用户的问题就行了(服务端最好做成无状态的,这样可以服务更多用户)。我觉得你可以把你觉得修改过程中比较棘手的问题提出来,大家讨论一下,可能会好些。 看你的做法了,如果用MTS/COM+方式的RDM的话,应该做成多个,并且要按OOA/OOD的方法来做,在李维的ADO/MTS/COM+那本书后面几章有讲到为什么要这么做,这主要是为了利用MTS/COM+的POOLING等功能,减少系统资源占用以及提高速度等,但如果是从两层向三层过渡,不想改太多,最简单就是把DM的东东全拷到RDM里去做成一个大MIDWARE,但这样的话,每一个用户连接都会产生一个RDM的实例,资源占用大些。至于分成多个中间件组件不好管理的问题要靠你最初的设计了,设计得好,会更好管理的,但这就比较复杂了,我也在学呢。 我直接用的rmd(rmote data module),用socketconnection连接(最简单的) 其实,理论上用多大都是无所谓的,关键看你系统的优化与机器的配置。我以前在pii500,256M上的数据模块里有一千多个query/table/...,根本就没什么问题。 调用Delphi生成的DLL,退出程序后出现内存不能read! 求一个sql语句,查询每天数据的最大值如何实现,谢谢大家 如何必须对MessageBox做选择? 做删除功能时出现的问题 如何程序互斥,只打开一次? 高分求围棋规则实现算法。 欢迎大家下载我的软件,下载者有分. 再次求教DBGrid显示LookupField的问题 请问怎样使dbgrid的option属性中的dbediting为true? 谁有TcomboboxEx控件?就是IE5中的地址栏。 请高手看一下,下面的代码什么意思 关于用DCOM连接中的一个小问题!!
如果用户同时打开多个窗口,浏览或修改多个数据表,用一个Database,Query,DataSetProvider能解决吗?
(2)集中到TDataModule(Client)和TRemoteDataModule(Server)可减少维护
(3)规划事务处理模式
减少数据控件在DataModule,但是你把对应的改在各个子窗体中,不就可以了。
我是说的怎样解决三层结构的中间层数据模块庞大的问题,而不是客户端的数据模块!
那些数据控件不需要很多。
比如你访问的只有一个数据库,那么一个TDatabase或TADOConnection就可以了,
而数据库里面有很多表,你是不是为每个表或要访问的表加入一个TDataSet和TDataSetProvider
这就没有必要了,它的TDataSet是无状态,无游标,而客户端中的ClientDataSet取得数据,可以说是不再跟TDataSetProvider所连的TDataSet有联系,所以客户端其它窗体的可以用同一个TDataSetProvider,
这么说来,远程数据模块有那么大大泡泡糖。
我觉得你可以把你觉得修改过程中比较棘手的问题提出来,大家讨论一下,可能会好些。