2012-07-02 38 views
6

Tôi hiểu rằng ASP.NET WEB API đã được xây dựng để giúp triển khai các ứng dụng dựa trên REST nhẹ. Tuy nhiên, tôi cần các dịch vụ REST của tôi để được giao dịch/là một phần của một giao dịch. Tôi đã thử tìm kiếm xung quanh, nhưng có vẻ như không có cách nào để tranh thủ các API WEB như là một phần của giao dịch khách hàng bắt đầu. Có cách nào để làm việc này không?Giao dịch với ASP.net WEB API

liên quan Jagadish

+0

Bạn nghĩ gì về giao dịch? Một đơn vị chung của công việc? Một 'DbTransaction' hoặc' SqlTransaction'? – jrummell

+0

Tôi đã xem xét việc giao dịch được quản lý bởi DTC, nhưng có vẻ như API WEB không hỗ trợ nó – user1496864

Trả lời

4

Tôi tin rằng bạn đang đề cập đến các giao dịch được phân phối (qua MSDTC) có thể truyền bá qua các ranh giới dịch vụ.

Tuy nhiên, các giao dịch phân phối qua WCF Dịch vụ RESTful là không thể vì không có cách nào để truyền và quản lý trạng thái giao dịch qua các yêu cầu HTTP đơn giản.

Bạn có thể muốn xem xét các dịch vụ WCF đơn giản, qua HTTP (wsHttpBinding) hoặc TCP/IP (net.tcp) hoặc thậm chí xem qua WCF Data Services.

4

Tranh thủ cuộc gọi dịch vụ trong các giao dịch thường được coi là một hành vi SOAP không phải là một hành vi REST. Ít nhất cũng có một cách làm chuẩn với SOAP được gọi là WS-AtomicTransaction.

Được SOAP định hướng, điều này không được hỗ trợ một cách rõ ràng bởi các Web API ASP.Net, nhưng nó được hỗ trợ bởi WCF

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

Nó sẽ có thể thực hiện tương tự như một hành vi tương tự mình trong REST, nhưng nó tương đối phức tạp để làm một cách đáng tin cậy.

+0

+1 để được nhanh hơn ... và phải :) –

+0

"nhưng nó tương đối phức tạp để làm đáng tin cậy." - mọi suy nghĩ về cách tiếp cận sẽ là gì nếu chúng ta muốn thực hiện nó? – user1496864

11

Nếu bạn điều khiển cả hai đầu của dây, bạn có thể đạt được những gì bạn muốn.

Lớp TransactionInterop tồn tại để cung cấp hỗ trợ để làm việc với các giao dịch giữa các ranh giới quy trình, tận dụng MS DTC.

Nó chứa hai phương pháp đó là thú vị để kịch bản của bạn:

Bạn có thể sử dụng phương thức đầu tiên trong ứng dụng khách để tạo giao dịch. Bạn có thể đặt nó làm giá trị tiêu đề tùy chỉnh hoặc cookie để chuyển nó cho dịch vụ của bạn. Khi trên dịch vụ, bạn có thể sử dụng phương thức thứ hai để tạo giao dịch cục bộ.

Thông báo chính cho điều này là MS DTC cần phải được bật và định cấu hình tại máy khách và máy chủ. Điều này chỉ thực sự đạt được nếu các dịch vụ của bạn đang được gọi trong một miền Active Directory của Windows.

Các vấn đề liên quan