PowerBuilder的分布式计算技术及其应用
间,本地定义的对象允许客户访问,就如远程对象实例就象在本地一样。
类定义在客户应在程序中包含了远程对象的完全或部分功能,Proxy(代理) 对象提供了远程对象界面的表示,对分布式处理,只有Proxy对象在客户应在程序是必须的。在客户应在程序中,对象透明,当你在客户应在程序利用远程对象类定义,客户端的定义与服务器端的定义一致。考虑到这两个定义有相同的名字,PowerBuiler提供了这种透明技术。用这个类定义的变量能保持本地对实例的引用。执行时,你能初始化本地的对象或远程对象,这依赖你的应用要求。
2.3通讯方式
PowerBuiler的分布式技术中支持以下几个通讯协议
Winsock
在支持TCP/IP的网络中,利用WINDOWS SOCKETS工具通讯。只要支持TCP/IP的网络都可以用该方式。
Names pipes, 通过命名的管道进行通讯。
local, 指在分布式应用程序可在本地运行。
不同的运行平台支持不同的通讯方式.
三、 应用程序举例(PowerBuiler的实例)
在客户机/服务器中,一个比较典型的例子是实现服务器推拉(Sever Push)
本例子功能是这样的,由客户机应用程序向服务器应用程序发出请求(为简单起见,请求服务是一条消息),服务器应用程序收到消息后,做一些数据处理或其他的工作,完成之后,给客户机应用程序返回一条消息告知请求服务完成。
本例子代码解释如下:首先建立即两个NVO,一个是Uo_Custdata, 一个是Uo_response_Object, 在 Uo_response_object中,有一个用户对象函数Doneprocessing(),该函数执行一个提示窗口,给客户机发布消息,说明处理数据完毕。在Uo_Custdata中建立一个处理数据的函数process_data,其参数包含Uo_response_Object。将包含该用户对象的文件编译成proxy,如a.pbl在客户应用程序中包含a.pbl即可。在客户机应用程序中,先建立connection对象,定义connection的属性,然后创建 remote object(用Create Instance),本例子是Uo_Custdata,再调用remote object的一个函数(也就是process_data);在服务器应用程序中,先建立transport对象,定义transport对象的属性,然后等待客户提出请求(用listen函数)。
源程序如下:
// ------------------客户机应用程序
//定义connection
connection myconnect
long ll_rc
//用Create建立实例
myconnect = create connection
//设置Connect属性
myconnect.driver = "WinSock"
myconnect.application = "70000"
myconnect.location = "server01"
ll_rc = myconnect.ConnectToSe ver()
IF ll_rc <> 0 THEN MessageBox(“警告”,"连结错误")
END If
// 调用remote object(服务器应用程序提供)
// Mycustdata 是服务器应用程序的NVO,将包含该user object的文件编译成//proxy,在客户应用程序中包含proxy的pbl文件。
Uo_custdata Mycustdata
Uo_response_object Myresponseobject
…….
Myconnect.createInstance(Mycustdata)
Myresponceobject=Create.Uo_response_object
Mycustdata.post process_data(Myresponceobject)
// ---------用户对象
// uo_custdata的函数process_data
参数:Uo_response_object.responceobject
…….//做一些数据处理的工作
给客户发布消息,说明处理数据完毕
Responceobject.post Doneprocessing()
// Uo_response_object 的函数Doneprocessing
Messagebox(“提示”,“处理完毕”);
//----------服务器应用程序
TransPort myTransPort
//建立transport对象
myTransProt=create TransPort
//定义transport对象的属性,
myTransPort.Driver='WinSock'
myTransPort.application='70000'
//然后等待客户提出请求。
M 《PowerBuilder的分布式计算技术及其应用(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/174405.html
类定义在客户应在程序中包含了远程对象的完全或部分功能,Proxy(代理) 对象提供了远程对象界面的表示,对分布式处理,只有Proxy对象在客户应在程序是必须的。在客户应在程序中,对象透明,当你在客户应在程序利用远程对象类定义,客户端的定义与服务器端的定义一致。考虑到这两个定义有相同的名字,PowerBuiler提供了这种透明技术。用这个类定义的变量能保持本地对实例的引用。执行时,你能初始化本地的对象或远程对象,这依赖你的应用要求。
2.3通讯方式
PowerBuiler的分布式技术中支持以下几个通讯协议
Winsock
在支持TCP/IP的网络中,利用WINDOWS SOCKETS工具通讯。只要支持TCP/IP的网络都可以用该方式。
Names pipes, 通过命名的管道进行通讯。
local, 指在分布式应用程序可在本地运行。
不同的运行平台支持不同的通讯方式.
三、 应用程序举例(PowerBuiler的实例)
在客户机/服务器中,一个比较典型的例子是实现服务器推拉(Sever Push)
,客户机请求服务器称为拉,服务器响应客户机请求并将消息发回给客户机称为推。
本例子功能是这样的,由客户机应用程序向服务器应用程序发出请求(为简单起见,请求服务是一条消息),服务器应用程序收到消息后,做一些数据处理或其他的工作,完成之后,给客户机应用程序返回一条消息告知请求服务完成。
本例子代码解释如下:首先建立即两个NVO,一个是Uo_Custdata, 一个是Uo_response_Object, 在 Uo_response_object中,有一个用户对象函数Doneprocessing(),该函数执行一个提示窗口,给客户机发布消息,说明处理数据完毕。在Uo_Custdata中建立一个处理数据的函数process_data,其参数包含Uo_response_Object。将包含该用户对象的文件编译成proxy,如a.pbl在客户应用程序中包含a.pbl即可。在客户机应用程序中,先建立connection对象,定义connection的属性,然后创建 remote object(用Create Instance),本例子是Uo_Custdata,再调用remote object的一个函数(也就是process_data);在服务器应用程序中,先建立transport对象,定义transport对象的属性,然后等待客户提出请求(用listen函数)。
源程序如下:
// ------------------客户机应用程序
//定义connection
connection myconnect
long ll_rc
//用Create建立实例
myconnect = create connection
//设置Connect属性
myconnect.driver = "WinSock"
myconnect.application = "70000"
myconnect.location = "server01"
ll_rc = myconnect.ConnectToSe ver()
IF ll_rc <> 0 THEN MessageBox(“警告”,"连结错误")
END If
// 调用remote object(服务器应用程序提供)
// Mycustdata 是服务器应用程序的NVO,将包含该user object的文件编译成//proxy,在客户应用程序中包含proxy的pbl文件。
Uo_custdata Mycustdata
Uo_response_object Myresponseobject
…….
Myconnect.createInstance(Mycustdata)
Myresponceobject=Create.Uo_response_object
Mycustdata.post process_data(Myresponceobject)
// ---------用户对象
// uo_custdata的函数process_data
参数:Uo_response_object.responceobject
…….//做一些数据处理的工作
给客户发布消息,说明处理数据完毕
Responceobject.post Doneprocessing()
// Uo_response_object 的函数Doneprocessing
Messagebox(“提示”,“处理完毕”);
//----------服务器应用程序
TransPort myTransPort
//建立transport对象
myTransProt=create TransPort
//定义transport对象的属性,
myTransPort.Driver='WinSock'
myTransPort.application='70000'
//然后等待客户提出请求。
M 《PowerBuilder的分布式计算技术及其应用(第2页)》