MTS中如何真正做到远端对象访问透明。灌水勿扰。:)(200分)

  • 主题发起人 主题发起人 kusanagi
  • 开始时间 开始时间
K

kusanagi

Unregistered / Unconfirmed
GUEST, unregistred user!
即怎么发布Com对象的事件,并利用其他对象的函数处理来处理这个函数。
请详细说明。
 
没有人愿意回答这个问题么?
 
你的意思生成com对象的事件,在客户端响应该事件?
 
其实调用消息处理过程的还是发布消息的那个对象。
归根结底,即Com对象怎么获得客户端的方法。
 
提前贴子
 
其实,客付端和服务器端是相对应的,提供服务的为服务段,应用服务的为客付端,
你的意思是两端可以相互调用,其实每一端,同时为服务器,又为客户端,这样理解
的话,对于你的问题应该能够解决的
 
其实有个简单的办法,Com可以去调客户提供的Dll,你的Com可以定义一个属性,让客户端用
于设置Dll的路径及文件名,只要Dll中包含你规定好的接口函数,就没问题了.
 
To boyman:
你说的方法看似可行,不过需要自己做一个协调对象,以决定何时并如何调用客户端的方法。
其实消息处理机制做的也就这工作。我之所以要利用消息机制,不是懒吗?:)
To hopfield
I 服了 U
不过从原理上来说,也就这么回事。
 
我觉得真正做到远端对象访问透明应该要考虑对象的无状态性吧!这样才可以充分使用
Pooling技术(数据库Pooling、线程Pooling、资源Pooling),同时也是为了系统良好的
延展性,比如使用状态对象最大同时可以服务100个COM对象(MTS缺省生成100个STM),
但实际上可能只能有10个用户,因为COM对象可能要引用其他的对象。
在客户端相应该事件可以通过Interface来实现其功能,而Interface可通过一组PME(属性、
方法、事件)来实现,在客户端首先生成类别对象,取得接口,然后调用接口中的方法。
 
to hopfield
com调用客户端dll,how? rpc?其实dcom的技术就隐藏调rpc
 
to boyman:
com里面调用Dll,没什么特别的,和一般的Exe一样调用,只不过用我前面讲到的方法,
必须用显式的调用罢了. 当然,如果调用方和服务端不在一台机子上(Dcom),那么dll要
和服务端放在一台机子上.
其实如果在不同机子上,那就让Com和客户端做个Socket通讯好了. 我说的这两种办法
在高手眼中可能都比较苯,不过我在Com中都实现过,肯定是可以用的.
我还在考虑用另外一种办法: 回调函数, 不过我没试过,不知道行不行. 如果有谁试过
,请赐教.
 
回调函数只可以调用本地的函数,如果Com真的做到了调用远端的对象和本地对象
一样的话,应该是可以的。
不过现在我决定用midas了。
两位要是还有兴趣的话,大家还是可以继续讨论啊。
 
http://211.101.4.25/delphibbs/rules.asp
 
多人接受答案了。
 
后退
顶部