Tôi đã tự hỏi thực hành tốt nhất cho kiến trúc mức doanh nghiệp dựa trên MVC5 là gì. Tôi có nghĩa là lựa chọn giữa nhiều lớp hoặc nhiều dự án trong một giải pháp? và có thể có nhiều hơn một giải pháp? bất kỳ dự án ví dụ tốt nào?Cách thực hành tốt nhất cho kiến trúc ứng dụng cấp doanh nghiệp sử dụng MVC5 là gì?
15
A
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:
- 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ụngDesign Patterns and Principles
làm cho dự án thêmrobust
,reliable
vàeasy to maintain
và thực hiện mã của bạnloosely coupled and highly cohesive
. - 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! - 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ặcSoC
. Đ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 choData Access Layer
,Domain Entities
,Business Layer
vàPresentation Layer
. Trong dự án MVC5, tốt hơn nên sử dụngClass Library Project
choData Access Layer
,Domain Entities
,Business Layer
và dự án MVC choPresentation Layer
. 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ênBusiness 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
đếnNHibernate
.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.Business Layer
là nơi tôi đặt tất cả logic nghiệp vụ của mình bao gồmBusiness Entities
vàBusiness 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ốcMVC
và một lớpWeb 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ạmSeparation 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 đếnView Models
. Để biết thêm thông tin vềView Models
hãy tham khảo mục7
. Một điều cần nhớ, Tốt hơn là có các lớp họcBusiness Services
khác nhau dựa trên giải pháp đối tượng của bạn hoặcBusiness Entities
.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ộtWeb 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ầnModels
của dự án MVC và tất cả logic trình bày phải là được đặt trongControllers
phần của dự án.- Đ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
,BLToolkit
vàEmitMapper
.
chữ cuối: hãy bình luận và điểm question
và answer
của tôi để làm cho nó tốt hơn!
-1
Hãy xem Contoso University. Ví dụ tuyệt vời của ứng dụng cấp doanh nghiệp.
Các vấn đề liên quan
- 1. Thực tiễn tốt nhất về kiến trúc tích hợp cho các ứng dụng Doanh nghiệp
- 2. Doanh nghiệp, Hệ thống và Kiến trúc Ứng dụng (Thực tiễn Tốt nhất?)
- 3. Thực hành tốt nhất Sử dụng C# XSD typed-datasets Trong các ứng dụng doanh nghiệp
- 4. Thực tiễn tốt nhất cho phân phối doanh nghiệp khách hàng iOS là gì?
- 5. Mẹo của bạn để thực hành tốt nhất cho cấu trúc ứng dụng web là gì?
- 6. Thực hành tốt nhất về quản lý trường hợp realm trong Kiến trúc Sạch là gì?
- 7. Ứng dụng WPF mẫu cho dòng ứng dụng doanh nghiệp?
- 8. Cấu trúc tốt nhất cho ứng dụng bằng cách sử dụng ngrx là gì?
- 9. "Các mẫu kiến trúc ứng dụng doanh nghiệp" của Fowler vẫn có liên quan?
- 10. LINQ to SQL hoặc khung thực thể cho kiến trúc ứng dụng ASP.NET MVC của doanh nghiệp?
- 11. Cách tạo Ứng dụng Android chỉ dành cho Doanh nghiệp
- 12. Tạo phương thức bảo mật cho lớp doanh nghiệp. thực hành tốt nhất/mô hình tốt nhất
- 13. Cách hiệu quả để thực hiện nhập XMI hàng loạt trong Kiến trúc sư doanh nghiệp
- 14. Làm cách nào để lên kế hoạch cho một ứng dụng web cấp doanh nghiệp?
- 15. Kiến trúc phản ứng cho một ứng dụng kinh doanh lớn
- 16. Các phương pháp hay nhất để đăng nhập ứng dụng doanh nghiệp là gì?
- 17. Ưu điểm của F # trên C# cho phát triển ứng dụng doanh nghiệp là gì?
- 18. Thực hành tốt nhất cho vị trí của tệp cấu hình ứng dụng Java là gì?
- 19. Sử dụng ClientBundle trong một Ứng dụng Doanh nghiệp lớn?
- 20. Màu nền lớp Kiến trúc sư doanh nghiệp
- 21. Khung thực thể - phù hợp với ứng dụng Cấp Doanh nghiệp không?
- 22. Thực hiện đa thuê nhà cho một ứng dụng doanh nghiệp trưởng thành
- 23. Cách tạo sơ đồ lớp từ mã nguồn bằng cách sử dụng Kiến trúc sư doanh nghiệp hoặc Kiến trúc sư phần mềm Rational?
- 24. Sử dụng Haskell với phần phụ trợ cơ sở dữ liệu cho "ứng dụng doanh nghiệp"
- 25. AngularJS và các ứng dụng doanh nghiệp
- 26. Thử nghiệm các ứng dụng .NET cho doanh nghiệp (LOB)?
- 27. Kiến trúc cho ứng dụng web với ứng dụng dành cho thiết bị di động là gì?
- 28. Ứng dụng mẫu doanh nghiệp cho ASP.NET MVC?
- 29. Quy trình tốt nhất cho ứng dụng web ASP.NET mới từ đầu là gì?
- 30. Cách thực hành tốt nhất để triển khai một ứng dụng tĩnh hoặc động là gì?
Bạn có tìm thấy một số dự án ví dụ hay không? –
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
@Tarik Bạn có thể làm rõ câu hỏi của mình không? – Hadee