教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 系统编程教程 · PowerBuilder · PowerBuilder基础教程

分布式PowerBuilder工作机制和流程

学院最新推荐文章
教程推荐
『分布式PowerBuilder工作机制和流程』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-9-21 

一、分布式PowerBuilder工作原理

1 虚拟机

在这一章中,我们详细描述分布式PowerBuilder的工作机理。

PowerBuilder在服务端是用虚拟机模型来实现的。每当一个客户机与服务器链接时,服务器就为这个客户机开辟一片独立的内存,形成一个独立的虚拟机。

如果我们有四个客户端应用程序链接到这个服务器中,PowerBuilder就会建立四个虚拟机,这四个虚拟机是相互独立的,各有四个不同的内存块,它们之间并不直接进行共享。

另外,我们还需指出的是,至今为至,PowerBuilder的所有函数调用都是同步的,这也包括分布式PowerBuilder的实现。当应用程序调用了代理所定义的函数,这个应用程序就会处于等待状态,一直到服务端的NVO把最后结果返回。在NVO返回之前,应用程序将暂时被操作系统挂起。

PowerBuilder不能直接共享内存,并且,客户端和服务端的会话是同步的。

2 远程调用函数的参数

客户程序在调用远程NVO时,可能会使用到函数的参数。这些函数参数可以是任何简单数据类型(Simple Data Types),包括结构、数组等,引用方式(By Reference)或者直接传值方式(By Value)都可以。PowerBuilder也支持NVO对象的参数。

但是,PowerBuilder不支持对对象使用引用方式传参数。在PowerBuilder中,存在一些复杂对象,如数据窗口、窗口对象等,我们都不能进行引用方式传递参数。这是PowerBuilder对远程调用参数传递的限制。

二、分布式PowerBuilder工作流程

下面,我们用例子来回顾一下分布式PowerBuilder的工作流程。假设有两个客户机,一个服务器。在每一个客户机中,分别有一个客户端应用程序在运行。在服务器中,有一个服务端应用程序为这两个客户程序提供服务。

我们首先初始化一个Transport对象,并把它启动起来。接下去来看看如何实现分布式计算。

第一步,客户机1调用ConnectToServer函数。当这个函数返回后,先检查一下它的返回值,如果不出意外,Connection对象就被初始化完成了(图16-1)。



图2-1

接着,ConnectToServer函数在服务端中创立了一个客户虚拟机。客户端每调用一次这个函数,服务端就为它开辟一块内存,一个独立的工作环境。它可以想象成服务端开启了一个新的线程,或新的进程(图16-2)。



图16-2

然后,代理对象调用SetConnect函数,为代理设置Connect对象。 Connect对象通过网络线传递给Transport对象一个链接消息。Transport正在用Listen函数侦听这个消息,于是在服务端中初始化了NVO对象。注意,我们不直接在服务端中初始化NVO对象,而是通过代理对象来初始化(图16-3)。



图2-3

随后,这两个客户机在服务器中创立了两个服务线程,它们相互独立,各有两个不同的内存区域,不同的工作环境。因此,当一个服务线程发生运行错误时,不会影响另外一个服务线程。这两个服务线程其实就是服务器中同一个NVO的两个拷贝(图16-4)。



图2-4

在NVO计算完成后,就把结果返回,客户端的应用程序重新得到控制权。我们称之为同步函数调用。

在客户应用程序结束后,我们还需要把对象给释放掉。在PowerBuilder中,如果不释放这些对象,在程序运行结束后,为下一次运行的可分配的内存就会减少。一般情况下,系统会自动释放对象所占的内存,但象NVO这样的对象是需要应用程序为它释放的。每当我们释放了一个代理对象,这个代理对象在服务对象所应用NVO也会自动释放。如果不释放这个代理对象,对应NVO也不会被自动释放。

最后,客户端的Connect对象调用DisConnectServer函数,断开与服务器的链接。服务器接收到断开链接的消息后,就会中止由ConnectToServer所创立的服务线程,把这个线程所占的内存区域释放掉。至此为止,一个完整的分布式计算就完成了。



作者:无 来源:无
】【关闭窗口
·上页:
·下页:
相关文章
     系统编程教程 - PowerBuilder基础教程
普通教程测试...
普通教程马上结~~~
普通教程发个蛋帖
普通教程PB9.0连接sqlserver数据库,配置
普通教程赚分,马上结...
普通教程赚分,速结
普通教程赚分帖~~~
普通教程rowscopy时怎么样把目标数据窗中
普通教程谁能告诉我问啥会错误?
普通教程让我沉吧~~~
普通教程0分帖子~~~
普通教程每日一蛋
精彩图片汇集
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光