Tôi biết rằng không phải ai cũng sử dụng một kiến trúc triệt để khi phát triển một ứng dụng MVC nhưng chúng ta hãy giả sử tôi có kiến trúc như sau:Hiểu được cách tiếp cận Web API mới
App.Core --> Class Library (POCO or Domain objects)
App.Data --> Class Library (Repository and Entity Framework)
App.Service --> Class Library (Service layer with all business logic)
App.Web --> asp.net MVC 3.0 project
App.Data --> Has a reference to App.Core
App.Service --> Has a reference to App.Core and App.Data
App.Web --> Has a reference to App.Core and App.Service
Bên trong MVC của chúng tôi ứng dụng chúng tôi cố gắng sau phương pháp này:
- Bên trong điều khiển của chúng tôi (trong vòng một phương pháp), chúng tôi nhanh chóng một ViewModel.
- Chúng tôi lấp đầy các phương thức gọi ViewModel đó từ App.Service Layer
- Sau khi ViewModel được điền, chúng tôi sẽ trả lại View (vì vậy, chế độ xem hiện đã được nhập mạnh).
Điều này xảy ra 99,9% thời gian. Nó là sạch sẽ, chúng tôi thích nó và nó tận dụng chính nó khá tốt .. etc!
Bây giờ câu hỏi của tôi là như sau:
Nếu chúng ta quyết định di chuyển ứng dụng của chúng tôi để MVC 4.0 và bắt đầu sử dụng mới Web API cách tiếp cận , Tôi không chắc tôi hoàn toàn hiểu nơi (hoặc làm thế nào) nó sẽ phù hợp với kiến trúc hiện tại của chúng ta?
Hãy nhớ rằng chúng tôi sẵn sàng thay đổi điều này!
Chúng ta có nên tạo một lớp App.WebAPI mới nằm giữa App.Service và App.Web không? Điều này có nghĩa là bên trong Bộ điều khiển của chúng tôi, chúng tôi sẽ không cần phải gọi trực tiếp cho App.Service nữa mà thay vào đó là lớp App.WebAPI mới?
Hoặc, để lại API Web bên trong lớp App.Web và làm cho Bộ điều khiển gọi các APIControllers khác mà lần lượt sẽ gọi lớp App.Service?
Không chắc chắn nếu tôi có ý nghĩa gì ở đây ... nhưng vui lòng đề xuất bất kỳ điều gì vì tôi tò mò về các yếu tố đầu vào khác nhau.
Cảm ơn
Tôi tin rằng cách tiếp cận thứ hai của bạn là những gì chúng tôi đang tìm kiếm. Xem xét chúng tôi có thể có các khách hàng khác (iPad, iPhone, v.v ...). Vì vậy, kết luận là có cả MVC và Web API ngồi trong cùng một lớp. Làm cho cả hai tương tác với Lớp Dịch vụ (giữ lại logic nghiệp vụ) và lần lượt, điền vào các Mô hình Chế độ xem khác nhau dựa trên người được gọi là gì. Đúng không? – Vlince
@Vlince, chính xác. Bạn đã tóm tắt rất tốt. –
Cảm ơn bạn đã trợ giúp :-) – Vlince