您的位置:首页 > 产品设计 > UI/UE

PowerBuilder实例学习分布式开发

2012-04-06 09:36 204 查看
应该开发两个应用,一个是做服务器的,一个是做客户端的。首先介绍服务器的程序。

服务器程序通常封装业务逻辑,没有界面处理,供客户端调用。比如,我们创建一个加法计算的服务器。操作步骤如下:

1、为Application对象的ConnectionBegin编写脚本。当客户端程序尝试联结服务器时触发该事件。所以,该事件应该对用户合法性进行检查,如果是合法用户则返回联结成功标志。脚本如下:

if userid = 'guobaoli' then return ConnectPrivilege!

2、在Application事件中打开服务器主窗口。

Open(w_main)

3、在w_main窗口的Open事件中设置TransPort的必要参数。所有和客户端的处理都是通过该对象进行的。所以,首先需要定义一个TransPort类型的全局变量g_TransPort。然后编写如下脚本:

integer li_rtn

g_transport = Create TransPort

g_transport.Driver = 'WinSock' //驱动程序

g_transport.Application = '5555' //端口号

li_rtn = g_TransPort.Listen() //监听客户联结

if li_rtn <> 0 then halt close

4、这是最重要的一个步骤,开发业务逻辑,必须是非可视的用户对象。我们只只编写一个函数of_add即可。

/*--------------------------------------------------------------------

* 函数定义:integer of_add(integer ai_1,integer ai_2)

* 函数作用:求和。

* 编写日期:2004.7.11

* 编 写 人:达通兴电脑科技 郭宝利

*-------------------------------------------------------------------*/

return ai_1 + ai_2

5、业务逻辑开发完成后,为了保证客户端能够调用到这些用户对象中的函数,还需要生成客户端的代理。客户端通过这些代理,就可以知道哪些函数在服务器端了。所以,我们这个步骤需要创建客户端代理。操作步骤如下:

1)关闭PB中所有已经打开的画板;

2)选择窗口菜单file->new->project->proxy library

3)选择工具条中的select objects,选择我们服务器端程序所在的pbl,选中用户对象;

4)选择工具条中的Properties,选择output library为客户端的pbl(如果还没有创建,可以先创建客户端pbl);

5)运行,即可生成客户端代理。

至此,服务器端程序的处理就结束了。下面编写客户端的程序。首先在Application对象的Open事件中打开主窗口:

Open(w_main)

然后,我们设计主窗口。放置一个命令按钮,text属性改为'add'即可。在w_main窗口的Open事件中编写如下脚本:

integer li_rc

g_connection = create connection

g_connection.Driver = "WinSock"

g_connection.Location = '192.168.21.88' //取值

g_connection.Application = '5555'

g_connection.UserId = 'guobaoli'

li_rc = g_connection.ConnectToServer()

if li_rc <> 0 then halt close;

//首先声明全局变量:nvo_add gvo_add

if g_connection.CreateInstance(gvo_add,'nvo_add')

if li_rc <> 0 then

MessageBox ("客户端", "远程实例对象创建失败!" )

halt close

end if

至此,必要的准备工作都结束了,接下来我们就要验证我们的工作成果了:编写一个调用服务器端函数的小程序。在命令按钮‘add’的Clicked上编写如下脚本:

MessageBox('',string(gvo_add.of_add(32,5)))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: