Web Service呼叫Web Service使用Transaction確保交易完整性測試報告

摘要:Web Service呼叫Web Service使用Transaction確保交易完整性測試報告

Web Service呼叫Web Service使用Transaction確保交易完整性測試報告

前言:
以前設計程式時,是透過ASP,COM+,DB的三層式架構方式來處理資料庫的存取
透過COM+存取的時候,可以透過COM+對於Transaction的支援來處理
因此寫了A元件與B元件,兩個分別維護資料庫DB_A與DB_B
萬一發生錯誤問題的時候,可以透過Transaction的機制將維護過程的資料還原(ROLLBACK)
並且存取資料庫的權限可以透過COM+的Package的識別設定來指定透過某個Windows帳號來存取相關的資料庫

問題:
目前進入.NET的設計,想尋找是否能夠用Web Service來取代COM+,借以解決.NET設計的COM+設定安裝不易、穿越防火牆安全設定的問題
因此有了以下的兩個問題想請教各位前輩們
1.是否能夠類似COM+的Package,【透過設定】指定某【Windows帳號】來執行相關的資料庫存取的方式
(ps.非固定寫在程式中)
2.是否能夠Web Service呼叫Web Service的過程中,確保雙方的資料異動能夠包在同一個Transaction中,確保異動的完整性


--------------------------------------------------------------------------------

小喵依需求的狀況舉個例子

以前的Asp三層式架構

a.asp呼叫COM_A並且維護DB_A的Table_A
在COM_A中又呼叫了另一個COM_B並且維護DB_B中的Table_B
a.asp----->COM_A------>DB_A.dbo.Table_A(台北的主機上的資料)
           |
           |
           |
           V
           COM_B------>DB_B.dbo.Table_B(大陸的主機上的資料)
 

 以前的三層式架構中,可以確保COM_A與COM_B分別維護的資料的完整性
當COM_A,COM_B中的任何一個部份有錯誤發生時,可以SetAbort來將已經部份維護的資料RollBack回去

由於透過.NET撰寫COM+元件在註冊的過程中有些複雜與麻煩....
但是在運用上卻需要透過這樣的方式來確保資料的完整性
所以想找看看是否能夠透過Web Service的方式來處理
 


--------------------------------------------------------------------------------

 報告一下小喵最近測試的結果

 測試目的:交易的RollBack
測試方式:
1.測試WS_A呼叫WS_B
WS_A:維護DB_A.dbo.TA
WS_B:維護DB_B.dbo.TB,DB_B.dbo.TC
WS_A,WS_B都設定為Requir Transaction
2.
WS_A→
TA:Insert資料正常
WS_B→
TC:Insert資料正常
TB:Insert資料,因Key重複發生錯誤
測試WS_B的TC是否維護進去,WS_A的TA是否維護進去

測試結果:
Try...Catch的Catch中
如果寫【Throw New System.Exception(ex.Message)】
那麼就可以讓
TA,TB,TC都沒有維護成功→有RollBack回去

如過Insert的資料是不會Key重複→資料三個完整的維護進去


--------------------------------------------------------------------------------

測試到這邊,算是初步的成功,可是以下的測試卻是令人失望


--------------------------------------------------------------------------------

測試目的:是否包在共同一個交易中,共用資源
測試方式:
1.WS_A:Insert資料到DB_A.dbo.TA
2.WS_A呼叫WS_B
3.WS_B:讀取WS_A中Insert進入的那一筆資料
4.【重點唷】兩個Web_Service都宣告為Required
(理論上兩個應該包成相同的一個交易中,相同的交易應該是共用資源,可以讀取到上一個WS新增的資料)

測試結果:
傳回:逾時

代表雖然宣告為Required,理論上應該是可以共用資源
但是實際測試後發現,運行的時候分別分屬兩個Transaction所以資料並無法視為共同資源運用


=========================================================================================
據說(不負責任的路邊攤消息)
這個問題將在2007年的Vista Server版本與配合的相關開發工具中獲得解決

看來目前小喵只能暫時用粉難註冊的COM+來處理目前的需求了

以上報告完畢
^_^

 
 

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat