2010-06-21 46 views

Trả lời

2

Mặt tốt:

Có thể thực hiện giao dịch ngoài bối cảnh cơ sở dữ liệu. Chèn bản ghi vào db. Ghi tập tin vào đĩa.

Mặt xấu:

Yêu cầu truy cập MSDTC trên máy khách, nơi sử dụng TransactionScope.

+2

Không chỉ yêu cầu quyền truy cập khi bạn kết nối với 2 máy chủ khác nhau trở lên? Nó bắt đầu giảm nhẹ rồi tự nâng cấp. –

+0

Chính xác. Đáng buồn thay - câu trả lời sai. – TomTom

4

Một số ưu điểm từ MSDN:

TransactionScope Lợi ích

  • Các mã bên trong phạm vi giao dịch không phải là chỉ giao dịch, nó cũng là promotable. Giao dịch bắt đầu bằng LTM và System.Transactions sẽ quảng cáo nó theo yêu cầu, theo tính chất tương tác của nó với các tài nguyên hoặc các đối tượng từ xa.
  • Phạm vi độc lập với mô hình đối tượng ứng dụng — bất kỳ phần nào của mã đều có thể sử dụng TransactionScope và do đó trở thành giao dịch. Có không cần lớp cơ sở đặc biệt hoặc thuộc tính .
  • Không cần phải nhập ngũ tài nguyên một cách rõ ràng với giao dịch. Bất kỳ Trình quản lý tài nguyên hệ thống.Transactions sẽ phát hiện giao dịch xung quanh được tạo bởi phạm vi và tự động tranh thủ.
  • Nhìn chung, nó là một mô hình lập trình đơn giản và trực quan ngay cả đối với các trường hợp phức tạp hơn liên quan đến luồng giao dịch và lồng nhau.
0

Chỉ cần để thêm vào/làm rõ những điểm Incognito làm:

  • TransactionScopes làm cho việc thực hiện các giao dịch ACID đơn giản (ví dụ do đó bạn không cần phải viết rõ ràng "rollback" hoặc mã ngẫu nhiên)
  • TransactionScope có thể phối hợp các tài nguyên như Cơ sở dữ liệu, Hàng đợi tin nhắn và Hệ thống tệp giao dịch theo giao dịch
  • Re TransactionScopes là các tài nguyên trực quan như SQL vv sẽ tự động/liên tục phát hiện giao dịch môi trường xung quanh và tranh thủ.

duy nhất 'xấu' bên là bạn cần phải nhận thức được rằng:

  • Mức cô lập mặc định của TransactionScope được ĐỌC SERIALIZABLE, mà thường là quá 'mạnh mẽ' và có thể gây ra chặn và deadlocking . Bạn nên sử dụng ReadCommitted cho hầu hết các giao dịch.
  • TransactionScope sẽ chuyển một giao dịch lên DTC nếu có nhiều hơn một cơ sở dữ liệu/nhiều kết nối đồng thời/nhiều tài nguyên (ví dụ: SQL và MSMQ) được sử dụng trong TransactionScope. Nhưng bạn thường có thể tránh trong các kịch bản đơn luồng/cơ sở dữ liệu đơn lẻ bằng cách đóng các kết nối trước khi mở một kết nối mới (hoặc giữ một kết nối mở trong suốt, không được khuyến nghị).
Các vấn đề liên quan