华中理工大学计算机学院 黄保华 胡和平
---- 采用B/S(浏览器/服务器)模式是目前应用系统设计开发的主要特征,采用Sybase、PowerBuilder、Notes共同实现B/S模式能够满足各种应用功能要求,开发效率高,便于原有C/S(客户/服务器)模式应用向B/S模式应用平滑过渡,是一种经济适用的B/S模式实现新颖方法。
---- 1、 从C/S到B/S
---- 传统的C/S模式下应用系统一般由服务器(Server)和客户端应用程序(App)组成,如图1(略)。数据(Data)一般存放在服务器上,应用程序一般存放在客户端计算机上。这样的系统虽然解决了数据共享等问题,但却具有不易维护、操作风格不一致、能够处理的数据类型不易扩展等缺点。随着网络应用系统的发展,传统C/S模式应用系统的缺点不断暴露出来,促使B/S模式应用系统的产生和发展。
---- B/S模式应用系统由浏览器(Browser)和服务器(Web Server、Other Server、Middle Ware)组成。数据(data)和应用程序(App)都存放在服务器上,浏览器功能可以通过下载服务器上应用程序得到动态扩展,服务器具有多层结构,B/S系统处理的数据类型可以动态扩展。以B/S模式开发的系统维护工作集中在服务器上,客户端不用维护,操作风格比较一致,只要有浏览器的合法用户都可以十分容易地使用。
---- 2、 实现概述
---- Sybase是一种成熟的商品化数据库管理系统,PowerBuilder是业界公认的数据库应用最优开发工具之一,Notes是目前最著名的群件系统,用这三个产品共同构建B/S模式应用,Sybase完成结构化数据管理,PowerBuilder开发的应用完成数据库结构化数据的维护, Notes完成数据流的管理和非结构化复合文档管理。这样的B/S实现方法可以重用原有C/S原代码,重用开发人员经验和知识,具有很高的开发效率。
---- 3、 技术细节
---- 3.1、 Sybase与Web
---- Sybase与Web虽然可以通过Sybase提供的工具(如Web.SQL等)进行交互,但很多情况下需要更经济实用的解决办法。这里介绍一种利用Sybase固有工具Isql进行交互的方法,这种方法对传统C/S开发人员很有用,因为他们可以利用已有知识进行Web编程。本方法实现思路为Web Server调用CGI脚本,在CGI脚本中远行Isql,Isql在Sybase SQL Server 中运行存储过程,存储过程使用Print语句通过标准输入/输出向Web Server返回需要的数据。下面是一个在Sun Solaris环境下Web与Sybase交互的例子
URL:http://www.cggc.com/cgi-bin/test.cgi?abced
Test.cgi内容为
#!$ #用Unix Shell执行CGI
Echo “html/plain” #CGI返回html文本
Echo “”
Echo “< html >< title >Test < /title >”
Echo pweb_test > $REMOTE_ADDR
#将存储过程名写入用请求者IP地址为名创建的文件
Echo $QUERY_STRING > > $REMOTE_ADDR
#将参数追加到创建的文件中
Echo go > > $REMOTE_ADDR
Isql –Uhttpuser –Phttpuserpassword < $REMOTE_ADDR
#运行Isql并以创建的文件为输入
Rm $REMOTE_ADDR
#删除创建的文件
Echo “-- >”
#与“< !--”配合将存储过程执行结果状态屏蔽
Echo “< /html >”
Pweb_test的创建脚本内容为
create procedure pweb_test @qstr char(100)
As
Declare @stmp char(100)
Select @stmp = field2 from test where field1=@qstr
--数据库数据处理
Print “< body >”
Print “The result from Sybase sql server is ”
Print @stmp
Print “< /body >”
Print “< !—”
--与“— >”配合将存储过程执行结果状态屏蔽
---- 3.2、 PowerBuilder与Web
---- PowerBuilder可以采用插件及ActiveX控件、Web.pb 等与Web交互。插件及ActiveX控件都要求在客户端安装PowerBuilder运行时刻动态连接库和连接数据库。Web.pb没有这些要求,但不能直接处理复杂用户界面,因为Web.pb一般返回HTML。
---- 3.2.1、使用插件
---- PowerBuilder提供Window插件和Datawindow插件。使用Window插件要在HTML中使用如下格式标记
< EMBED SRC=test.pbd WIDTH=300 HEIGHT=200 WINDOW=w_test >
---- SRC属性指定插件使用的pbd位置,利用Window插件的应用必须编译成pbd。Window属性指定在浏览器中嵌入窗体的名字,这个窗体必须是ChildWindow类型,但通过本窗体可打开Popup和response类型窗体。标记还有可选的LIBRARY和COMMANDPAM属性,前者用于指定附加的pbd,后者用于向嵌入的窗体传递参数。
---- 使用Datawindow插件要在HTML中使用如下格式标记
< EMBED src=test.psr WIDTH=370 HEIGHT=320 >
---- src指定所用psr所在的位置,spr由Datawindow保存得到,因而只能处理静态数据。
---- 3.2.2、使用Window ActiveX控件
---- 与Window插件相比,Window ActiveX控件与HTML具有更好的互操作性,在HTML中可以通过script对Window ActiveX控件进行操纵,在Window ActiveX控件中也可以触发script运行。以下是一个使用Window ActiveX的实例:
< OBJECT NAME="PBRXtest" WIDTH=225 HEIGHT=83
CLASSID="CLSID:CEC58653-C842-11CF-A6FB-00805FA8669E"
PARAM NAME="PBWindow" VALUE="w_test" PARAM NAME="LibList" VALUE="test.pbd;" … >
---- 参数LibList指定使用的pbd列表,pbd间用逗号分隔,采用Window ActiveX控件的PowerBuilder应用必须编译成pbd。参数Pbwindow指定要嵌入的窗体名。
---- 3.2.3、使用Web.pb
---- Web.pb是一种应用服务器技术,Web.pb以CGI/ISAPI/NSAPI的形式充当Web Server与应用服务器之间的接口,HTML将要调用的应用服务器处理过程以参数的形式传递给Web.pb,Web.pb调用应用服务器中的相应处理过程并将处理结果返回给Web Server。在这种集成模式中,数据库连接发生在应用服务器,客户端可以做得很“瘦”。应用服务器是用PowerBuilder编程实现的,编程过程中与数据库的交互与通常PowerBuilder编程方法相同,与Web.pb交互要用到Transport对象,被Web.pb调用的用户对象成员函数要声明为接口。具体的实现过程可以参考PowerBuilder IT目录下的实例。
---- 3.3、 Notes与Web
---- Notes通过其Dominal Web Server实现与Web的无缝连接,Web用户可以直接通过Domianl Web Server打开Notes数据库、导航器、视图、文档等。实现Notes与Web交互的过程如下:
---- 3.3.1、 配置Dominal Web Server
---- 打开服务器通信录,选择“Server”下的“服务器”项,打开服务器文档,选择“Http服务器”节,设置TCP/IP端口(如“8888”)、缺省字符集(如“简体中文”)等,保存服务器文档。修改Notes.ini,在“ServerTasks=”行最末尾加入“,http”,重新启动Notes服务器。
---- 3.3.2、 B/S模式下Notes数据库设计
---- Notes数据库设计包括视图、导航器、表单设计及相应编程。为便于浏览器访问,Notes数据库的启动属性可以设为“打开一指定导航器”。
---- 浏览器可以访问的Notes导航器必须包含一个背景图片,然后可以放其它导航部件。为使导航器在浏览器中能够正确显示,要为导航器创建导航器模板表单,起名为$$NavigatorTemplate for navname,navname为导航器别名,在本表单中包含一个表格行,本行分两列,一列含$$NavigatorBody域,另一列含$$ViewBody域,各列宽度将代表导航行部分和视图部分所占的宽度,将导航器所用视图名称作为$$ViewBody域缺省值。
---- Web访问对视图和表单设计没有特殊要求,按通常Notes设计方法设计既可。
---- 3.3.3、 Html中连接Notes资源
---- 通过Notes Dominal Web Server可以直接访问Notes数据库、导航器、视图和文档,方法如下,URL中test.nsf为Notes库名称。
---- 打开数据库:
---- http://www.cggc.com:8888/test.nsf?OpenDatabase,OpenDatabase为Dominal Web Server命令。Dominal Web Server将根据Notes数据库启动属性的设置确定打开导航器或视图。
---- 打开导航器
---- http://www.cggc.com:8888/test.nsf/navtest?OpenNavigator,test.navtest为导航器名称,OpenNaviagtor为Dominal Web Server命令
---- 打开视图:
---- http://www.cggc.com:8888/test.nsf/testview?Openview,testview为视图名,OpenView为Dominal Web Server命令。
---- 打开文档:
---- http://www.cggc.com:8888/test.nsf/testdocument?OpenDocument,testdocument为Notes文档编号,这个编号通常很长,所以一般不直接使用这种方式打开文档,而是通过Notes视图打开文档。
---- Notes Dominal Web Server还支持其他一些命令,如OpenServer,OpenForm,OpenAgent等,有关这些命令的使用可具体参考Notes连机文档。
---- 4、 结束语
---- B/S应用在近两年得到了长足发展,各种新的B/S技术不断涌现,但在此之前许多单位已经利用Sybase、PowerBuilder、Notes等开发了大量C/S模式应用,以Sybase、PowerBuilder、Notes为基础的B/S模式实现方法使这些应用只需稍作修改就可以移植到B/S模式,保护了这些单位的投资,同时也使熟悉这些系统的开发人员可以轻松开发B/S应用。另外这种方法从较高层次充分利用各种产品优势进行开发,具有很高的开发效率。
关键词:采纳Sybase、PowerBuilder、Notes构建B/S应用系统