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)))
服务器程序通常封装业务逻辑,没有界面处理,供客户端调用。比如,我们创建一个加法计算的服务器。操作步骤如下:
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)))
相关文章推荐
- 实例学习分布式开发
- 值得 Web 开发人员学习的20个 jQuery 实例教程
- 网络套接字学习以及聊天程序开发实例
- Android开发学习笔记——TabHost实例
- C# 插件开发学习实例
- 值得 Web 开发人员学习的20个 jQuery 实例教程
- 大神带你分分钟超越最好结果——基于分布式CPU计算的Deeplearning4j迁移学习应用实例
- Hadoop学习2_Hadoop完全分布式的Eclipse开发环境配置
- [原创]分布式系统开发学习之CS模式(二) - CS模式的限制与应用及Scalability的补充讨论
- Android学习总结————Java程序设计技巧与开发实例(朱福喜)
- 值得 Web 开发人员学习的20个 jQuery 实例教程
- hadoop学习之HDFS(2.7):实例:开发shell脚本定时采集日志数据到hdfs
- ((ios开发学习笔记九)) Simple TableView 实现(附 实例源码)
- VC实例学习(4):BT拓展开发文档
- 《Visual C++ 6.0 开发网络典型应用实例导航》学习进度
- Java开发WebService实例--计数器的学习
- HBase开发实例学习
- 通过实例学习C#开发中的泛型
- 我的Java开发学习之旅------>Java多线程下载文件 实例
- Android开发学习之WallPaper设置壁纸详细介绍与实例