关于三层的问题,跟贴有分 ( 积分: 200 )

  • 主题发起人 主题发起人 Afei1
  • 开始时间 开始时间
幫你頂下,ADO用的較少,
 
谢谢楼上的几位兄弟
真希望有做过成功案例的大虾来说说心得
 
别放太多datasetprovider在应用服务器,两个就够了一个读一个写
客户端调用应用服务器的方法(一个读一个写)完成所有数据操作
 
to 7030
能不能说得具体点?
比如我现在有个大表(7,8十个字段),然后增加或修改一条记录,如果自己写SQL语句的话不是要非常的长?
是不是有什么其他的方法?
怎么实现?
 
多个RDM我做了如下测试,还是有问题,具体请看:
可能说的不是很清楚,我重新说一下:
服务端(Server)有两个RDM,A跟B
A里面有adoconnection、dsp1、qry1
B里面有dsp2,qry2
B引用A,
服务端的两个qry都是连接A的adoconnection。
服务端运行后,在客户端的dcomconnection的ServerName里面就有Server.A和Server.B两个可以选择的servername,如果我选择Server.A,则一切正常,如果选择Server.B,则客户端的数据集在open的时候会报没有connection的错误。请问这是什么问题?
你用Server.B没有启动SERVER。A如何会有connection?
我取用的是,只是只读的使用共同的DSP,CDS
基本上所有的数据提交等都放在中间层完成
 
谢谢 Supermay
在试,两个rdm都有在用
 
确实是没有驱动的原因,谢谢Supermay
 
公用ADOConnection:
新建一个DataModule,放入ADOConnection
然后其他几个RDM都引用它就可以了~~
 
那么两个服务器间部分数据的修改怎么做到同样的数据同步完成呢!!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2943304
欢迎指导,也欢迎下载美容美发试用!
 
那么两个服务器间部分数据的修改怎么做到同样的数据同步完成呢!!
两个什么服务器,应用服务器吗?
不明白
 
当然是两个sql server服务器了!!
有什么简单点的方法 可以做到两个服务器中相同的数据项同步更改!!!
 
可以设定发散,订阅啊,设置为同步更新!
 
能用吗!!??
我现在装的是个人版,我装个企业版看看!!!
 
我认为这么多客户的系统,用DElphi现成的三层容易出现一些问题。
我个人认为最好自己用socket写一套协议。
这样子有利于运算规则的集中维护与修改,也有利于数据操作中的某些同步问题。
同时也有利于减少网络的流量。
 
to abookdog,
能否说具体点?
在下的msn:zbc81@21cn.com
 
你的表都放在一个数据库中,在中间层的远程模块中放置一个就可以了,至于DataSetProvider多少?根据需要来定,我觉得我用很多,有几个就够用,关键在于你控制,
 
用asta吧,改起来很简单,我正在试,只是资料太少。
 
to 朱懒猫,
能否说清楚点?
asta是什么东西?
 
1、是不是每个客户端的cds都要对应服务端的的一个dsp?
--当然不是,dsp只是提供数据访问的接口,这个接口可以被固定占用,当然也可以用来
提供临时的数据包。一般来说,只有当进行大数据量访问时(比如上百万条记录分包取数),
进行有状态连接,才需要固定的dsp. 另外,客户端通过cds频繁修改提交数据时,也可以采用
固定的dsp, 只因为这样比较方便罢了(很多书都是这样举例的)。
2、如果是的话,那么对一个比较大的系统,在服务端不是要好几百个dsp?
--根据情况而定。
3、如果真的要那么多dsp的话,是不是可以考虑用多个RDM,要如何实现?
--根据情况而定。
4、关于updatemode的三种模式,从以往的帖子来看,用upwherekeyonly可能会比较好,但用这种的话
必须要去更改每个providerflags,这不是偏麻烦了点?也有高手说直接写sql语句进行更新,
而不是让dsp去自动处理,这不是更麻烦了(在下偏懒,哈哈)?有没有什么更好的方式?
--对于固定结构的表,可以在服务端预先设置好,如果是动态的数据集dsp,采用默认的upWhereAll即可。
upWhereAll提供精确定位的查找方式,upWhereKeyOnly提供按指定字段定位的方式,没有什么好、比较好之说。
5、还有就是c/s(adoconnection、adoquery)到我上面说的三层的转变有没有什么比较好、比较快速的方法?
--没有,任何投机取巧的方法都会产生后遗症和隐患。

6、服务端(Server)有两个RDM,A跟B
A里面有adoconnection、dsp1、qry1
B里面有dsp2,qry2
B引用A,
服务端的两个qry都是连接A的adoconnection。
。。。
--概念错误!没有什么"B引用A"的说法,RDM是类,而类是不能引用的,
正确的说法是:B的那一个实例引用A的那个实例,
“没有connection的错误”实质是指B的实例对应的RDMA的实例没有被创建。
其实adoconnection控件可以放在服务端随便什么地方,唯一要做的是,
你必须保证中间层的A或B的实例被创建前,那个承载了adoconnection控件的单元被实例化了。
 
后退
顶部