CSDN博客

img symonsshi

实例学习分布式开发

发表于2005/1/2 0:35:00  677人阅读

作者:郭宝利  来源:原创  日期:2004.07.11
应该开发两个应用,一个是做服务器的,一个是做客户端的。首先介绍服务器的程序。
服务器程序通常封装业务逻辑,没有界面处理,供客户端调用。比如,我们创建一个加法计算的服务器。操作步骤如下:
 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)))

阅读全文
0 0

相关文章推荐

img
取 消
img