ASP.NET WebApi против MVC?

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

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


person Hugo Zapata    schedule 05.07.2012    source источник


Ответы (10)


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

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

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

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

person Yusubov    schedule 05.07.2012
comment
Не согласен, что другой пост похож. Другой пост на самом деле посвящен WCF и WebAPI. - person Shane Courtrille; 17.05.2014
comment
Технически говоря, это говорит о веб-API WCF, однако во второй строке упоминается, что теперь он объединен с веб-API Asp.net и поддерживает самостоятельный хостинг. Я все равно обновил ссылку на более свежую. Надеюсь, это поможет. - person Yusubov; 19.09.2015
comment
Обновил ссылки. - person Yusubov; 03.01.2017

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

  • Query options such as $filter, $top, $orderby, etc.
    • With traditional MVC controllers you need to implement these yourself.
  • Standardization of the format
    • There are OData clients that will understand the underlying format of your RESTful API.
person Paolo del Mundo    schedule 05.07.2012
comment
Вроде, как бы, что-то вроде. Я МОГУ поддерживать oData, но только если вы украсите действие атрибутом 'queryable', по крайней мере, как в RC. - person EBarr; 06.07.2012

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

2. Веб-API помогает создавать службы REST-ful поверх .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 представляет собой облегченную архитектуру, и, кроме веб-приложения, его также можно использовать с приложениями для смартфонов.

Исходный источник находится здесь

person curiousBoy    schedule 16.12.2016

Сходства

  1. оба наследуются от ihttphandler для асинхронного запроса, поэтому в основном контроллер apicontroller или контроллер mvc являются оболочкой для web.http.

Отличия:

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

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

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

person Mysterion    schedule 06.01.2016
comment
Стоит отметить, что вы все еще можете выполнять поведение, подобное API, с MVC, используя результаты действий mvc, такие как JSONResult и т. Д. Однако, как вы указали, контроллер MVC тяжелее. Кроме того, способ реализации контроллеров веб-API более благоприятен для создания API, чем MVC. - person Grizzly Peak Software; 13.07.2017

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

person What-About-Bob    schedule 16.10.2015

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

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

person BehrouzMoslem    schedule 13.11.2016

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.

вы можете прочитать больше здесь " rel="noreferrer">http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html

person Coder    schedule 25.08.2016

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

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

person Murugesan Nataraj    schedule 27.04.2017

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

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

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

person Nikhil Fegade    schedule 26.07.2017

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

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

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

WebAPI-DATA MVC-DATA, UI/HTML, XHTML, файлы, шаблоны и т.д..

person Eitan Revach    schedule 16.05.2016