两层改三层(200分)

  • 主题发起人 主题发起人 pazee
  • 开始时间 开始时间
P

pazee

Unregistered / Unconfirmed
GUEST, unregistred user!
我本人曾经写过三层,有一些经验。
这次有一个DBExpress开发的两层程序(c/s),打算改为三层,原来是在DataModule 里面只放了一个TSQLConnection,然后每个form上面放置自己需要的 TDataset 类控件,统计下来大约有70多个 (TSimpleDataset),
改为三层时,需要把他们移动到中间层的RemoteDataModule里面,发现多的吓人。请问大家开发这类的软件时候怎么解决TDataSet类控件过多的问题?使用动态创建还是复用的方式?
 
咋没人回答?[:(]
 
1、查询的可以复用。
2、执行语句的可以复用。
3、带状态维护的可以写方法进行复用,不过客户端改动比较烦。
 
可以用一个如果想的话
直接用clientdataset.commandtext赋值sql语句即可!
 
有人用动态创建的方法吗?
 
按照楼上的做法,没有人敢访问,速度很慢
你可以在中间层里做过增、删、改、查询函数,客户端直接调用这些函数即可,基本执行在中间层执行就可以了,但是有个问题是要经常发信息给中间层,但是数据量只是一条SQL语句,而不是一张表
 
动态创建,效率较低,而且也要写方法,还要改客户端的调用,烦。
 
dqzhi:
可是我的很多form都是DBGrid,客户看到这个列表才能选择编辑还是删除,或是修改他的状态。所以,我觉得只有很少一部分业务逻辑能移到中间层。
cs 结构下,由于很多是表的关联,我打开某些form需要大约8s中,但是我测试如果数据库在本地,这个速度几乎是0,我的master/ditail已经改成sql自己写的了,VCL带的需要度入太多的数据,即使RecordPackets 改成很小。
我现在发现,基本的延迟都在DBLookupComboxBox关联的表,她需要读入很多的记录。
如果改用多层,客户端就只需要返回当前显示的部分数据了。
就此我用多层做过测试,速度非常好。
请问大家的多层怎么解决这么多的TDataSet空间的排列?
 
动态写入
 
端口复用就行了!
 
动态写入 /端口复用就行了!
~~~~~~~~~~~~~~~~~~~~~~~~
说点不客气的,这都是废话!
 
我在两层中就是将Query都放在Datamodule中,有一百多个。
三层中放几十个在RemoteDatamodule中不奇怪。
 
duancy,
这样看着太乱了吧?会不会晕呀!
 
标准做法:动态创建!在服务器端写两个方法,一个创建,一个释放。也不是很慢。
 
后退
顶部