2010-02-10 27 views

Trả lời

10

Đó không phải là trách nhiệm của bộ điều khiển, vi phạm SRP. Bộ điều khiển thậm chí không nên biết về UoW. Trong web, một UoW theo yêu cầu đến máy chủ thường được sử dụng. Trong trường hợp này UoW nên được xử lý ở phần cuối của một yêu cầu và bắt đầu một nơi nào đó sau khi bắt đầu một yêu cầu (lý tưởng là bắt đầu một UoW nên lười biếng). Nơi tốt nhất để làm điều này là Global.asax (hoặc lớp HttpApplication) của bạn bằng cách sử dụng các trình xử lý Application_EndRequest và Application_BeginRequest.
Điều này có thể dễ dàng đạt được với khung IOC (yêu thích của tôi là Windsor), xem this question để biết chi tiết triển khai.

+0

+1 Vì đã đúng! : P –

+0

+1 Cảm ơn bạn đã tiếp cận Zihotki. – SDReyes

+0

@zihotki - trong thiết kế của bạn, điều gì thêm lệnh vào Đơn vị công việc? –

5

Bộ điều khiển. Điều này nhận được bối cảnh, vì vậy bạn có thể bắt đầu và hoàn thành đơn vị công việc. Ví dụ một phiên nHibernate cho mỗi yêu cầu sẽ cần bạn biết khi yêu cầu đã bắt đầu và kết thúc, vì vậy bạn cần bối cảnh để cung cấp cho bạn yêu cầu.

+0

+1 Cảm ơn Mark! Dù sao tôi sẽ đợi thêm ý kiến ​​về:) – SDReyes

+1

Thật tuyệt, thật khó để nói bạn muốn câu trả lời là gì, vì có nhiều cách nhìn vào đơn vị công việc. Một số poeple có nó như là toàn bộ công việc cho một trang vẽ, những người khác có phạm vi giao dịch mà có thể được xử lý bởi các lớp khác. Ngay cả đối với các trường hợp chi tiết hơn, tôi nghĩ tốt nhất là có bộ điều khiển phụ trách các tài nguyên mà cuối cùng nó có thể trả lại (vứt bỏ hoặc bất cứ điều gì). Có lẽ bạn có thể đăng nhiều hơn và tôi có thể thử và đưa ra câu trả lời tốt hơn. Cảm ơn :) –

+0

Cảm ơn bạn đã trả lời Đánh dấu:) Vâng, theo một yêu cầu đơn vị công việc được định hướng. Tôi nghĩ bạn đúng. Tôi chỉ tin rằng có thể có điều gì đó không được xem xét. :) -i.e. Tôi đã không mặc dù trong giao dịch theo định hướng UoW: P- Cảm ơn một lần nữa – SDReyes

2

Vì zihotki cho biết bạn sẽ vi phạm SRP nếu bạn giao trách nhiệm này cho bộ điều khiển. Đây là một mô hình xử lý dữ liệu theo định hướng, và như vậy không phải là một mối quan tâm cho bộ điều khiển ... mà sẽ làm cho nó hai vi phạm: một cho SRP và anothrt cho nguyên tắc SoC.

Đối với ai chịu trách nhiệm, đó là điều gì đó được xác định bởi kiến ​​trúc của bạn. Đề xuất StartRequest/EndRequest dường như đủ vững chắc.

+0

Cảm ơn Jose +1 Tôi đồng ý với StartRequest/EndRequest. – SDReyes

3

Tôi là người tin tưởng vào kiến ​​trúc được ghép lỏng lẻo. Bộ điều khiển của tôi biết NOTHING về kho lưu trữ, ngữ cảnh hoặc đơn vị làm việc. Tôi đã tạo một lớp dịch vụ (không chắc chắn đó là thuật ngữ đúng) mà trình điều khiển gọi. Dịch vụ này sau đó làm việc với kho lưu trữ (dll) để duy trì tất cả dữ liệu.

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