三层结构菜鸟问题!(200分)

  • 主题发起人 主题发起人 zfine
  • 开始时间 开始时间
Z

zfine

Unregistered / Unconfirmed
GUEST, unregistred user!
在三层结构中(Midas)中定义了许多完成企业逻辑的类。其中TCtrlObj是控制协调类。
程序初始化中定义:
ServerCtl:TCtrlObj;
ServerCtl:=TCtrlObj.Create;
在三层结构中(Midas)有这样一个功能调用借口:
procedure FlashData(aData:OleVariant;IndexID:Integer);SafeCall;
begin
SercerCtl.BData:=aData;
ServerCtl.FlashClientData(BData,.....);
;
;
end;

问题:当多用户调用此接口时会不会造成SercerCtl.BData不知道是谁的了。。?
也就是说可不可以这样做:
procedure FlashData(aData:OleVariant;IndexID:Integer);SafeCall;
var
ServerCtl:TCtrlObj;
begin
ServerCtl:=TCtrlObj.Create;
ServerCtl.FlashClientData(BData,.....);
;
;
end;
这样每个用户调用都只执行各自的ServerCtl,从而避免数据混乱等问题。。。
望专家,大虾指点。。。谢谢
 
//造成SercerCtl.BData不知道是谁的了
谁家的孩子没人要,找他的大人!
 
这样写应该没有问题
不过最好的办法就是自己试一试
 
你的procedure FlashData(aData:OleVariant;IndexID:Integer);SafeCall;
是那个组件的接口?
基本上三层设计的思路是不需要记录是哪个客户端的
也就是说,中间层的元件应该是无状态的
 
同意楼上的
 
是呀,不管是哪个客户端的,当客户端调用时再把自己维护的信息传给中间层,
无状态的对象不管是哪个客户端的,都一样!
 
多人接受答案了。
 
后退
顶部