2013-09-03 24 views
20

Tôi có một dự án MVC 4 nằm trên một ứng dụng N-tier. Bây giờ tôi có một yêu cầu để có thể tiêu thụ ứng dụng theo chương trình. Tôi đã tạo một dự án Web Api mới trong cùng một giải pháp nằm bên cạnh dự án MVC, một lần nữa trên đỉnh ứng dụng N-tier.Các dự án MVC & Web Api trong cùng một Giải pháp

Nhưng tôi không hiểu rõ cách tất cả hoạt động như lớp MVC là dự án khởi động: nó thiết lập DI, automapper của tôi và dự án tôi triển khai cho máy chủ.

Vậy tất cả điều này nên được thiết lập như thế nào? Tôi có thể thiết lập dự án MVC của mình để định tuyến tất cả các yêu cầu/api cho dự án Web Api mới không? Hay dự án Web Api cần được triển khai riêng biệt?

Tôi không muốn làm bất cứ điều gì độc đáo vì vậy nếu có một cách phổ biến hơn nhiều trong việc thiết lập này, hãy chỉ cho tôi đi đúng hướng.

Cảm ơn.

+1

Tại sao điều này được chỉnh sửa? Bạn đã cải thiện gì hơn bài đăng gốc của mình? Infact, tất cả các bạn đã làm là làm nổi bật các bộ phận khác nhau mà không cần làm nổi bật! – James

Trả lời

10

WebApi là một ứng dụng hướng dịch vụ thay thế từ Microsoft giống như WCF. Nhưng WCF sử dụng giao thức SOAP và WebAPI sử dụng giao thức HTTP để giao tiếp. Vì vậy, nếu bạn đang sử dụng WCF để cung cấp dịch vụ cho ứng dụng MVC của bạn, bạn sẽ lưu trữ dịch vụ wcf một cách riêng biệt và sử dụng dịch vụ của nó bằng ứng dụng MVC, giống như cách bạn phải lưu trữ dự án WebAPI một cách riêng biệt và cung cấp dịch vụ cho ứng dụng Web của bạn (MVC).

vì một số lý do nếu bạn muốn chúng (MVC và WebAPI) sử dụng trong cùng một dự án, hãy làm theo quy tắc này từ bài viết này.

http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx

+0

Vì vậy, ứng dụng N-Tier thực sự nên được bao bọc trong Api Web mà dự án trình bày MVC tiêu thụ? Điều này sẽ không làm cho dự án MVC bị chậm lại, vì nó sẽ cần phải gọi một dịch vụ web cho dữ liệu của nó? – James

+0

Ngoài ra, sau đó bạn sẽ di chuyển dự án MVC vào một giải pháp riêng biệt hoàn toàn? – James

+2

Có, bạn phải tạo/phát triển dự án webapi và dự án MVC của bạn một cách riêng biệt và lưu trữ chúng riêng biệt, Thiết kế tốt và có khả năng mở rộng cao. –

0

Bạn chỉ cần thêm các tuyến và API điều khiển vào trang web MVC hiện tại của bạn nơi mà tất cả họ sẽ có sẵn dưới site/api/

+0

Tôi đã xem xét việc đưa cả hai vào một dự án nhưng điều này dường như làm phức tạp hơn dự án. Nó sẽ là tuyệt vời để giữ cho 2 điều riêng biệt. – James

8

tôi chỉ làm điều tương tự hôm qua. Tôi có trong cùng một MVC 4 dự án thường xuyên Bộ điều khiển và ApiControllers.

Bạn cần phải thêm các định tuyến trong các tuyến Asax toàn cầu cho WebAPI:

WebApiConfig.Register(GlobalConfiguration.Configuration); 

Hãy nhìn vào các WebApiConfig:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

Đừng quên cũng để thêm các gói NuGet cho WebAPI (nếu bạn chưa có chúng). Trong trường hợp của tôi, tôi không có chúng vì dự án của tôi ban đầu là MVC 3 và sau đó được nâng cấp.

+0

Ứng dụng ban đầu của bạn có thuộc loại MVCapplication không? Việc định tuyến không xung đột theo bất kỳ cách nào? –

+1

@ IngóVals Có ứng dụng MVC. Không có vấn đề gì cả. –

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