【内容提要】传统的数据库应用程序经常采用客户机/服务器结构(即C/S结构),这种结构在技术上已经很成熟了并且应用也很广泛,但这种结构的应用系统有其不足之处,比如查询结果无法共享,即使两个客户发出的请求完全相同也要在服务器上执行两次查询;在客户端存储了具有商业价值的查询算法;数据库服务器负担过重导致效率低下等。如果在服务器和客户机之间再加一个服务器,专门用于存储查询算法和临时查询结果,则问题就得到了很好的解决:一方面不同的客户可以共用临时的查询结果而无须再访问数据库服务器,减轻了服务器的负担;同时在客户端也看不到作为商业机密的查询算法。这就是分布式系统的工作原理,本文将介绍如何应用PowerBuilder进行分布式应用程序的开发。
一、分布式应用程序概述
分布式系统的出现源于传统的C/S结构的若干弊病,如效率低,安全性差等,结合到数据库方面来说,全球的DNS(域名解析系统)系统是一个很典型的例子,试想如果把全世界所有的域名都集中到一台服务器中来进行管理,那服务器肯定会因负载过重而无法正常工作,整个互联网也就瘫痪了。
在编写C/S结构的数据库应用系统时,同样也会遇到这类问题,那就是如果客户数量很多,数据量又都很大的情况下,服务器的负载就会很重,而且重复性工作很多,因为很多客户发出的查询可能完全相同而服务器却需要一一进行查询;同时查询算法存储于客户端,这可能不适合一些商业环境,因为算法本身可能是需要保密的。如果能够在传统的服务器和客户机之间再加一个服务器用于存储查询算法和临时查询结果,则以上问题均得到了解决。这正是分布式系统的工作原理。
二、在PB环境下如何进行分布式应用程序的开发
下图是分布式系统的工作原理图:
图(一)
首先,分布式服务器必须建立与数据库服务器的连接,可以通过ODBC接口来实现,本文不在叙述,下面要讲述客户端如何通过分布式服务器来访问数据。
在PB环境下要实现分布式的编程,首先在DTS端,需要用到两个对象,一个TransPort对象和一个不可视的用户对象(Classà Custom,Nonvisible Object,以下简称NVO),其中TransPort对象用于响应客户端的连接请求,NVO对象用于和客户端进行实际的数据传输。在客户端也需要用到两个对象,分别是Connection对象和代理对象(NVO-Proxy),其中Connection对象用于建立到DTS的连接,NVO-Proxy实际上是与NVO一一对应的,它只是NVO的一个代理,在客户端通过此代理对象来调用NVO的函数来实现相关功能。
以下是TransPort对象和Connection对象的常用属性及方法:
1、TransPort对象
属性:
Driver:可选的值有四个,分别是WinSock、NamedPipes、OpenClientServer和Local,由于Winsock的通用性,一般情况下都选择Winsock。
Application:对于Winsock而言指的是端口号,用户可以任意指定,但必须大于4096。
方法:
Listen():其调用方法是transport.Listen(),即开始监听,如果调用成功则返回0。
StopListening():其调用方法是transport.StopListening(),即结束监听,如果调用成功则返回0。
2、Connection对象
属性:
Driver:与Transport对象相同
Application:与Transport对象相同,但要注意两者必须一致。
Location:DTS的IP地址
方法:
ConnectToServer():其调用方法是connection.ConnectToServer(),即连接DTS,如果调用成功则返回0,显然在调用该函数之前,DTS必须处于监听状态。
DisconnectServer():其调用方法是connection.DisconnectServer ( ),即断开与DTS的连接。
CreateInstance():其调用方法是connection.CreateInstance(variable),即建立一个NVO的代理以便调用NVO的相关函数。注意在调用该函数之前,必须保证客户端已经与DTS建立了连接。
对于NVO和NVO-Proxy对象,在DTS中建好NVO后,为了在客户端设置其代理,可以先在DTS中设置本地代理,然后将此代理输出到客户端。具体设置方法如下:在PB的用户对象画板中,在用户对象上点击鼠标右健,选择"Set Proxy Name",输入代理对象的名称并存盘,打开PB的Library画板,找到刚才保存的代理对象,点击鼠标右健并选择"Export…"将此代理对象保存成文件,最后在客户端将此文件导入即可。导入以后,在客户端就可以通过此代理对象来调用NVO的函数了。http://www.qqread.com/pb/c092247700.html
更多内容请看Wlan组网----家庭专题专题,或进入讨论组讨论。
相关专题
- Wlan组网----家庭专题 (4184篇文章)
- 在PB中如何实现数据模糊查询 (1300次浏览)
- 用PB开发多媒体数据库管理系统 (700次浏览)
- PB8.0应用程序编译发布技术研究 (661次浏览)
- 如何发布独立的POWERBUILDER应用 (638次浏览)
- 用Powerbuilder开发WEB数据库 (578次浏览)
- 低级键盘钩子屏蔽Win键、Alt+Tab键的响应 (511次浏览)
- 浅谈PB中动态DataWindow的技术应用 (511次浏览)
- 用PB做一个通用右键菜单 (503次浏览)
- PowerBuilder应用开发系列讲座(9) (489次浏览)
- 怎样在pb中得到存储过程的值 (447次浏览)



