三层中从服务端取得信息的方法

saoren 2000-12-11 09:21:00
SocketConnection1.Appserver.(我在服务端定义的方法或属性)
.
.
.
如果我经常在服务端取出信息,那我不是经常用SocketConnection1.Appserver.什么什么
这方法是很大网络负担,我记得还有其它方法可以达到这种效果,希望有人可以相助。
我曾记得用上面的方法是最浪费网络资源的一种,还有两种方法,但是不知如何做。
谢谢。
如:
i:=ClientConn.AppServer.bConnUfsystem;
if i=0 then
ClientConn.AppServer.ConnUfsystem;
i:=ClientConn.AppServer.bExistsMyTable;
if i=0 then
ClientConn.AppServer.CreateMyTable;
...(我还有好多要调用服务端的属性和方法...)
如果我这样用,这个速度不用说,还显得很笨笨.
...全文
169 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
saoren 2000-12-15
  • 打赏
  • 举报
回复
我已经解决了,谢谢comanche
phenixyu 2000-12-11
  • 打赏
  • 举报
回复
关注
saoren 2000-12-11
  • 打赏
  • 举报
回复
除了直接用Appserver.方法外,还有两种:一种是对DComConnection(不用它,虽是快)
还有一种就是你说的的:Dispatch table用法.
我现在要用的就是这种方法,但是用时,总是问题多多,所以在下想请各位仁兄,能不能够
Send 一些关于它的例子给我,一定给分。谢谢。
comanche 2000-12-11
  • 打赏
  • 举报
回复
这……
我知道你问的问题是关于dispatch table 和 early binding两种方法,但在下觉得在服务器提供太多的方法不太好吧?

delphi dispatch table 用法
VAR
AppServer :IXXXDisp;
BEGIN
...
AppServer := IXXXDisp( IDispatch( Connection.AppServer ) );
AppServer.YourMethod( Params... )
...
END

c++builder dispatch table 用法
(用之前包括服务器目录下的 xxx_tlb.h)
{
IXXXDisp AppServer;
AppServer.Bind( Connection.GetAppServer( ) );
AppServer->YourMethod( Params... ); // 你细心的话会注意这里用的是"->"
// 而不是".", C++builder 重载了这个运算符
}

关于early binding的方法,我所见的没有人用这,因为early binding如同其名,是在调用前就决定了入口地址, 这就意味着要在客户机注册服务器(当然这样不对,可以在起动时注册,关闭时注销, 这就需要delphi自动生成的 XXX.tlb 文件.), 反正用early binding麻烦多多,就速度而言也不比dispatch table快到哪去

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