輕松利用PowerBuilder和EAServer搭建三層架構(gòu)程序
2024-07-21 02:10:13
供稿:網(wǎng)友
輕松利用powerbuilder和easerver搭建三層架構(gòu)程序
作者:壞人張,發(fā)表時(shí)間:2004-9-19
powerbuilder是在c/s應(yīng)用中被普遍使用的開(kāi)發(fā)工具,是公認(rèn)的高效率的圖形化4gl工具。easerver是集動(dòng)態(tài)頁(yè)面發(fā)布和事務(wù)處理于一個(gè)身的企業(yè)級(jí)應(yīng)用服務(wù)器。這二者的結(jié)合可以構(gòu)成多層應(yīng)用的開(kāi)發(fā)和提交環(huán)境,開(kāi)發(fā)人員可以不離開(kāi)這個(gè)集成的開(kāi)發(fā)環(huán)境進(jìn)行應(yīng)用的開(kāi)發(fā)、調(diào)試、提交和運(yùn)行。
easerver中包括動(dòng)態(tài)頁(yè)面服務(wù)器powerdynamo和事務(wù)處理服務(wù)器jaguar cts,這兩者的結(jié)合使easerver成為發(fā)布動(dòng)態(tài)網(wǎng)頁(yè)和處理電子商務(wù)的應(yīng)用服務(wù)器,支持多種組件類(lèi)型,如com、corba、javabean/ejb和powerpuilder。它的一個(gè)更加顯著的特點(diǎn)是支持xml和j2ee。
powerbuilder和easerver的結(jié)合能使企業(yè)在以下方面獲得成功:
● 從客戶/服務(wù)器升級(jí)到分布應(yīng)用。
● 開(kāi)發(fā)web和internet的電子商務(wù)應(yīng)用。
● 支持建造企業(yè)門(mén)戶的基礎(chǔ)。
在本例中,作者介紹了一個(gè)如何利用powerbuilder和easerver來(lái)建立三層架構(gòu)應(yīng)用程序的范例,涉及到知識(shí)有:
1.如何在easerver中配置數(shù)據(jù)庫(kù)的連接
2.如何在powerbuilder中創(chuàng)建easerver組件(easerver component)
3.如何在powerbuilder中生成easerver代理對(duì)象(easerver proxy)
4.如何在powerbuilder中實(shí)現(xiàn)三層結(jié)構(gòu)應(yīng)用程序的連接
至于easerver的安裝與配置等話題則不在此文討論范圍之內(nèi),詳情可以到http://sybooks.sybase.com/站點(diǎn)查找相關(guān)的文檔。
在正式介紹本例以前,請(qǐng)確認(rèn)在你的機(jī)器上已經(jīng)成功安裝了easerver和powerbuilder,以及任意一種數(shù)據(jù)庫(kù)環(huán)境。
本例使用的開(kāi)發(fā)環(huán)境為:
操作系統(tǒng)
windows server 2003 企業(yè)版
數(shù)據(jù)庫(kù)
ms sql server 2000 企業(yè)版
開(kāi)發(fā)環(huán)境
easerver5.1開(kāi)發(fā)版、powerbuilder9.0企業(yè)版
其中easerver5.1開(kāi)發(fā)版可以從http://www.sybase.com上下載到。
實(shí)現(xiàn)過(guò)程:
1. 在easerver中配置數(shù)據(jù)庫(kù)的連接
要在組件中實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),在組件內(nèi)部仍然與平時(shí)編寫(xiě)c/s應(yīng)用一樣,使用同樣的連接代碼,即指定sqlca的各個(gè)屬性的值,然后調(diào)用connect using sqlca即可,但是與c/s應(yīng)用不同的時(shí),連接操作是在應(yīng)用服務(wù)器上執(zhí)行的,即easerver所在的服務(wù)器,所以有兩個(gè)需要注意的地方:
1) 應(yīng)用服務(wù)器上已經(jīng)配置了與數(shù)據(jù)源的連接(比如通過(guò)odbc),并確保組件內(nèi)連接時(shí)使用的sqlca屬性值為應(yīng)用服務(wù)器上相關(guān)參數(shù),而非本地連接,當(dāng)然如果應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器為同一臺(tái)機(jī)器時(shí)則連接參數(shù)可相同。
2) 在easerver中已經(jīng)配置了connection cache,并且確保可以ping成功。
以下將會(huì)為你詳細(xì)介紹如何在easerver中配置connection cache的步驟:
啟動(dòng)easerver manager并連接到easerver,在左邊的樹(shù)節(jié)點(diǎn)中選擇connection caches節(jié)點(diǎn),如下圖所示:
這時(shí)在右邊詳細(xì)信息欄中顯示的是已經(jīng)配置的connection cache列表,你需要建立一個(gè)新的連接緩存,通過(guò)在右鍵彈出菜單中的new connection cache菜單項(xiàng),會(huì)彈出配置界面,由于每個(gè)版本的easerver中的配置界面不盡相同,所以這里列出了配置項(xiàng)的值,讀者可以選擇進(jìn)行填寫(xiě)
配置項(xiàng)名稱
配置項(xiàng)值
說(shuō)明
connection cache name
pb_eas_dbconnection
可自定義的名稱,任意填寫(xiě)
database type
sql_server
數(shù)據(jù)庫(kù)類(lèi)型,本例為sql_server
server name
pmdb_sql
為odbc數(shù)據(jù)源的名稱,而不是數(shù)據(jù)庫(kù)服務(wù)器的機(jī)器名
xa server name(optional)
空
選填項(xiàng)
user name
sa
password
sa的密碼
database driver type
odbc
本例通過(guò)odbc連接,必須
dll or class name
odbc32.dll
連接驅(qū)動(dòng),必須
maximum connection pool size
75
為75
minimum connection pool size
0
默認(rèn)
pooled connection idle timeout
300
默認(rèn)
pooled connection refresh rate
600
默認(rèn)
如果使用easerver5.1以下,會(huì)有一個(gè)refresh按鈕,記得改寫(xiě)這些配置后,按此按鈕以更新配置。
完整了以上的配置后,回到了easerver manager主界面中,在右邊詳細(xì)信息欄中會(huì)添加你剛才添加的數(shù)據(jù)聯(lián)接緩存,通過(guò)右鍵菜單中的ping菜單試試看是否可以ping的通,如果通了的話則表明已經(jīng)成功建立了數(shù)據(jù)連接緩存,不通的話,請(qǐng)查看以上步驟是否有遺漏的地方或者是否已經(jīng)配置了odbc數(shù)據(jù)源。
2. 在powerbuilder中創(chuàng)建easerver組件(easerver component)
成功完整了步驟1之后,接下來(lái)可以進(jìn)行powerbuilder編程了,在本例中powerbuilder中的對(duì)象結(jié)構(gòu)如下圖:
在powerbuilder中創(chuàng)建easerver組件的步驟:
1) 建立不可視類(lèi)n_cst_eas
函數(shù):long of_retrieve( )
代碼:
long ll_rows
datastore lds_data
// profile pmdb
sqlca.dbms = "odbc"
sqlca.autocommit = false
sqlca.dbparm = "connectstring='dsn=pmdb_sql;uid=sa;pwd=mis'"
connect using sqlca;
if sqlca.sqlcode <> 0 then return sqlca.sqlcode
lds_data = create datastore
lds_data.dataobject = 'ds_data'
lds_data.settransobject( sqlca )
ll_rows = lds_data.retrieve()
disconnect using sqlca;
return ll_rows
2) 建立easerver組件
建立一個(gè)新的easerver component,各參數(shù)在以下幾幅圖示中顯示出來(lái):
按照以上步驟執(zhí)行完畢后,最后執(zhí)行deploy project以將組件提交到easerver,其中需要說(shuō)明的是package name可以自定義的新的package(手工輸入),也可是選擇package列表中的已有package(在新建向?qū)е锌梢赃x擇)。
成功提交以后,可以在easerver manager發(fā)現(xiàn)剛剛提交的package已經(jīng)在installed packages節(jié)點(diǎn)中顯示出來(lái)了。
3. 在powerbuilder中生成easerver代理對(duì)象(easerver proxy)
建立一個(gè)新的easerver proxy,各參數(shù)在以下幾幅圖示中顯示出來(lái):
按照以上步驟執(zhí)行完畢后,最后執(zhí)行deploy project以在pb中生成easerver代理對(duì)象。
4. 在powerbuilder中實(shí)現(xiàn)三層結(jié)構(gòu)應(yīng)用程序的連接
以上已經(jīng)完成了easerver組件和easerver代理對(duì)象的生成,接下來(lái)要進(jìn)行的就是在powerbuilder應(yīng)用程序中聲明代理對(duì)象,進(jìn)而可以在應(yīng)用程序中執(zhí)行easerver組件的方法了。
具體方法:
在powerbuilder建立一個(gè)應(yīng)用,執(zhí)行下列代碼:
long ll_rows
connection lc_connect //連接對(duì)象
n_cst_eas ln_eas_proxy //easerver代理對(duì)象
lc_connect = create connection //創(chuàng)建連接對(duì)象
lc_connect.application = 'pb_eas_demopackage' //package name,可以不寫(xiě),具體使//用方法可以查閱pb幫助文檔中關(guān)//于connection對(duì)象的幫助
lc_connect.driver = 'jaguar' //連接對(duì)象對(duì)象的驅(qū)動(dòng),對(duì)于easerver,值為jaguar
lc_connect.userid = 'jagadmin' //登錄帳號(hào),這里為管理員
lc_connect.password = '你的密碼'
lc_connect.location = 'iiop://server1:9000' //對(duì)應(yīng)服務(wù)器server1的9000端口
lc_connect.connecttoserver( )
lc_connect.createinstance( ln_eas_proxy, 'n_cst_eas' ) //創(chuàng)建easerver代理對(duì)象的實(shí)例
ll_rows = ln_eas_proxy.of_retrieve( ) //調(diào)用easerver組件的方法(函數(shù))
messagebox("total rows is:", string( ll_rows ) )
destroy ln_eas_proxy
destroy lc_connect
到這里,已經(jīng)完成了從配置到編碼實(shí)現(xiàn)利用powerbuilder和easerver搭建一個(gè)典型的三層架構(gòu)程序的過(guò)程,希望可以對(duì)你入門(mén)有所幫助,歡迎技術(shù)探討,聯(lián)系我。