ASP.NET WebApi против MVC? [закрыто]

143

С помощью контроллеров ASP.NET MVC вы можете предоставлять свои данные в различных форматах. AspNetWebAPI разработан специально для создания API, но я могу легко сделать это с помощью контроллеров MVC, мне не ясно, в каких случаях это было бы лучше, чем традиционные контроллеры MVC. Меня интересуют сценарии, в которых преимущества WebApi очевидны, и стоило бы добавить еще один уровень сложности в мои приложения.

Вопрос: каковы преимущества и / или недостатки использования asp.net WebApi по отношению к MVC?

Хьюго Сапата
источник
1
возможный дубликат разницы между ApiController и Controller в ASP.NET MVC
digawp
12
Мне смешно, насколько случайные вопросы «против» либо сразу закрываются, либо поднимаются до такого уровня голосов.
cbmeeks 09
11
Grrr. Ненавижу эти «закрытые как слишком пышные» баннеры. Так много раз я нахожу такие замечательные вопросы. И зачастую у них тоже есть отличные ответы. Так что, если он слишком широкий. Эксперты прямо здесь, а не в Википедии или другом форуме. Так что позвольте им делать свое дело и уйти с дороги.
nharrer

Ответы:

48

WebApi позволяет создавать службы, которые могут быть доступны через HTTP, а не через формальные службы, такие как WCF или SOAP. Еще одно отличие состоит в том, как WebApi использует протокол Http и делает его действительно первоклассным Http-гражданином.

ОБНОВЛЕНИЕ: ASP.NET Core, веб-API интегрированы в тип проекта MVC. ApiControllerКласс консолидируется в Controllerклассе. Подробнее на: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Соответствующая ссылка для сравнения, обсуждений и руководств:

введите описание изображения здесь

Юсубов
источник
21
Не согласен с тем, что другой пост похож. Другой пост на самом деле посвящен WCF vs WebAPI.
Шейн Кортриль
Технически говоря, он говорит о веб-API WCF, однако во второй строке упоминается, что теперь он объединен с веб-API Asp.net и поддерживает самостоятельный хостинг. Я все равно обновил ссылку на более новую. Надеюсь, это поможет.
Юсубов
Обновил ссылки.
Юсубов
23

WebAPI поддерживает OData, поэтому вы получаете все преимущества использования OData. Например, с WebAPI вы получаете:

  • Параметры запроса, такие как $ filter, $ top, $ orderby и т. Д.
    • С традиционными контроллерами MVC вам необходимо реализовать их самостоятельно.
  • Стандартизация формата
    • Существуют клиенты OData, которые понимают базовый формат вашего RESTful API.
Паоло дель Мундо
источник
6
Вроде. Я МОГУ поддерживать oData, но только если вы украсите действие атрибутом «запрашиваемый», по крайней мере, как в RC.
EBarr 06
15

Веб-API Asp.Net VS Asp.Net MVC 1 . Asp.Net MVC используется для создания веб-приложений, которые возвращают как представления, так и данные, но Asp.Net Web API используется для создания полнофункциональных HTTP-сервисов с легким и простым способом, который возвращает только данные, а не просмотр.введите описание изображения здесь

2 . Веб-API помогает создавать REST-сервисы поверх .NET Framework, а также поддерживает согласование содержимого (это касается определения наилучшего формата данных ответа, который может быть приемлем для клиента. Это могут быть JSON, XML, ATOM или другие форматированные данные. ), собственный хостинг, которых нет в MVC.

3 . Веб-API также заботится о возврате данных в определенном формате, таком как JSON, XML или любом другом, на основе заголовка Accept в запросе, и вы не беспокоитесь об этом. MVC возвращает данные только в формате JSON с использованием JsonResult.

4 . В веб-API запрос сопоставляется с действиями на основе HTTP-глаголов, но в MVC он сопоставляется с именем действия.

5 . Веб-API Asp.Net - это новый фреймворк и часть ядра ASP.NET. Привязка модели, фильтры, маршрутизация и другие функции MVC, существующие в веб-API, отличаются от MVC и существуют в новой сборке System.Web.Http. В MVC эти возможности существуют в System.Web.Mvc. Следовательно, веб-API также можно использовать с Asp.Net и в качестве отдельного уровня обслуживания.

6 . Вы можете смешивать веб-API и контроллер MVC в одном проекте для обработки расширенных запросов AJAX, которые могут возвращать данные в JSON, XML или любом другом формате, и создания полноценной HTTP-службы. Обычно это называется самостоятельным размещением через веб-API.

7 . Когда вы смешали контроллер MVC и веб-API и хотите реализовать авторизацию, вам необходимо создать два фильтра: один для MVC, а другой - для веб-API, поскольку они разные.

8 . Более того, веб-API - это легкая архитектура, и, кроме веб-приложения, его также можно использовать с приложениями для смартфонов.

Первоисточник здесь

любопытный мальчик
источник
13

Сходства

