如何用delphi,在三层结构中实现事务处理。(200分)

D

DSM2000

Unregistered / Unconfirmed
GUEST, unregistred user!
环境要求:
用delphi5提供的MIDAS控件。
服务端用RemoteDataModal,DataSetProvider提供数据接口。
客户端用DCOMconnection,ClientDataSet取得服务端的数据。
请问在上述环境中,如何实现事务处理。
 
建议你在服务端用database控件,其他一律连到database上,
这样可以实现先保存在本地机上,最后一起提交到服务器。
 
对。
在应用服务器上用tdatabase,客户端提交。
我也在做个类似的。多交流,qianzhong@163.net
 
使用mts技术可以轻松实现
 
给AppServer加上例如CommitTrans;
RollbackTrans的方法
然后在客户程序中通过AClientDataSet.AppServer.CommitTrans来调用。
 
能过SERVER端程序的Type Library来增加 :)
 
不过要注意在Server端的BDE配置中不要采用AutoCommit
否则事务就没意义了
 
如果既要在应用服务器上控制事务处理,又要使应用服务器是无状态的(即如果有多个应用服务器,客户端可以使用任何一个),该怎么办呢?
 
"给AppServer加上例如CommitTrans;
RollbackTrans的方法"我试过。
在一个客户端连接时可以实现事务,但多个客户端连接时,若同时
StartTransaction,就会报错,errormsg忘了,
意思大概是:一个事务在没有commit前不能start。我想是由于多个
客户端连接是共享同一个服务端进程,而同一个进程只允许有一个事务。
不知还有什么高招,请赐教!
 
同意:smartkid的方法,但dsm2000提醒,回去try it
 
ClientDataSet的SAVETOFILE很有用的,
从这里下手,很好呢!
 
d5中的三层请不要手工控制事务,
你将不会得到好处,
如果有必要,请用SESSION。
你将发现我的说法是对的。
 
maming:
>>d5中的三层请不要手工控制事务
如果有事务处理的要求该怎么办?用SESSIO?能不能详细一点?
 
TO ALL
能不能说的详细点,服务器端如何……客户端有如何实现。
 
继续讲!
 
maming兄,用SESSION怎么作,是在服务端完成事务处理吗?
请详细一点。
 
用MTS来解决;
服务器端程序:
try
....
setcomplete;
except
setabort;
end
然后将服务器端注册到MTS中,并将属性设置为"需要一个事务处理"或者"需要一个新的事务处理"就可以了.
 
顶部