ASP.NET WebApi vs MVC? [đóng cửa]


141

Với bộ điều khiển ASP.NET MVC, bạn có thể hiển thị dữ liệu của mình ở các định dạng khác nhau. AspNetWebAPI được thiết kế rõ ràng để tạo API nhưng tôi có thể dễ dàng làm điều đó với bộ điều khiển MVC, đối với tôi không rõ ràng trong trường hợp nào nó sẽ tốt hơn bộ điều khiển MVC truyền thống. Tôi quan tâm đến các kịch bản trong đó các lợi ích của WebApi là rõ ràng và sẽ rất xứng đáng khi thêm một lớp phức tạp khác vào các ứng dụng của tôi.

Câu hỏi: những lợi thế và / hoặc nhược điểm của việc sử dụng asp.net WebApi đối với MVC là gì?



11
Thật buồn cười cho tôi khi những câu hỏi "vs" ngẫu nhiên này bị đóng lại ngay lập tức hoặc leo lên mức bỏ phiếu này.
cbmeek

10
Grrr. Tôi ghét những biểu ngữ "đóng như quá broard". Vì vậy, nhiều lần tôi tìm thấy những câu hỏi tuyệt vời như thế này. Và thường xuyên hơn không phải họ cũng có câu trả lời tuyệt vời. Vì vậy, nếu nó quá rộng. Các chuyên gia ở ngay đây và không phải trên wikipedia hoặc một số diễn đàn khác. Vì vậy, hãy để họ làm việc của họ và tránh ra.
nharrer

Câu trả lời:


47

WebApi cho phép tạo các dịch vụ có thể được hiển thị qua HTTP thay vì thông qua một dịch vụ chính thức như WCF hoặc SOAP. Một điểm khác biệt nữa là cách WebApi sử dụng giao thức http và biến nó thành công dân http thực sự hạng nhất.

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

Một liên kết có liên quan của so sánh, thảo luận và hướng dẫn:

nhập mô tả hình ảnh ở đây


20
Không đồng ý rằng bài khác là tương tự. Bài đăng khác thực sự là về WCF vs WebAPI.
Shane Courtrille

Về mặt kỹ thuật, nó nói API Web WCF, tuy nhiên, bài viết đề cập đến dòng thứ hai rằng nó được hợp nhất vào api web Asp.net ngay bây giờ và hỗ trợ tự lưu trữ. Tôi đã cập nhật liên kết dù sao với một gần đây hơn. Hy vọng rằng sẽ giúp.
Yusubov

Cập nhật các tài liệu tham khảo.
Yusubov

23

WebAPI tạo ra OData, do đó bạn có được tất cả các lợi thế của việc sử dụng OData. Ví dụ: với WebAPI bạn nhận được:

  • Các tùy chọn truy vấn như bộ lọc $, $ top, $ orderby, v.v.
    • Với bộ điều khiển MVC truyền thống, bạn cần tự thực hiện những điều này.
  • Tiêu chuẩn hóa định dạng
    • Có các máy khách OData sẽ hiểu định dạng cơ bản của API RESTful của bạn.

5
Sắp xếp Tôi CÓ THỂ hỗ trợ oData, nhưng chỉ khi bạn trang trí hành động bằng thuộc tính 'có thể truy vấn', ít nhất là với RC.
EBarr

14

API web Asp.Net VS Asp.Net MVC 1 . Asp.Net MVC được sử dụng để tạo các ứng dụng web trả về cả lượt xem và dữ liệu, nhưng API Web Asp.Net được sử dụng để tạo các dịch vụ HTTP đầy đủ với cách dễ dàng và đơn giản chỉ trả về dữ liệu không xem.nhập mô tả hình ảnh ở đây

2 . API Web giúp xây dựng các dịch vụ REST-Ful qua .NET Framework và nó cũng hỗ trợ đàm phán nội dung (về việc quyết định dữ liệu định dạng phản hồi tốt nhất mà khách hàng có thể chấp nhận. Đó có thể là JSON, XML, ATOM hoặc dữ liệu được định dạng khác ), tự lưu trữ mà không có trong MVC.

