PB開發webservice三層架構的感想

1.爲什麼要使用三層應用?
客戶的應用要求在廣域網上運行,數據庫不在廣域網上暴露,有兩個途徑實現:1.建議客戶購買遠程桌面管理軟件,CS程序無需做任何更改,即可實現廣域網應用;2.使用三層架構,客戶端與中間服務器打交道,中間服務器與數據庫打交道。
第一種方式,這個遠程桌面管理軟件也不算貴也不算便宜,關鍵是它大部分是賣站點數的,小型企業一般不願意額外開支這部分費用。那麼,就用PB自身來實現三層架構吧。

2.選webform,還是webservice?
webform的本質是把pb代碼生成html代碼,再發布到IIS服務器上。好處是:很容易轉換;壞處是:想美化一下界面,需要更多的網頁知識。我試玩了幾下,放棄了這個。
webservice纔是PB三層應用的核心。它的最大好處是:通過soap協議,將數據窗口對象進行傳送。PB開發員需要做的只是轉換一下開發思想,就可以使用純PB script做出非常好的三層應用。

3.PB開發webservice的一些準備
(1)網絡連接管理的問題:CS下,連接是不會斷開的,有利於身份認證完成後就無需再關心這個事件。而BS時,連接是斷開的。那麼,身份認證的問題需要貫穿整個開發。
   我的做法:登錄後,確認身份成功,分配一個guid值做爲令牌,當客戶端需要做業務處理時,參數裏都帶着這個令牌,解決了連接的問題。
(2)數據連接管理的問題:CS下,數據庫連接是不會中斷的。而在BS時,網絡連接是無狀態的,所以,數據庫連接也是斷開的。
   我的做法:在服務器端,每一個業務邏輯,都重新connect一次,邏輯完成後,disconnect掉。查過相關貼子,據說這樣使用,IIS會自動管理數據庫連接。因爲沒有相關工具的使用經驗,無從查究。
(3)多表提交的問題:以往的CS程序下,多表提交是在客戶端通過設置autocommit=false,手動來控制多表提交,如果有一個事情失敗,就整個事務回滾。
   我的做法:做一個多表提交的函數,一般是主子表結構,那麼傳入參數裏就有兩個blob,分別是主子表的dw語法,然後在服務端做多表提交控制
(4)數據存取效率問題:目前單機運行,還是很滿意的。除了第一次使用時慢一點。以後如果有效率問題出現,先考慮使用壓縮算法,把dw語法進行壓縮,以減少對網絡的依賴
(5)可以接受多少個客戶端?這個問題目前未知。不過一般情況,我想三五百個客戶端應該是沒有太大壓力的,如果客戶端再多,可以建議客戶購買更專業的可以放置pb對象的中間層服務器,比如sybase自己的easerver

4.如何開發第一個webservice
   其實,用pb開發webservice是很簡單的事情。第一個大前提就是:環境一定要做好。在安裝pb時,會有提示說用到什麼功能時需要什麼樣的環境。要開發webservice,就得安裝.net framework sdk 2.0。要注意,是sdk,不是普通的那個。
   其次,建一個webservice項目,然後建一些不可視的對象,將各種業務函數封裝在這些對象裏。網上所能找到的資料,已經足夠你用來學習了。之所以資料不多,是因爲它真的不復雜。建議去臺灣的一個資訊網站去下載資料,我看好些資料是從它那裏出來的http://www.mpinfo.com.tw/
   照着這些資料,發佈你的第一個webservice吧。
   服務端的對象是,是不存在可視對象的,象窗口啦,數據窗口啦。數據窗口不在服務端,那麼,如何使用數據窗口技術呢?不要忘了,數據窗口的不可視版本:datastore。在服務端的腳本里,定義一個datastore,然後與數據庫連接,然後檢索,然後使用getfullstate()得到blob,把blob對象通過soap傳給客戶端,客戶端的dw.setfullstate()一下,哈哈,怎麼樣,看到通過webservice生成數據了吧。

5.客戶端如何使用webservice
   調用webservice時,PB是通過一個project來生成服務端對象的代理。這個代理的本質其實就是一些遠程函數的定義。

6.常用的幾個函數
  不用說,首當其衝的就是getfullstate(),setfullstate()這一對寶貝函數。它是整個數據對象的語法包括數據,狀態,都集中成一個blob中。
   其次,dw.create()。這個函數也很有用。你可以從服務端取得dw object的syntax,然後在客戶端接收這個syntax,再create()一下,哈哈,數據窗口就出現欄位了,而且是在客戶端代碼裏沒有dw object的前提下。

總結:pb的webservice大大地拓寬了pb的應用,而且非常的簡單易用,希望更多的pb開發員加入到這個行列。不要以爲其它的工具如何如何的先進,在快速應用方面,目前還是pb是首選。也不要以爲這webservice有多複雜,我本身對這是很弱的,通過學習,一週之內,就把它理解並能應用了,想念聰明的你們更是得力。

我寫這些的初衷,就是鼓勵大家使用新技術,完成客戶需求,這纔是最重要的事情。

sybase繼續加油,讓pb的代碼除了可以發佈在iis,easerver,以後支持更多的中間件服務器,而且能跨平臺,將是我們所有PB開發人員的福音

來源點擊打開鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章