2010-04-04 33 views
5

Tôi đang tìm một số phản hồi về kiến ​​trúc ứng dụng CMS dựa trên ASP.NET MVC của tôi.Kiến trúc ứng dụng ASP.NET MVC "nguyên tắc"

Mô hình miền - không phụ thuộc vào gì ngoài các lớp Hệ thống để xác định loại. Hiện tại, hầu hết là thiếu máu.

Lớp lưu trữ - truy cập dữ liệu trừu tượng, chỉ được gọi bởi lớp dịch vụ

Lớp dịch vụ - thực hiện logic nghiệp vụ trên mô hình miền. Hiển thị các mô hình xem cho các bộ điều khiển.

ViewModelMapper - dịch vụ để chuyển qua lại giữa các quan điểm và các mẫu đồ miền

Bộ xử lý - siêu mỏng "cảnh sát giao thông" chức năng phong cách tương tác với các lớp dịch vụ và chỉ đàm phán về các mô hình điểm, không bao giờ mô hình miền

Mô hình miền của tôi chủ yếu được sử dụng làm đối tượng chuyển dữ liệu (DTO) và có logic tối thiểu vào lúc này. Tôi tìm thấy điều này là tốt đẹp bởi vì nó phụ thuộc vào không có gì (thậm chí không lớp trong lớp dịch vụ).

Lớp dịch vụ hơi phức tạp một chút ... Tôi chỉ muốn các bộ điều khiển có quyền truy cập vào các chế độ xem để dễ lập trình GUI. Tuy nhiên, một số dịch vụ cần phải nói chuyện với nhau. Ví dụ, tôi có một dịch vụ event để thông báo cho các dịch vụ nghe khác khi nội dung được gắn thẻ, khi các bài đăng trên blog được tạo, v.v. Hiện tại, các phương thức lấy mẫu miền làm đầu vào hoặc trả lại chúng được đánh dấu nội bộ để chúng không thể sử dụng các bộ điều khiển.

Nghe có vẻ quá mức cần thiết? Không đủ trừu tượng? Tôi chủ yếu làm điều này như là một bài tập học tập nghiêm ngặt về kiến ​​trúc, không phải cho một sản phẩm thực tế, vì vậy xin vui lòng không có phản hồi dọc theo dòng "phụ thuộc vào những gì bạn muốn làm".

cảm ơn!

+1

Thực tế là bạn đã cố gắng nói quá nhiều trong quá ít từ nên cung cấp cho bạn manh mối rằng bạn đang đi đúng hướng. – pdr

Trả lời

2

Nhìn chung, thiết kế có vẻ tốt với tôi.

Có một vài đối tượng nào tôi có thể làm:

  • validations - có xác nhận 2 bước -
    Bước 1: các lớp miền cấp thực thi hiệu lực riêng của họ (thông qua thuộc tính hoặc bất kỳ cơ chế khác).
    Bước 2: Kho lưu trữ đảm bảo rằng đối tượng có giá trị trong ngữ cảnh của kho lưu trữ

  • Tiêm phụ thuộc - sử dụng khung DI để chèn phụ thuộc. Nó sẽ hữu ích cho thử nghiệm đơn vị. Ngoài ra, Nếu lớp dịch vụ mà bạn cần phải gọi qua dịch vụ, kiểm tra xem bài viết này trên Dịch vụ tổng hợp rất hữu ích: http://blog.ploeh.dk/2010/02/02/RefactoringToAggregateServices.aspx

    • ViewModels - có thể hấp dẫn để tái sử dụng, nhưng chờ & đồng hồ trước khi bạn cuối cùng đã quyết định

HTH.

+0

Câu trả lời hay. Trong những ngày cũ, chúng tôi đã từng gọi Bước 1 "Xác thực" và Bước 2 "Xác minh". – pdr

+0

Cảm ơn Sunny.Tôi thực sự đang sử dụng StructureMap cho DI, vì vậy tôi giỏi ở đó. Hiện tại, để xác thực, tôi có một dịch vụ xác nhận hợp lệ hóa các mô hình miền. Tôi thích có các mô hình ngăn cản chính mình đi vào trạng thái không hợp lệ, và tôi nghĩ rằng tôi thích có các quy tắc nghiệp vụ kiểu "hợp lệ" được nhúng trong các mô hình miền. Bạn vẽ đường giữa các quy tắc đi vào mô hình miền và ở đâu khác (dịch vụ xác thực, kho lưu trữ, v.v ...)? –

+0

Để giữ mô hình miền của tôi ở trạng thái hợp lệ, tôi không đặt bất kỳ trình cài đặt thuộc tính nào vào mô hình của mình. Thay vào đó, tất cả các thay đổi của tiểu bang phải trải qua một phương pháp xác minh rằng thay đổi là thích hợp trước khi áp dụng nó. Nhược điểm là nếu bạn có rất nhiều thay đổi tiềm năng, điều này có thể trở thành một số tiền hợp lý của mã. Các hoạt động tạo và xóa vẫn đi vào lớp kho lưu trữ. – Ryan

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