2016-08-18 70 views
6

Tôi biết sự khác biệt giữa API WEB và MVC. Tôi cũng biết rằng trong lõi asp.net 1.0 chỉ có một loại bộ điều khiển xử lý cả MVC và API.Khi nào sử dụng Bộ điều khiển API và Bộ điều khiển MVC

Tuy nhiên, tôi đã theo dõi rất nhiều hướng dẫn ASP.NET MVC gần đây và nhận thấy rằng người hướng dẫn tạo thư mục Api bên trong thư mục Bộ điều khiển. Bằng cách này, anh chia ra tất cả các bộ điều khiển MVC chủ yếu xử lý ViewModels và sử dụng chức năng View để nói với MVC xem hiển thị từ các bộ điều khiển API chủ yếu xử lý Dtos và xử lý nghiêm ngặt dữ liệu chứ không phải xem .

Bạn sẽ nghĩ trong một ứng dụng MVC sẽ không có bộ điều khiển API nào được không? Đặc biệt kể từ trong lõi 1.0 bạn thừa kế từ một lớp: 'Bộ điều khiển'. Nhưng tôi đoán khi bạn kết hợp các khung công tác kết thúc trước như giao diện người dùng góc và Kendo, thực hiện rất nhiều yêu cầu ajax bạn thường muốn thực hiện chúng thông qua api.

Đây là sự hiểu biết hiện tại của tôi:
Sử dụng một bộ điều khiển MVC Nghiêm cho MVC chỉ có chức năng như đó nêu rõ quan điểm sẽ được hiển thị và thông qua một mô hình xem cùng với nó.

Sử dụng Bộ điều khiển API chủ yếu cho các cuộc gọi ajax, không bao giờ tải ban đầu chế độ xem và không bao giờ cho các mẫu MVC CRUD.

Ai đó có thể cho tôi một tiêu chuẩn tốt hơn để tuân theo khi nói đến điều này?

+2

Bây giờ bạn có thể tự do trộn các hành động MVC và API trong cùng một Bộ điều khiển, phần lớn chỉ là vấn đề về ý kiến ​​hoặc quyết định thiết kế. Tách các bộ điều khiển MVC cung cấp bản trình bày từ các bộ điều khiển API cung cấp dữ liệu giống như một quyết định "tách mối quan tâm" đối với tôi. Nó thực sự tùy thuộc vào bạn như thế nào bạn muốn cấu trúc mọi thứ. – jmoerdyk

Trả lời

7

Như bạn đã chỉ ra, không có sự khác biệt trong .Net Core giữa hai và tạo thư mục "API" hoàn toàn cho tổ chức dự án, nhưng các bộ điều khiển sẽ có cùng loại. Nếu bạn muốn có một quy tắc khá đơn giản, tôi sẽ nói rằng bất kỳ phương thức nào trả về JSON/XML/dữ liệu (không có thông tin trình bày) phải là bộ điều khiển "API", và bất kỳ thứ gì trả về HTML phải là "MVC" bộ điều khiển hoặc không nằm trong thư mục API.

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