ASP.NET XML Web Service 中的交易
Web 服務的交易支援會利用 Common Language Runtime 中的支援,即根據 Microsoft Transaction Server (MTS) 和 COM+ 服務中的相同分散式交易模型。這個模型是根據以宣告方式決定物件是否參與交易,而非撰寫特定程式碼來處理認可及回復交易。對於使用 ASP.NET 建立的 Web 服務,您可以藉由將 WebMethod 屬性 (Attribute) 的 TransactionOption 屬性 (Property) 套用至 Web 服務方法,來宣告服務的交易行為。如需範例,請參閱 HOW TO:在使用 ASP.NET 建立的 Web 服務中參與交易。
如果在 Web 服務方法執行時擲回例外狀況,則會自動中止交易;相反地,如果未發生例外狀況,則會自動認可交易。
WebMethodAttribute 屬性 (Attribute) 的 TransactionOption 屬性 (Property) 會指定 Web 服務方法如何參與交易。雖然這個宣告式層級表示交易邏輯,但是離實體交易還有一步之遠。當交易物件存取資料資源 (例如資料庫或訊息佇列) 時,會發生實體交易。與物件相關聯的交易會自動流向適當的資源管理員。.NET Framework 資料提供者 (例如 .NET Framework Data Provider for SQL Server 或 .NET Framework Data Provider for OLE DB) 會在物件的內容中查閱交易,並透過分散式交易協調者 (DTC) 登記交易。整個交易就自動發生。
Web 服務方法只能當做新交易的根來參與交易。做為新交易的根,與資源管理員 (例如執行 Microsoft SQL Server、Microsoft Message Queuing (也稱為 MSMQ) 和 Microsoft Host Integration Server 的伺服器) 的所有互動都會維護執行穩固分散式應用程式所需的 ACID 屬性。呼叫其他 Web 服務方法的 Web 服務方法會參與不同的交易,因為交易不會跨 Web 服務方法流動。
注意: |
---|
當實作 Web 服務方法的方法因其所在或相關 .asmx 檔案的網際網路要求而未被呼叫時,則 TransactionOption 屬性值沒有任何作用。當方法所在的類別是 Visual Studio .NET 中的專案成員,而未使用 Proxy 類別叫用 Web 服務時,會發生這種情況。在 Visual Studio .NET 中,當加入 Web 參考時會產生 Proxy 類別。 |
請參閱
工作
HOW TO:在使用 ASP.NET 建立的 Web 服務中參與交易
參考
TransactionOption Enumeration
WebMethodAttribute.TransactionOption Property
其他資源
Transaction Processing
使用 ASP.NET 的 XML Web Service
Copyright © 2007 by Microsoft Corporation. All rights reserved.