Share via


ASP.NET XML Web Service 中的交易

本主題專門說明舊有技術。 應該使用下列建立 XML Web Service 及 XML Web Service 用戶端: Windows Communication Foundation.

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 服務方法流動。

85f292h1.note(zh-tw,VS.100).gif注意:
當實作 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