标题:最新热点:PB10 如何做成B/S架构
只看楼主
freele_china
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:JiNan
等 级:版主
威 望:6
帖 子:352
专家分:0
注 册:2007-4-6
 问题点数:0 回复次数:3 
最新热点:PB10 如何做成B/S架构
[bo] -.PB10 可以做成B/S架构是一定的。
 -.但现在使用PB B/S架构进行开发的实例太少了 。
   学习起来也太吃力

 -.希望大家能 把 自己了解的东西共享一下
   希望这里能成为我们交流的最好平台。

 -.有附件的朋友请上传啦
[/bo]
搜索更多相关主题的帖子: WEB 共享 资料 
2008-08-22 11:36
freele_china
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:JiNan
等 级:版主
威 望:6
帖 子:352
专家分:0
注 册:2007-4-6
得分:0 
希望大家不要吝啬
有想法的说想法
有附件的上传附件
有学习资料的推荐学习资料

有好学习网站的推荐好的网站。

在此谢谢啦

雁过留声,人过留名
2008-08-22 11:38
freele_china
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:JiNan
等 级:版主
威 望:6
帖 子:352
专家分:0
注 册:2007-4-6
得分:0 
采用Sybase、PowerBuilder、Notes构建B/S应用系统(转)
采用B/S(浏览器/服务器)模式是目前应用系统设计开发的主要特征,采用Sybas
e、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、M
iddle 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 S
erver 中运行存储过程,存储过程使用Print语句通过标准输入/输出向Web Server返回
需要的数据。下面是一个在Sun Solaris环境下Web与Sybase交互的例子
URL:http://www.
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交互。插件及Active
X控件都要求在客户端安装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控件中也可以触发sc
ript运行。以下是一个使用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将要调用的应用服务器处理过程以参数的形式传递给We
b.pb,Web.pb调用应用服务器中的相应处理过程并将处理结果返回给Web Server。在这
种集成模式中,数据库连接发生在应用服务器,客户端可以做得很“瘦”。应用服务器
是用PowerBuilder编程实现的,编程过程中与数据库的交互与通常PowerBuilder编程方
法相同,与Web.pb交互要用到Transport对象,被Web.pb调用的用户对象成员函数要声明
为接口。具体的实现过程可以参考PowerBuilder IT目录下的实例。
---- 3.3、 Notes与Web
---- Notes通过其Dominal Web Server实现与Web的无缝连接,Web用户可以直接通过Do
mianl 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导航器必须包含一个背景图片,然后可以放其它导航部件
。为使导航器在浏览器中能够正确显示,要为导航器创建导航器模板表单,起名为$$Na
vigatorTemplate for navname,navname为导航器别名,在本表单中包含一个表格行,
本行分两列,一列含$$NavigatorBody域,另一列含$$ViewBody域,各列宽度将代表导航
行部分和视图部分所占的宽度,将导航器所用视图名称作为$$ViewBody域缺省值。
---- Web访问对视图和表单设计没有特殊要求,按通常Notes设计方法设计既可。
---- 3.3.3、 Html中连接Notes资源
---- 通过Notes Dominal Web Server可以直接访问Notes数据库、导航器、视图和文档
,方法如下,URL中test.nsf为Notes库名称。
---- 打开数据库:
---- http://www.,OpenDatabase为Dominal W
eb Server命令。Dominal Web Server将根据Notes数据库启动属性的设置确定打开导航
器或视图。
---- 打开导航器
---- http://www.,test.navtest为
导航器名称,OpenNaviagtor为Dominal Web Server命令
---- 打开视图:
---- http://www.,testview为视图名,
OpenView为Dominal Web Server命令。
---- 打开文档:
---- http://www.,testdocume
nt为Notes文档编号,这个编号通常很长,所以一般不直接使用这种方式打开文档,而是
通过Notes视
---- 图打开文档。
---- Notes Dominal Web Server还支持其他一些命令,如OpenServer,OpenForm,Ope
nAgent等,有关这些命令的使用可具体参考Notes连机文档。
---- 4、 结束语
---- B/S应用在近两年得到了长足发展,各种新的B/S技术不断涌现,但在此之前许多单
位已经利用Sybase、PowerBuilder、Notes等开发了大量C/S模式应用,以Sybase、Powe
rBuilder、Notes为基础的B/S模式实现方法使这些应用只需稍作修改就可以移植到B/S模
式,保护了这些单位的投资,同时也使熟悉这些系统的开发人员可以轻松开发B/S应用。
另外这种方法从较高层次充分利用各种产品优势进行开发,具有很高的开发效率