1) оба наследуются от ihhtphandler для asyncrequest, поэтому в основном контроллер apicontroller или mvc являются оболочкой для Интернета.

Различия: 1) mvc-контроллер очень тяжелый, если вы могли бы просмотреть его определение, вы можете увидеть, сколько интерфейсов и базовый код он использовал, веб-API - более легкий контроллер и отличить запрос по переданным параметрам (да, мы тоже можем изменить его! )

2) Контроллер MVC имеет слишком много функций, таких как возврат представлений, результат действия, результат javascript и т.д., но в веб-API есть либо JSON, либо XML

3) API предназначен для реализации сервисов Restful (получение, публикация, размещение, удаление, параметры), которые могут независимо размещаться где угодно, вне зависимости от представлений, контроллер MVC не может поддерживать это, поскольку он тесно интегрирован с представлениями.

Мистерион
источник
2
Стоит отметить, что вы все еще можете реализовать API, подобное поведению с MVC, используя результаты действий mvc, такие как JSONResult и т. Д. Однако, как вы указали, контроллер MVC тяжелее. Кроме того, способ реализации контроллеров веб-API больше способствует созданию API, чем MVC.
Grizzly Peak Software
12

В какой-то момент вы, возможно, захотите полностью забыть о ASP.NET MVC. Если вы разработчик .NET, но хотите создать одностраничное приложение (например, используя Angular), вам понадобятся преимущества службы RESTful (WebAPI) без всего ненужного раздувания, которое поставляется с ASP.NET MVC.

Что-о-Боб
источник
12

Это изображение, кажется, показывает различия и сходства в этом вопросе. Надеюсь, этот хелп мне интересен.

введите описание изображения здесь

БехрузМуслем
источник
6

ASP.NET MVC и ASP.NET Web api оба они используют для разных целей

ASP.NET

ASP.NET предлагает три платформы для создания веб-приложений: веб-формы, ASP.NET MVC и веб-страницы ASP.NET. Все три фреймворка стабильны и зрелы, и с любой из них можно создавать отличные веб-приложения. Независимо от того, какой фреймворк вы выберете, вы получите все преимущества и возможности ASP.NET повсюду.

Каждый фреймворк нацелен на свой стиль разработки. То, что вы выберете, зависит от комбинации ваших программных активов (знаний, навыков и опыта разработки), типа создаваемого вами приложения и подходящего подхода к разработке. Все три платформы будут поддерживаться, обновляться и улучшаться в будущих выпусках ASP.NET.

MVC

ASP.NET MVC дает вам мощный, основанный на шаблонах способ создания динамических веб-сайтов, который обеспечивает четкое разделение задач и дает вам полный контроль над разметкой для приятной и быстрой разработки. ASP.NET MVC включает множество функций, которые обеспечивают быструю, дружественную к TDD разработку для создания сложных приложений, использующих новейшие веб-стандарты.

Веб-API

Веб-API ASP.NET - это платформа, которая упрощает создание служб HTTP, которые охватывают широкий круг клиентов, включая браузеры и мобильные устройства. Веб-API ASP.NET - идеальная платформа для создания приложений RESTful на платформе .NET Framework.

вы можете прочитать дополнительную форму здесь http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html

Кодер
источник
4

ASP.NET MVC ориентирован на упрощение вывода HTML. Веб-API ASP.NET ориентирован на упрощение вывода необработанных данных.

В мире WebForms ASP.NET MVC будет эквивалентен страницам .aspx, а веб-API ASP.NET будет .asmx.

Муругесан Натарадж
источник
2

Asp.Net MVC используется для создания веб-приложений, которые возвращают как представления, так и данные, но Asp.Net Web API используется для создания полнофункциональных HTTP-сервисов с легким и простым способом, который возвращает только данные, а не просмотр.

Веб-API помогает создавать REST-сервисы поверх .NET Framework, а также поддерживает согласование содержимого (это касается определения наилучшего формата данных ответа, который может быть приемлем для клиента. Это может быть JSON, XML, самостоятельный хостинг, которые не являются в MVC.

Веб-API также заботится о возврате данных в определенном формате, таком как JSON, XML или любом другом, на основе заголовка Accept в запросе, и вы не беспокоитесь об этом. MVC возвращает данные только в формате JSON с использованием JsonResult.

Нихил Фегаде
источник
1

Обычно WebAPI используется для служб данных, где MVC может генерировать больше типов выходных данных.

WebAPI, безусловно, упрощает способ создания служб данных. Для этого он чистый и легкий. В MVC есть еще несколько инструментов.

MVC может генерировать любой вывод, который может выводить WebAPI. Создание выходных данных из шаблонов может быть легко выполнено в MVC. Я не могу найти причины для этого в WebAPI. Разработчики PHP и старые программисты ASP могли знать это отношение из прошлого, когда вы могли создавать файлы HTML, связанные с кодом C # внутри.

WebAPI- DATA MVC - ДАННЫЕ, UI / HTML, XHTML, файлы, шаблоны и т. Д.

Эйтан Ревач
источник