前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

最新热点:PB10 如何做成B/S架构 - PowerBuilder - 编程论坛 | 网站首页 | 业界新闻 | 小组 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛 | 登录 注册 平板 帮助 编程论坛 → 数据库技术 → 『 PowerBuilder 』 → 最新热点:PB10 如何做成B/S架构 我的收件箱(0) 装机设首页 每台赚2元DNF、剑网3、剑灵 全套(视频教程+工具+指导) 登录论坛,同大家一起切磋吧 :) 用户名: 注册 忘记密码 密 码: 共有 3454 人关注过本帖 标题:最新热点:PB10 如何做成B/S架构 [只看楼主] freele_china 来 自:JiNan 等 级:版主 威 望:6 帖 子:351 专家分:0 注 册:2007-4-6 新人--> 楼主 问题点数:0 回复次数:3 最新热点:PB10 如何做成B/S架构 [bo] -.PB10 可以做成B/S架构是一定的。 -.但现在使用PB B/S架构进行开发的实例太少了 。 学习起来也太吃力 -.希望大家能 把 自己了解的东西共享一下 希望这里能成为我们交流的最好平台。 -.有附件的朋友请上传啦 [/bo] 搜索更多相关主题的帖子: WEB 共享 资料 2008-08-22 03:36:25 --> freele_china 来 自:JiNan 等 级:版主 威 望:6 帖 子:351 专家分:0 注 册:2007-4-6 第 2 楼 得分:0 希望大家不要吝啬 有想法的说想法 有附件的上传附件 有学习资料的推荐学习资料 有好学习网站的推荐好的网站。 在此谢谢啦 雁过留声,人过留名 2008-08-22 03:38:59 --> freele_china 来 自:JiNan 等 级:版主 威 望:6 帖 子:351 专家分:0 注 册:2007-4-6 第 3 楼 得分: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.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交互。插件及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.cggc.com:8888/test.nsf?OpenDatabase,OpenDatabase为Dominal W eb 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,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 07:01:11 --> freele_china 来 自:JiNan 等 级:版主 威 望:6 帖 子:351 专家分:0 注 册:2007-4-6 第 4 楼 得分: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 07:09:02 --> 41/1页1 关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP 编程中国 版权所有,并保留所有权利。 Powered by Discuz, Processed in 0.049400 second(s), 7 queries. Copyright&copy;2004-2014, BCCN.NET, All Rights Reserved