雁过留声,人过留名
2008-08-22 15:01
freele_china
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:JiNan
等 级:版主
威 望:6
帖 子:352
专家分:0
注 册:2007-4-6
得分:0 
Powersoft的Web.PB技朮可以將分布式PowerBuilder的客戶端應用分布到Web服務器上
 Powersoft的Web.PB技朮可以將分布式PowerBuilder的客戶端應用分布到Web服務器上﹐由Web服務器調用PowerBuilder應用。用戶可以用Web□PB技朮實現完全瘦客戶機的PB   Web應用。     
   
    1.Web應用的執行過程     
   
    瀏覽器訪問Web服務器﹐向Web服務器提出請求﹐服務器給瀏覽器返回HTML文檔。如果HTML頁面中嵌入了通過〈A〉元素鏈接到Web□PB的超級鏈接﹐或HTML頁面中嵌入了通過〈FORM〉元素對Web□PB的調用﹐則Web服務器調用Web□PB建立與PowerBuilder服務器應用的連接﹐向PowerBuilder服務器應用提出請求﹐PowerBuilder服務器應用處理請求。如有數據庫訪問的請求﹐則PowerBuilder服務器應用訪問數據庫服務器。PowerBuilder服務器應用將處理結果以HTML文檔格式返回到Web服務器。Web服務器將PowerBuilder服務器應用的處理結果以HTML文檔格式發布給瀏覽器。     
   
    2.應用實例     
   
    本人已將利用Web.PB技朮開發的學校管理查詢系統應用于實際應用中。下面通過簡單的例子說明如何利用Web.PB技朮實現瘦客戶機的Web應用。     
   
    2.1.   運行環境     
   
    服務器為HP   NetServer   5/133   LC﹐內裝Windows   NT   4.0﹑SQL   Server   6.5﹑IIS   4□0和PowerBuilder   6.0。     
   
    2.2.   配置     
   
    拷貝Web□PB文件﹐將PBISA60□DLL拷入\scripts虛擬目錄下﹐拷貝PBWEB□INI文件到WINNT目錄下。用記事本編輯\Winnt\System32\Drivers\Etc\目錄下的Hosts和Services文件﹐在Hosts文件中填加一行﹕202.194.168.88   server─sls﹐在Services文件中填加一行﹕pb─sls─server   10099/tcp。     
   
    2.3.   創建PowerBuilder服務器應用     
   
    2.3.1.   創建服務器應用及應用對象     
   
    啟動PowerBuilder﹐點取PowerBar上Application畫筆﹐進入Application工作區。從Application工作區上的PainterBar點取New﹐創建一個新的PowerBuilder應用sls.pbl。按下“保存”按鈕﹐彈出“Save   Application”對話框﹐定義Application對象“sls”﹐按下“OK”按鈕。彈出“Application”對話框﹐選擇對話框中“NO”按鈕﹐應用sls.pbl創建完成。修改該應用對象的Library屬性﹐在Application工作區中點擊PainterBar上的Property工具﹐彈出“Application”對話框﹐選擇“Libraries”。定義應用的可搜索路徑﹐填加“c:\program   Files\Powersoft\PB6\IT\webpb.pbl”﹐按下“OK”按鈕﹐服務器應用及應用對象創建完畢。     
   
    2.3.2.   創建PowerBuilder服務器應用的用戶界面     
   
    點取PowerBar上Windows畫筆﹐彈出“Select   Window”窗口﹐點取“New”按鈕﹐進入新創建的窗口的工作區。在該窗口上放置兩個命令按鈕cb─1﹑cb─2和一個靜態文本st─1﹐在兩個命令按鈕cb─1﹑cb─2上的文本分別改為“啟動服務器應用”﹑“關閉服務器應用”。     
   
    定義窗口上transport類型實例變量mytransport﹐用于監聽Web.PB的調用請求﹕     
   
    transport   mytransport     
   
    為cb─1的Clicked事件編程如下﹕     
   
  transport   mytransport     
   
  mytransport=CREATE   transport     
   
  mytransport.driver=〞winsock〞     
   
  mytransport.location=〞202.194.168.88〞     
   
  mytransport.application=〞10099〞     
   
  mytransport.Listen()     
   
  IF   (mytransport.ErrCode<>0)   THEN     
   
       MessageBox(〞錯誤信息〞﹐〞服務器應用不能啟動監聽~r~n〞+〞錯誤號為﹕〞+string(mytransport.ErrCode)+〞~r~n〞+〞錯誤信息為﹕〞+mytransport.ErrText)     
   
    Close(this.getparent())     
   
       return     
   
    ELSE     
   
    St─1.text=〞服務器正在運行〞     
   
    END   IF     
   
    為cb─2的Clicked事件編程如下﹕     
   
    Close(Parent)     
   
    上述工作完成后﹐選取選單項File下的Save選單項﹐彈出“Save   Window”對話框﹐定義窗口名為w─sls─server﹐然后點擊“OK”按鈕﹐保存窗口。這個窗口對象將是應用服務器中第一個打開的窗口。為應用對象sls的open事件編寫如下程序﹕     
   
    open(w─sls─server)     
   
    2.3.3.   創建PowerBuilder服務器應用中的用戶對象     
   
    進入PowerBuilder工作區﹐點取PowerBar上User   Object畫筆﹐彈出“Select   User   Object”對話框。選擇“New”按鈕﹐彈出“New   User   Object”對話框。選擇Class類Custom用戶對象﹐單擊“OK”按鈕﹐進入到用戶對象工作區。選取選單項File下的Save選單項﹐彈出“Save   User   Object”對話框﹐輸入“u─sls”﹐然后點擊“OK”按鈕﹐保存該用戶對象。     
   
    為用戶對象u─sls的constructor事件編寫處理程序﹕     
   
    transaction   mytransaction     
   
    mytransaction=CREATE   transaction     
   
    mytransaction.dbms=〞odbc〞     
   
    mytransaction.dbparm=〞ConnectString=′DSN=Powersoft   Demo   DB   V6;〞&+〞UID=dba;PWD=sql′   〞     
   
    CONNECT   USING   mytransaction;          
   
    Sqlca.dbms=〞odbc〞     
   
    Sqlca.dbparm=〞ConnectString=′DSN=Powersoft   Webpb;UID=dba;PWD=sql′〞     
   
    CONNECT   USING   sqlca;     
   
    IF   sqlca.sqlcode<>0   THEN     
   
         MessageBox(〞Sqlca   Error:〞+String(sqlca.sqldbcode),     
   
           sqlca.SqlErrText)     
   
    END   IF     
   
    為該用戶對象的destructor事件編寫處理程序﹕     
   
    transaction   mytransaction     
   
    DISCONNECT   USING   mytransaction;     
   
    DISCONNECT   USING   SQLCA;     
   
    DESTROY   mytransaction     
   
    這樣﹐當Web.PB調用PowerBuilder服務器應用中用戶對象時先建立了和數據庫的連接。當調用完成時關閉連接。     
   
    在用戶對象u─sls的工作區中﹐選取選單項Declare下的Instance   Variables選單項﹐定義用戶對象上的實例變量﹐輸入﹕     
   
    u─html─form   my─html─form     
   
    u─session   my─session     
   
    u─transaction   my─transaction     
   
    integer   ii─count     
   
    datastore   mydatastore     
   
    按下“OK”按鈕﹐返回用戶對象工作區。     
   
    創建用戶對象函數在查詢時所需的數據窗口對象dw─rsda(假定已創建了Powersoft   Demo   DB   V6庫rsda(bh,xm,xb,bm,…)表)﹐進入PowerBuilder工作區。點取PowerBar上Data   Window畫筆﹐彈出“Select   DataWindow”對話框。點擊“New”按鈕﹐彈出“New   DataWindow”對話框﹐在“DataSource”選擇框中選擇Quick   Select﹐“Presentation   Style”選擇框中選擇Grid。點擊“OK”按鈕﹐彈出“Quick   Select”對話框﹐選取表rsda和表中相應的列(bh,xm,xb,bm)。按下“OK”按鈕﹐進入數據窗口工作區﹐存此數據窗口為“dw─rsda”。     
   
    打開已創建好的用戶對象u─sls。在用戶對象工作區點取選單項Declare下的“User   Object   Functions”選單項﹐彈出“Select   Function   in   User   Object”對話框。單擊“New”按鈕﹐彈出“New   Function”對話框。在此對話框中定義函數的參數及返回值。定義函數名為﹕f─rsda﹐函數返回值為﹕string。點擊“OK”按鈕﹐進入函數編程工作區﹐編寫程序如下﹕     
   
    string   return─html     
   
    long   ll─dw─row     
   
    transaction   mytransaction     
   
    datastore   datastore─rsda     
   
    datastore─rsda=CREATE   datastore     
   
    datastore─rsda.dataobject=〞dw─rsda〞     
   
    datastore─rsda.settransobject(mytransaction)     
   
    ll─dw─row=datastore─rsda.retrieve()     
   
    IF   LL─dw─row>=1   THEN     
   
    Return─html=return─html+     
   
    datastore─rsda.object.datawindow.data.htmltable     
   
    ELSE     
   
    Return─html=〞沒有檢索到數據〞     
   
    END   IF     
   
    RETURN   return─html     
   
    這個函數的主要作用是調用數據窗口dw─rsda進行數據查詢﹐將查詢結果以HTML的語法格式返回。Web服務器將得到這個返回參數﹐并發布給調用函數的瀏覽器客戶。     
   
    2.4.   用Web.PB   Wizard創建訪問Web.PB的HTML文件     
   
    在PowerBuilder環境下﹐點取PowerBar上的Web.PB   Wizard畫筆。輸入或瀏覽選擇Web.PB要訪問的PowerBuilder服務器應用名后﹐點擊“Next”按鈕。在彈出的窗口中選擇所需的用戶對象u─sls﹐然后點擊“Next”﹐在彈出的窗口中選擇所需的用戶對象函數f─rsda。然后點擊“Next”﹐在彈出的窗口中分別作如下的選擇﹕在Select   the   program   interface框中選擇“Internet   Server   API(ISAPI)”﹐在Enter   the   URL   path   for   CGI   program框中輸入“/scripts”﹐在Select   the   HTML   style框中選擇“Anchor”。然后點擊“Next”按鈕﹐在彈出的窗口中分別作如下的選擇﹕在位置框中輸入“C:\winnt\pbweb.ini”﹐在Enter   Server   Alias   Section框中輸入“Internet”﹐在Driver框中選擇“Winsock”﹐在Application框中輸入“10099”﹐在Location框中輸入“202□194□168□88”。然后點擊“Next”按鈕﹐在彈出的窗口中﹐在HERF   text框中輸入“人事檔案查詢”﹐在Specity   location   and   name   of   HTML   file框中輸入“c:\intepub\wwwroot\rsdaweb.htm”。然后點擊“Next”按鈕﹐在彈出的窗口中點擊“Finish”。到此為止﹐能夠訪問PowerBuilder服務器應用中用戶對象u─sls上函數f─rsda的HTML頁面已經完成。     
   
    2.5.   啟動服務器應用     
   
    在PowerBuilder環境下﹐按下PowerBar上的Run畫筆﹐應用打開w─sls─server窗口﹐點取“啟動服務器應用”按鈕。在靜態文本框中顯示“服務器正在運行”﹐使服務器應用能夠監聽Web.PB的調用。     
   
    2.6.   啟動瀏覽器瀏覽     
   
    打開IE4.0﹐在Location框中輸入﹕http://202.194.168.88/rsdaweb.htm﹐然后再在“人事檔案查詢”上單擊﹐則在頁面中按照PowerBuilder的Data   Window格式顯示出rsda表中的記錄。

雁过留声,人过留名
2008-08-22 15:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-229408-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.432031 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved