高分求 有关三层结构事务和存盘的小问题(150分)

  • 主题发起人 主题发起人 createnew
  • 开始时间 开始时间
C

createnew

Unregistered / Unconfirmed
GUEST, unregistred user!
高分求 有关三层结构事务和存盘的小问题:
李维的书上说到由可以中间层自己管理事务,不需要程序中主动的提交和回滚,
可是如果有这样一个程序要求:
有一主表ta和从表tb,另有日志表tc,
由客户输入ta和tb,程序进行有效性检查后(业务逻辑上的,不是物理表上的)
如果不通过,不更新主从表ta、tb,写日志表tc,同时将出错信息返回客户端;
如果通过,更新主从表ta、tb,通过,写日志表tc;
如果通过,更新主从表ta、tb 出错,写日志表tc,将出错信息返回客户端。
问题:
1、客户端和中间层写些什么,如何分工?
是否客户端中只用写一个中间层过程的调用,有效性检查在中间层写。
2、怎样保证各个表的存盘。事务是如何工作的。客户端如何截获中间层返加的错误。
3、可否给出简单的代码和注释。
 
150分不够多吗,为什么没人回答?
 
一般来说,你要尽量的细小分化,ta便是ta,tb便是tb,然后有各个流程物件来管理你的各个小
物件.流程物件中写好你的判断逻辑.资料表物件,企业逻辑物件都写在中间层中,而客户端只
是显示数据和基本的增加,删除,修改.以下是一个登录的例子.我在中间物中写好错误信息传
回,返回的值若不为空,说明出错.这只是一个小测试.
而且,MTS的交易状态需要需要交易,需要新的交易,支援交易,不支援交易四种.一般,我们只
用需要交易和必须交易.一般在根物件下调用必须交易,次物件下调用需要交易.这样就能保
证你交易成功.你仔细看看李维的那本<Delphi5.x ADO/MTS/COM+专业程序设计篇>,里面基本
的东东都讲得有,我也不知道哪些我理解到了,呵呵,共同学习.
老兄莫叨唠,我有一个问题前前后后共出了300多分了,还没有一个结果呢.
procedure TmtsSecurity.Login(const sSysID, sUserID, sPass: WideString;
var iTimes, sMessage, sData: OleVariant);
begin
with FMyDM.cdsSys_Userdo
begin
try
try
if CheckPass(iTimes,sMessage)=False then
exit;
Active:=False;
Params.Items[0].Value:=sSysID;
Params.Items[1].Value:=sUserID;
Active:=True;
sMessage:='';
if IsEmpty then
begin
sMessage:='没有'+sUserID+'这个用户';
inc(iTimes);
CheckPass(iTimes,sMessage);
exit;
end;
if FieldByName('User_Pwd').Value<>sPass then
begin
sMessage:='密码错误,注意区分大小写';
inc(iTimes);
CheckPass(iTimes,sMessage);
exit;
end;
sData:=Data;
SetComplete;
except
SetAbort;
sMessage:='系统发生未知错误,请呆会再试!';
end;
finally
Active:=False;
end;
end;
end;
 
补充一下:
MTS的交易状态需要需要交易,需要新的交易,支援交易,不支援交易四种.
在Delphi6中新加了一种,ignore transtion
 
后退
顶部