三层结构的对象如何传递到客户端? ( 积分: 100 )

  • 主题发起人 主题发起人 sixeight
  • 开始时间 开始时间
S

sixeight

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在做的三层结构感觉就是一个函数库,都是AppServer.xxx这样处理。现在我想这样做不知道该怎样实现,举个例子:
在中间层定义一个订单类TSaleOrder,有New,Open,Save几个方法,现在想在客户端这样调用
var
aOrder: TOrder;
//是不是客户端要也要定义一个同中间层相同的结构的类
begin
aOrder := TOrder.Create;

aOrder.Open(OrderID);
//这里该怎么样调用中间层的方法
end;
不知道有没有清楚的我意思? 请指点一下,谢谢
 
我现在做的三层结构感觉就是一个函数库,都是AppServer.xxx这样处理。现在我想这样做不知道该怎样实现,举个例子:
在中间层定义一个订单类TSaleOrder,有New,Open,Save几个方法,现在想在客户端这样调用
var
aOrder: TOrder;
//是不是客户端要也要定义一个同中间层相同的结构的类
begin
aOrder := TOrder.Create;

aOrder.Open(OrderID);
//这里该怎么样调用中间层的方法
end;
不知道有没有清楚的我意思? 请指点一下,谢谢
 
如果有用到中间层的方法那还是要借助于AppServer.xxx 的形式来处理的.
 
好象没有捷径了
 
我有一个三层程序,已经公开源码,你看看。或者到我的网站下载。
www.startor.cn
 
用Dispatch Table调用方式,接口的实现:
var
aDisp: IGetInfo_OperatorDisp;
begin
//DCOMConn是DCOMConnection,是与远程模块进行通信的通道
DCOMConn.ServerGUID := '{26816AC2-E977-4C22-8FE1-BF9D2C16BC12}';
//要调用接口的GUID。
DCOMConn.Open;
aDisp := IGetInfo_OperatorDisp(IDispatch(DCOMConn.AppServer));//关键!
aDisp.OperatorIsValid(vName, vPassword, vRes, strError);//调用接口中的某个方法
DCOMConn.Close;
end;
加分分:-)
 
补充:
IGetInfo_OperatorDisp是XXX_TLB中你要调用就口的Disp变量,进TLB单元就找的到啦。
 
这几天看了一下书,用使用CreateCOMObject方法,服务器端我创建RemoteDataModule,自动产生了一个接口,如IMyTest,这个接口有 Func_1方法,客户端可以这样调用:
var
intf: IMyTest;
begin
intf := CreateComObject(Server_TLB.CLASS_MyTest) as IMyTest;
intf.Func_1;
end;
现在我想自已再定义一个接口,如IMyTest2,实现类TMyTest2, 这个接口应该从哪里继承才能注册(是不是要自已写)并可在客户端调用。
不知道这样的思路有没有错误? 大家在作业务逻辑层是怎样设计的?
 
一般来说不要传对象,应该传递接口.
 
后退
顶部