Tôi đang làm việc trên một dự án trong MVC có ứng dụng di động nên có một điều rõ ràng là chúng ta phải sử dụng API Web để nó có thể được sử dụng trong ứng dụng di động.
Sau khi tạo API khi chúng tôi bắt đầu phát triển trang Web, chúng tôi bối rối và thảo luận về việc nên sử dụng API hay truy cập trực tiếp vào đối tượng Business. Và chúng tôi đã kết thúc sau khi có ý kiến từ nhà phát triển có kinh nghiệm hơn để sử dụng API Web thay vì sử dụng trực tiếp đối tượng Business.
Tôi đang có sự nhầm lẫn về cấu trúc giải pháp này.
1) Tại sao chúng ta nên sử dụng API Web và thực hiện yêu cầu HTTP (tốn thời gian) để lấy hoặc đặt dữ liệu thay vì đối tượng kinh doanh trực tiếp trong cùng một giải pháp.
2) Sau khi có đối số, họ nói nếu khách hàng muốn lưu trữ API và web trên máy chủ đám mây khác nhau và chỉ áp dụng tỷ lệ trên API hoặc có thể anh ta muốn có url khác nhau để truy cập API và Web (đó là một số logic). Vậy trong trường hợp đó chúng ta có nên gọi API Web từ ứng dụng MVC trong cùng một giải pháp không?
3) Nếu chúng tôi lưu trữ API và Web trên các lưu trữ khác nhau thì điều đó có nghĩa là Web của chúng tôi sẽ sử dụng WebClient và có cuộc gọi HTTP trên mỗi điều hướng. Đúng không?
4) Nếu đối tượng kinh doanh của chúng tôi hình thành cả API và lưu trữ web trên các máy chủ khác nhau thì nếu có gì đó thay đổi trong BL sẽ cần cập nhật bản dựng trên cả hai máy chủ.
5) Hoặc chúng ta chỉ nên tạo một dự án cho API và có thể thêm các chế độ xem hoặc trang html để phát triển giao diện Web để theo cách đó chúng ta có thể gọi API trực tiếp từ ajax.
Theo kiến thức của tôi, số 5 là giải pháp tốt nhất hoặc API chỉ dành cho truy cập của bên thứ 3. Nếu chúng ta có DB, EF, lớp dữ liệu và lớp nghiệp vụ trong cùng một giải pháp thì chúng ta không nên sử dụng API để thực hiện các cuộc gọi HTTP và truy cập trực tiếp vào đối tượng kinh doanh. (sửa tôi nếu tôi sai) Cần có API khi ứng dụng di động hoặc máy tính để bàn hoặc bất kỳ ai muốn truy cập ứng dụng để chúng tôi có thể có cùng một kho lưu trữ và lớp dữ liệu.
Trong kịch bản của tôi, tôi đã tạo API vì chúng tôi cũng có ứng dụng di động và ở phía API dự án, chúng tôi đã gọi lớp doanh nghiệp (dự án riêng) và lớp doanh nghiệp giao tiếp với lớp truy cập dữ liệu (dự án riêng). Vì vậy, câu hỏi của tôi là nếu chúng tôi lưu trữ API và web của chúng tôi đến các máy chủ khác nhau thì việc gọi API là yêu cầu HTTP có thể mất nhiều thời gian hơn thay vì sử dụng phương thức từ lớp doanh nghiệp khi chúng tôi tạo dự án và chúng tôi đã tạo ra lớp doanh nghiệp. Trong bộ điều khiển API, chúng tôi chỉ chuyển đổi doanh nghiệp của chúng tôi sang định dạng json.
Tôi đã tìm kiếm trên internet nhưng không nhận được câu trả lời thuyết phục. Tôi đã tìm thấy một blog http://odetocode.com/bloss/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx thảo luận về cùng một điểm nhưng một lần nữa trong blog đó câu hỏi của tôi là tại sao chúng ta cần xem xét kịch bản # 3?
Cập nhật: Chúng tôi có thể có dự án API và dự án MVC khác nhau và chúng tôi có thể gọi API từ web bằng cách sử dụng jvascript hoặc có thể sử dụng mẫu MVVM.