2015-09-18 23 views

Trả lời

24

Kể từ khi câu hỏi của tôi đã được truy cập nhiều trong năm ngoái và không có câu trả lời chắc chắn như tôi nhận thức được rằng, tôi quyết định cung cấp một câu trả lời toàn diện càng nhiều càng tốt. Câu trả lời này được dựa trên một số kinh nghiệm các dự án thực tế và với vài tham vấn chuyên gia:

  1. Trước hết, điều quan trọng cần lưu ý là trong thiết kế phần mềm quá trình, có gì giống như ngay rắn và sai. Miễn là cách tiếp cận hoạt động cho dự án của bạn và phù hợp, đó là right và nếu không, nó là wrong. Không có các hiệu trưởng cứng nhắc trong thiết kế phần mềm . Có Project needs and specifications. Nhưng nói chung, nó đã được chấp nhận sử dụng Design Patterns and Principles làm cho dự án thêm robust, reliableeasy to maintain và thực hiện mã của bạn loosely coupled and highly cohesive.
  2. Toàn bộ câu chuyện của Software Design and Architecture là về cách bạn có thể quản lý dự án của mình dễ dàng và cách bạn có thể duy trì các thay đổi trong tương lai . Hãy suy nghĩ về cách tiếp cận nào mang lại cho bạn câu trả lời hay nhất trên chúng. Đó sẽ là điều tốt nhất cho bạn. Đừng nghĩ quá nhiều về Professionalism! Dự án của bạn phát triển theo thời gian và trở nên trưởng thành hơn. Vì vậy, hãy nghĩ về dự án của bạn!
  3. Là bước đầu tiên và cho kiến ​​trúc ứng dụng cấp doanh nghiệp, luôn cố gắng theo dõi Separation of Concerns hoặc SoC. Điều đó có nghĩa là bạn phải có các tầng khác nhau cho các lớp khác nhau của dự án của bạn. Nó là rất khuyến khích sử dụng dự án khác nhau trong bạn giải pháp cho Data Access Layer, Domain Entities, Business LayerPresentation Layer. Trong dự án MVC5, tốt hơn nên sử dụng Class Library Project cho Data Access Layer, Domain Entities, Business Layer và dự án MVC cho Presentation Layer.
  4. Data Access Layer là dự án đối mặt với tương tác cơ sở dữ liệu và cơ sở dữ liệu. Bạn có thể có tất cả Entity Framework hoặc các thực thể tương tự trong dự án này. Có lớp riêng biệt cho lớp cơ sở dữ liệu có nghĩa là trong trường hợp thay đổi kho dữ liệu dự án của bạn, điều duy nhất bạn cần thay đổi là thay đổi dự án này và một số thay đổi nhỏ trên Business Layer của bạn. Tất cả các dự án khác trong giải pháp của bạn vẫn còn nguyên vẹn. Vì vậy, bạn có thể dễ dàng di chuyển từ MS Sql sang Oracle hoặc từ Entity Framework đến NHibernate.
  5. Domain Entities là dự án tôi sử dụng để xác định tất cả các giải pháp, lớp, enums và các biến của giải pháp cấp. Dự án này giữ nguyên vẹn toàn bộ giải pháp của tôi trong các lớp học và phương pháp của tôi là . My tất cả các lớp trong toàn bộ giải pháp được kế thừa từ các giao diện trong dự án này.Vì vậy, tôi có một nơi để thay đổi các lớp học của mình hoặc các biến số toàn cầu và có nghĩa là Easy to Maintain cho tương lai trong giải pháp của tôi và dễ hiểu cho các nhà phát triển mới tham gia dự án.
  6. Business Layer là nơi tôi đặt tất cả logic nghiệp vụ của mình bao gồm Business EntitiesBusiness Services. Toàn bộ ý tưởng về lớp này có một nơi để giữ tất cả các phương pháp kinh doanh của bạn và tương tác . Tất cả các tính toán, sửa đổi đối tượng và tất cả các logic về dữ liệu bao gồm lưu, truy xuất, thay đổi, v.v. nên xảy ra trong phần này. Bằng cách có lớp này trong dự án của bạn, bạn có thể có người tiêu dùng khác nhau cùng một lúc, ví dụ: gốc MVC và một lớp Web API. Hoặc bạn có thể cung cấp khác nhau cho ăn dựa trên các dịch vụ kinh doanh khác nhau của người tiêu dùng thông số kỹ thuật. Bạn nên tránh đặt bất kỳ logic nghiệp vụ nào vào phần điều khiển của lớp MVC. Có bất kỳ logic kinh doanh nào trong bộ điều khiển nghĩa là bạn sử dụng bản trình bày lớp làm lớp logic nghiệp vụ và vi phạm Separation of Concerns. Sau đó, sẽ không dễ dàng thay đổi từ người trình bày này sang người thuyết trình khác hoặc có loại người tiêu dùng khác nhau cho giải pháp của bạn. Nó là tốt hơn để giữ cho phần điều khiển trong MVC mỏng như có thể. Các bộ điều khiển chỉ nên có logic và phương pháp liên quan trực tiếp đến View Models. Để biết thêm thông tin về View Models hãy tham khảo mục 7. Một điều cần nhớ, Tốt hơn là có các lớp học Business Services khác nhau dựa trên giải pháp đối tượng của bạn hoặc Business Entities.
  7. Presentation Layer trong giải pháp MVC sẽ là dự án MVC. Nhưng giải pháp có thể có loại khác hoặc nhiều hơn một Lớp trình bày cho người tiêu dùng hoặc công nghệ khác nhau. Ví dụ: bạn có thể có một lớp MVC và một Web API trong một giải pháp. Thường sử dụng Lớp trình bày để giữ tất cả logic trình bày trong đó. Logic trình bày không được liên quan đến logic nghiệp vụ hoặc logic dữ liệu. Vì vậy, câu hỏi là gì Presentation logic? Presentation logic là logic liên quan đến các mô hình xem. Xem mô hình là các đối tượng được tùy chỉnh cho chế độ xem hoặc trang. Trong hầu hết các trường hợp, các đối tượng kinh doanh không phù hợp để sử dụng trong chế độ xem. Mặt khác, lượt xem bản trình bày thường cần một số logic xác thực hoặc logic trình bày, ví dụ như tên hiển thị khác với tên đối tượng gốc . Trong những trường hợp này, hãy giữ logic trình bày tách biệt với logic nghiệp vụ để dễ dàng thay đổi bản trình bày logic logic hoặc kinh doanh độc lập và thậm chí dễ dàng chuyển đổi lớp trình bày cho thiết kế giao diện người dùng khác nhau hoặc thay đổi hoạt động kinh doanh của bất kỳ gián đoạn nào với logic trình bày. Trong trường hợp sử dụng dự án MVC là lớp trình bày cho giải pháp, tất cả các kiểu xem phải nằm trong phần Models của dự án MVC và tất cả logic trình bày phải là được đặt trong Controllers phần của dự án.
  8. Điều cuối cùng cần nói là đối với mọi giải pháp nhiều tầng, bạn cần khuôn khổ để ánh xạ đối tượng, ví dụ để chuyển đổi thực thể kinh doanh của bạn để xem mô hình.Có một số công cụ cho các mục đích này như AutoMapper, BLToolkitEmitMapper.

chữ cuối: hãy bình luận và điểm questionanswer của tôi để làm cho nó tốt hơn!

+2

Bạn có tìm thấy một số dự án ví dụ hay không? –

+0

Giả sử chúng ta dính vào khung thực thể, chúng ta có thể làm gì với các thực thể được tạo ra như là các thực thể miền? Tôi cho rằng việc chuyển sang các cơ sở dữ liệu được hỗ trợ như Oracle phải gần như liền mạch. – Tarik

+0

@Tarik Bạn có thể làm rõ câu hỏi của mình không? – Hadee

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