3 . API Web cũng đảm nhiệm việc trả về dữ liệu ở định dạng cụ thể như JSON, XML hoặc bất kỳ dữ liệu nào khác dựa trên tiêu đề Chấp nhận trong yêu cầu và bạn không lo lắng về điều đó. MVC chỉ trả về dữ liệu ở định dạng JSON bằng JsonResult.

4 . Trong API Web, yêu cầu được ánh xạ tới các hành động dựa trên các động từ HTTP nhưng trong MVC nó được ánh xạ tới tên hành động.

5 . API Web Asp.Net là khung mới và là một phần của khung ASP.NET cốt lõi. Liên kết mô hình, bộ lọc, định tuyến và các tính năng MVC khác tồn tại trong API Web khác với MVC và tồn tại trong hệ thống System.Web.Http mới. Trong MVC, những kỳ tích này tồn tại với trong System.Web.Mvc. Do đó API Web cũng có thể được sử dụng với Asp.Net và như một lớp dịch vụ độc lập.

6 . Bạn có thể kết hợp API Web và bộ điều khiển MVC trong một dự án để xử lý các yêu cầu AJAX nâng cao có thể trả về dữ liệu ở định dạng JSON, XML hoặc bất kỳ định dạng nào khác và xây dựng một dịch vụ HTTP đầy đủ. Thông thường, điều này sẽ được gọi là API tự lưu trữ.

7 . Khi bạn có bộ điều khiển API và API Web hỗn hợp và bạn muốn triển khai ủy quyền thì bạn phải tạo hai bộ lọc một cho MVC và một bộ lọc cho API Web vì cả hai bộ lọc đều khác nhau.

8 . Hơn nữa, API Web là kiến ​​trúc trọng lượng nhẹ và ngoại trừ ứng dụng web, nó cũng có thể được sử dụng với các ứng dụng điện thoại thông minh.

Nguồn gốc ở đây


13

Điểm tương đồng

1) cả hai đều thừa hưởng từ ihhtphandler cho asyncrequest vì vậy về cơ bản apicontler hoặc bộ điều khiển mvc đều là trình bao bọc xung quanh web.http

Sự khác biệt: 1) Bộ điều khiển mvc rất nặng nếu bạn có thể xem qua định nghĩa của nó, bạn có thể thấy có bao nhiêu giao diện và mã cơ sở đã sử dụng, web api là bộ điều khiển nhẹ hơn và phân biệt yêu cầu bằng các tham số đã truyền của nó (vâng, chúng tôi cũng có thể thay đổi nó! )

2) Trình điều khiển MVC có quá nhiều tính năng như trả về lượt xem, kết quả hành động, kết quả javascript, v.v. nhưng trong web api có JSON hoặc XML

3) API dùng để triển khai các dịch vụ Restful (get, post, put, xóa, tùy chọn) có thể lưu trữ độc lập bất cứ nơi nào mà không phụ thuộc vào chế độ xem, bộ điều khiển MVC không thể hỗ trợ khi nó được tích hợp chặt chẽ với các khung nhìn.


1
Cần lưu ý rằng bạn vẫn có thể thực hiện API như hành vi với MVC bằng các kết quả hành động mvc như JSONResult, v.v. Tuy nhiên, như bạn đã chỉ ra bộ điều khiển MVC nặng hơn. Ngoài ra, cách mà các bộ điều khiển API Web được triển khai có lợi cho việc tạo API hơn là MVC.
Phần mềm Grizzly Peak

12

Hình ảnh này dường như cho thấy sự khác biệt và tương đồng trong cách thức vấn đề. Tôi hy vọng sự giúp đỡ đó là thú vị đối với tôi.

nhập mô tả hình ảnh ở đây


10

Tại một số điểm bạn có thể muốn quên ASP.NET MVC tất cả cùng nhau. Nếu bạn là nhà phát triển .NET nhưng bạn muốn xây dựng ứng dụng Một trang (ví dụ sử dụng Angular), bạn sẽ muốn các lợi ích của dịch vụ RESTful (WebAPI) mà không cần tất cả các lỗi không cần thiết đi kèm với ASP.NET MVC.


5

ASP.NET MVC và ASP.NET Web api cả hai đều đang sử dụng cho mục đích khác nhau

ASP.NET

