2010-08-22 65 views
5

"Thực hành tốt nhất" liên quan đến xử lý lỗi trong một ứng dụng web ASP.NET MVC2 được thiết kế DDD là gì? Ví dụ, chúng ta hãy khía cạnh phổ biến nhất của một ứng dụng web, đăng nhập:Xử lý lỗi Trong DDD-Flavored ASP.Net MVC2 Web Application

  • UserController: Rõ ràng phối một vài đối tượng miền để cuối cùng đăng nhập hoặc từ chối người sử dụng, và chuyển hướng đến các bộ phận khác của giao diện web khi cần. Trong trường hợp của tôi, đó là một vài cuộc gọi tới các phương thức UserTask khác nhau như IsLoggedIn() hoặc LogIn(), cộng với một số hành động chuyển hướng.
  • UserTasks: Có thịt công việc phối hợp miền liên quan dịch vụ các đối tượng, như SecurityService và miền thấp đối tượng, chẳng hạn như gọi SecurityService.ValidateUser() hoặc kiểm tra User.IsUserInactive().
  • SecurityService: Rõ ràng tọa độ xác thực/ủy quyền dịch vụ. Tương tự như MembershipProvider, không có hành lý quá cước .
  • Người dùng: Đại diện cho người dùng. Không phải là thiếu máu, vì nó có nhiều phương thức khác nhau của người dùng như IsuUserInactive() kiểm tra IsDeleted, IsLockedOut hoặc nếu người dùng nằm giữa FromDt và ThruDt.

Làm cách nào để bạn phát hiện ra các lỗi sao cho chúng mang tính thông tin và không thù địch với người dùng? Bạn có xả rác mã với trường hợp ngoại lệ và sau đó chỉ cần xử lý tất cả trong Application_Error()? Ví dụ, nên ValidateUser() ném một ArgumentNullException() khi mật khẩu là sản phẩm nào và một AuthenticationException() khi mật khẩu không đúng, hoặc trả về một bool = false? Nếu sau này, làm cách nào để bạn thông báo cho người dùng về nguyên nhân khiến xác thực thất bại?

Trả lời

0

Tôi giả sử bạn đang sử dụng Kiến trúc WhoCanHelpMe/S # arp dựa trên các quy ước đặt tên mà tôi thấy? Nếu vậy, tôi rất muốn giới thiệu một cái nhìn tại this article mà demostrates việc thực hiện một lớp dịch vụ ứng dụng sạch hơn. Hãy xem kết quả ActionConfirmation đang được trả về từ lớp dịch vụ; chúng tôi đã tìm thấy đây là một cách lý tưởng để trả về kết quả lỗi ít khó chịu hơn từ lớp Tác vụ.