Thật không may, bạn đã sai về điều đó - tôi cho rằng tôi có thể chia sẻ tất cả các thuộc tính của mình, v.v. giữa bộ điều khiển api web và mvc, vì vậy, nhìn chung, nó không có vẻ là một thay đổi lớn đối với tôi.
Nhiều khái niệm được sử dụng bởi Web API và MVC, mặc dù thoạt nhìn tương tự nhau, nhưng thực tế lại không tương thích. Ví dụ: thuộc tính API Web là System.Web.Http.Filters.Filter
và thuộc tính MVC System.Web.Mvc.Filter
- và chúng không thể hoán đổi cho nhau.
Điều tương tự cũng áp dụng cho nhiều khái niệm khác - liên kết mô hình (các cơ chế hoàn toàn khác nhau), các tuyến (API Web sử dụng HTTPRoutes không phải Routes, mặc dù cả hai đều hoạt động trên cùng một RouteTable cơ bản), trình giải quyết phụ thuộc (không tương thích) và hơn thế nữa - mặc dù tương tự về bề mặt, rất khác nhau trong thực tế. Hơn nữa, Web API không có khái niệm về khu vực.
Cuối cùng, nếu tất cả những gì bạn đang cố gắng đạt được là có một cách "mới, hợp thời" để phục vụ nội dung JSON - hãy suy nghĩ kỹ trước khi đi theo con đường đó. Tôi chắc chắn sẽ không khuyên bạn nên cấu trúc lại bất kỳ mã hiện có nào trừ khi bạn thực sự muốn nắm bắt HTTP và xây dựng ứng dụng của mình theo cách RESTful.
Tất cả thực sự phụ thuộc vào những gì bạn đang xây dựng. Nếu bạn đang bắt đầu một dự án mới và tất cả những gì bạn cần là cung cấp một số JSON để hỗ trợ ứng dụng web của bạn - miễn là bạn sẵn sàng sống với một số mã có khả năng trùng lặp (như những thứ tôi đã đề cập ở trên), API Web có thể dễ dàng được lưu trữ bên trong cùng một dự án với ASP.NET MVC.
Tôi sẽ chỉ tách Web API thành một dự án riêng nếu bạn định xây dựng một API thích hợp cho dịch vụ trực tuyến của mình - có thể được khách hàng bên ngoài hoặc các thiết bị khác sử dụng - chẳng hạn như cung cấp năng lượng cho các ứng dụng di động của bạn.