2012-07-02 77 views
6

據我所知,ASP.NET WEB API的構建是爲了幫助實現基於輕量級REST的應用程序。但是,我需要我的REST服務是交易/成爲交易的一部分。我試圖環顧四周,但看起來沒有辦法將WEB API作爲客戶端發起的事務的一部分。有沒有辦法做到這一點?使用ASP.net WEB API進行交易

問候 賈格迪什

+0

您認爲交易是什麼?一個通用的工作單元?一個'DbTransaction'或一個'SqlTransaction'? – jrummell

+0

我一直在尋找具有DTC管理的事務,但它看起來像WEB API犯規支持它 – user1496864

回答

4

我相信你指的是分佈式事務(通過MSDTC),它可以在服務邊界傳播。

然而,因爲根本就沒有辦法了普通的HTTP請求來傳播和管理事務狀態在WCF RESTful服務分佈式事務是不可能的。

您可能想通過HTTP(wsHttpBinding)或TCP/IP(net.tcp)查看普通的WCF服務,甚至可以看看WCF Data Services

4

在交易謀取服務電話通常被認爲是一個SOAP行爲不是一個REST的行爲。至少有一種使用稱爲WS-AtomicTransaction的SOAP進行標準化的方法。

正在SOAP爲本,這是沒有明確由ASP.Net的Web API的支持,但支持WCF

http://msdn.microsoft.com/en-us/library/ms730266

這將有可能自己實現在REST類似一個類似的行爲,但做得可靠卻相對複雜。

+0

+1速度更快... ...而:) –

+0

「但它比較複雜,做得可靠。」 - 關於如果我們想要實現它的方法會有什麼想法? – user1496864

11

如果你控制導線的兩端,可以實現你想要的。

TransactionInterop類存在於用於與進程邊界之間的交易工作,利用MS DTC提供支持。

它包含兩個方法,這是有趣的您的方案:

您可以使用客戶端中的第一種方法來生成事務。您可以將其設置爲自定義標題值或Cookie以將其傳遞給您的服務。一旦使用服務,您可以使用第二種方法在本地創建事務。

主要告誡這是MS DTC將需要啓用,並在客戶端和服務器配置。這隻有在Windows Active Directory域中調用服務時才能實現。