Sự khác biệt giữa Dự án MVC 5 và Dự án Api Web


135

Tôi chưa quen với ASP.NET MVCWeb API và đang cố gắng để có được những điều cơ bản. AFAIK, chúng tôi có các mẫu dự án trong VS 2013, được đặt tên là MVC, Web APIBoth of them together.

Tôi đã xem qua các hướng dẫn và học được rằng chúng ta có thể tạo API bằng cách sử dụng MVC một mình cũng như với Mẫu API Web.

Vì vậy, sự khác biệt giữa những điều này, dựa trên Kiến trúcCách sử dụng là gì?

Câu trả lời:


182

Về cơ bản, Web APIbộ điều khiển là MVCbộ điều khiển, sử dụng HttpMessageResponselàm kiểu cơ sở của phản ứng của nó, thay vì ActionResponse. Họ giống nhau ở hầu hết các khía cạnh khác. Sự khác biệt chính giữa các loại dự án là MVC Applicationloại dự án thêm các thứ cụ thể trên web như mặc định CSS, JavaScripttệp và các tài nguyên khác cần thiết cho một trang web, không cần thiết cho API.

MVC được sử dụng để tạo các trang web. Trong trường hợp này Controllersthường trả về View(tức là phản hồi HTML) cho các yêu cầu của trình duyệt. Mặt khác, các API web thường được tạo ra để sử dụng bởi các ứng dụng khác. Nếu bạn muốn cho phép các ứng dụng khác truy cập dữ liệu / chức năng của mình, bạn có thể tạo API Web để tạo điều kiện cho việc truy cập này. Ví dụ: Facebook có API để cho phép các nhà phát triển ứng dụng truy cập thông tin về người dùng sử dụng Ứng dụng. API web không phải dành cho tiêu dùng công cộng. Bạn cũng có thể tạo một API để hỗ trợ các ứng dụng của riêng bạn. Ví dụ: chúng tôi đã tạo API Web để hỗ trợ chức năng AJAX của trang web MVC của chúng tôi.

Microsoft đã thay đổi cách họ trình bày các mẫu khác nhau. Bây giờ thay vì sử dụng các mẫu khác nhau cho các loại dự án khác nhau, họ khuyến khích các nhà phát triển trộn các công nghệ ASP.NET bên trong cùng một dự án khi cần. Microsoft gọi đây vNext.

CẬP NHẬT: Đối với ASP.NET Core, API Web đã được tích hợp vào loại dự án MVC 6 và ApiControllerlớp được hợp nhất thành Controllerlớp. Thông tin chi tiết tại: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6


1
Cảm ơn Elad tôi đã hiểu. Bạn có thể chỉnh sửa cho ans của mình và thêm vài thứ về Asp.net Nhận dạng và Web Api 2 Chỉ là một số cách chúng sẽ được sử dụng và mang lại lợi ích.
vòng

Vì vậy, không có cách nào tôi có thể truy cập một hành động điều khiển từ ứng dụng dektop. ngay cả khi tôi sử dụng cú pháp GET thích hợp để gọi URL?
Không thể phá vỡ

70

Theo quan điểm của tôi...

  1. Trong ASP.Net MVC - các MVC Controllerquyết định cái gì sẽ là View- tức là, bộ điều khiển quyết định những gì người dùng nên xem See (dựa trên kịch bản hoặc bối cảnh hiện tại), khi họ đưa ra yêu cầu.
  2. Trong các hình thức web của ASP.Net , các ASPXtrang quyết định những gì người dùng nên xem, khi họ đưa ra yêu cầu.
  3. Nhưng trong API Web , không có quyền kiểm soát / quyền lực đối với bất kỳ tính năng nào của API Web để quyết định những gì người dùng nên nhìn thấy những gì khi họ đưa ra yêu cầu.

API Web KHÔNG phải là một công nghệ gắn liền với các trang web. Nó có thể được sử dụng cho nhiều mục đích - không chỉ các trang web. Vì vậy, nó không biết ý nghĩa củarendering

Đọc thêm

  1. Lập kế hoạch Giải pháp Web ngay hôm nay: Biểu mẫu web, ASP.NET MVC, API Web và OWIN.
  2. API Web WCF hay ASP.NET? Hai xu của tôi về chủ đề này
  3. Thế hệ tiếp theo của .NET - ASP.NET vNext
  4. Bắt đầu với ASP.NET MVC 6

Tôi không thể nói từ các mã được so sánh tại sao WebAPI dễ đọc hơn. Ngoài ra, có vẻ như có một cái gì đó được lật ở đó, vì đó là API Web mà người ta dự kiến ​​sẽ có một thuộc tính phương thức HTTP, chẳng hạn như [HttpGet]. Kiểm tra một số mã WebAPI (và WebAPI 2) tại đây
Gobe

2
Câu trả lời được chấp nhận cho biết "Về cơ bản, bộ điều khiển API Web là bộ điều khiển MVC". Điều đó đơn giản là sai. Câu trả lời của bạn chỉ ra rằng toàn bộ ĐIỂM của WebAPI là nó không phải là MVC, nó KHÔNG phải xử lý tất cả hành lý và chi phí để xử lý "Lượt xem" và "kết xuất". ... Và bộ điều khiển WebApi thậm chí không phải gắn với các trang web. Rất tốt trả lời - cảm ơn bạn!
FoggyDay 17/11/18

0

Bộ điều khiển MVC có nguồn gốc từ lớp trình điều khiển. Trong Mvc bạn có thể trả về lượt xem. Mvc ach architecture sử dụng để tạo một ứng dụng. Tuy nhiên, apis Web được sử dụng để cung cấp dữ liệu cho các ứng dụng khác nhau.

Web Api ổ đĩa từ bộ điều khiển Api và nó không trả về chế độ xem.

Lưu ý: Bạn cũng có thể tạo Web Api từ bộ điều khiển MVC nhưng bạn cần trả về kết quả dưới dạng JsonResult hoặc các loại trả lại được hỗ trợ api web khác.


0

Ngoài các câu trả lời đã được cung cấp ở đây, đáng chú ý bất kỳ bộ điều khiển nào kế thừa từ ApiControll và có hành động với POST động từ HTTP chỉ có thể có một tham số đầu vào [FromBody]. Nếu sử dụng bộ điều khiển MVC (xuất phát từ 'Trình điều khiển'), bạn có thể có nhiều tham số đầu vào bài đăng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.