ASP.NET cung cấp ba khung để tạo các ứng dụng web: Web Forms, ASP.NET MVC và ASP.NET Web Pages. Tất cả ba khung công tác đều ổn định và trưởng thành và bạn có thể tạo các ứng dụng web tuyệt vời với bất kỳ trong số chúng. Cho dù bạn chọn khuôn khổ nào, bạn sẽ nhận được tất cả các lợi ích và tính năng của ASP.NET ở mọi nơi.

Mỗi khung nhắm đến một phong cách phát triển khác nhau. Ứng dụng bạn chọn phụ thuộc vào sự kết hợp của các tài sản lập trình của bạn (kiến thức, kỹ năng và kinh nghiệm phát triển), loại ứng dụng bạn đang tạo và phương pháp phát triển mà bạn cảm thấy thoải mái. Tất cả ba khung sẽ được hỗ trợ, cập nhật và cải thiện trong các bản phát hành ASP.NET trong tương lai.

MVC

ASP.NET MVC cung cấp cho bạn một cách mạnh mẽ, dựa trên các mẫu để xây dựng các trang web động cho phép phân tách rõ ràng các mối quan tâm và cho phép bạn kiểm soát hoàn toàn việc đánh dấu để phát triển nhanh, thú vị. ASP.NET MVC bao gồm nhiều tính năng cho phép phát triển nhanh, thân thiện với TDD để tạo các ứng dụng tinh vi sử dụng các tiêu chuẩn web mới nhất.

API web

ASP.NET Web API là một khung giúp dễ dàng xây dựng các dịch vụ HTTP tiếp cận nhiều khách hàng, bao gồm cả trình duyệt và thiết bị di động. ASP.NET Web API là một nền tảng lý tưởng để xây dựng các ứng dụng RESTful trên .NET Framework.

bạn có thể đọc thêm biểu mẫu tại đây http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-b between-AAS.NET


3

ASP.NET MVC tập trung vào việc làm cho đầu ra của HTML trở nên dễ dàng. ASP.NET Web API tập trung vào việc làm cho đầu ra của dữ liệu thô dễ dàng.

Trong thế giới WebForms, ASP.NET MVC sẽ tương đương với các trang .aspx và API Web ASP.NET sẽ là .asmx


2

Asp.Net MVC được sử dụng để tạo các ứng dụng web trả về cả lượt xem và dữ liệu, nhưng API Web Asp.Net được sử dụng để tạo các dịch vụ HTTP đầy đủ với cách dễ dàng và đơn giản chỉ trả về dữ liệu không xem.

API Web giúp xây dựng các dịch vụ REST-Ful qua .NET Framework và nó cũng hỗ trợ đàm phán nội dung (đó là về việc quyết định dữ liệu định dạng phản hồi tốt nhất mà khách hàng có thể chấp nhận. Đó có thể là JSON, XML, tự lưu trữ không phải là trong MVC.

API Web cũng đảm nhiệm việc trả về dữ liệu ở định dạng cụ thể như JSON, XML hoặc bất kỳ dữ liệu nào khác dựa trên tiêu đề Chấp nhận trong yêu cầu và bạn không lo lắng về điều đó. MVC chỉ trả về dữ liệu ở định dạng JSON bằng JsonResult.


1

Thông thường, WebAPI được sử dụng cho các dịch vụ dữ liệu trong đó MVC có thể tạo ra nhiều loại đầu ra hơn.

WebAPI chắc chắn đơn giản hóa cách chúng ta có thể tạo các dịch vụ dữ liệu. Nó sạch sẽ và dễ dàng cho mục đích này. MVC đi kèm với một số công cụ xung quanh.

MVC có thể tạo ra bất kỳ đầu ra WebAPI nào có thể xuất ra. Tạo đầu ra từ các mẫu có thể dễ dàng đạt được trong MVC. Tôi không thể tìm thấy lý do để làm như vậy trong WebAPI. Các nhà phát triển PHP và lập trình viên cũ của ASP có thể biết thái độ này từ quá khứ, nơi bạn có thể xây dựng các tệp HTML liên quan đến mã C # bên trong.

WebAPI- DATA MVC - DATA, UI / HTML, XHTML, Files, Template, v.v.

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.