Database 版 (精华区)

发信人: zhaowei (小燕子), 信区: Database
标  题: 15.3代理对象
发信站: 紫 丁 香 (Fri Jun 11 17:32:17 1999), 转信

假如我们有一个程序,它拥有许多处理对象,这些处理对象才是"知识"的真正
拥有者。我们要做的事情是如何把这些对象放到不同的机器中,实现分布式计
算。如何做到这一点呢?在PowerBuilder中,通常的做法是,先把这些对象做
成NVO,然后把NVO的接口抽象出来,做成另外一类特殊的对象,我们把它叫做代
理(Proxy)。代理与NVO的外部接口完全一样,如果一个NVO有三个公有函数,
和一个公有变量,那么,它的代理也有三个公有函.数以及一个公有变量。注意
,我们只提到公有的函数和变量,如果是它们是私有的,则不会出现在代理中。
因此,为了实现分布式计算,我们应建立这样一个分布式的对象模型:应用程序
应该把需要分布式计算的内容形成一个或多个非可视对象,即NVO,接下来根
据NVO生成NVO的接口对象,也就是代理对象,然后,我们把真正实现程序运行
的NVO放到服务器端上,把代理对象放在客户器端上,这就PB分布式对象模型的
核心。接下来,让我们较为详细地描述代理对象。
    从真正的意义上来说,代理对象并不是一个真正的对象,它在NVO外覆盖了
一层,它只是一个NVO的接口。程序首先调用代理,随后代理在网络中找出
对应NVO所在的机器位置,对NVO进行调用。在这里,代理存在于客户端
上,NVO存在于服务器端上。
    让我们来看看服务器端的NVO对象,它是一个实际的对象,它具有真正的对
象属性,以及对象功能函数的实现。在未实现分布式之前,它存在客户机上,
现在我们把它原封不动移到了服务器上,变成了远程对象。
这样,我们就拥有了两类对象,NVO和它代理。接下去,再来描述一下在客户
端上的代理和在服务器端上的NVO到底是如何协同工作的。举一个稍复杂的
例子。每一个服务器端上NVO都对应一个客户端上的代理。如果在服务器上
存在着5个对象,某一客户程序欲调用这5个对象,那到在这一个客户机上
就要存在5个不同的代理对象。一个服务程序可以同时为多个客户程序服务,在
图中,客户机1拥有3个代理,客户机2拥有2个代理(图15-1)。在服务器上
的同一个NVO对象可以与多个客户机的代理相链接。在客户机上的应用程序想
要调用到这个NVO,必需拥有这个NVO的代理。
在下节中,我们要讨论NVO和代理怎样通讯的。


图15-1

--
________________________________________________________________
 我和一个朋友去散步,遇见一个漂亮的少妇带着一个小孩平时极腼腆的朋友一改
平日恹恹睡态,勇敢的走上前去, ∴
         《||||||||||||||||||||■※※◎    亲切的看着那小孩说:
                               ∵    ."   多可爱的孩子啊,
                                 ...''   抬头看看少妇,“还有孩子他妈!”

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.226.249]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.848毫秒