it-roy-ru.com

Разница между проектом MVC 5 и проектом Web Api

Я новичок в ASP.NET MVC и Web API и пытаюсь получить основы. AFAIK, у нас есть шаблоны проектов в VS 2013, названные MVC, Web API и Both of them together.

Я прошел учебники и узнал, что мы можем создать API, используя как MVC, так и шаблон Web API.

Итак, каковы различия между ними, основанные на Архитектура и Использование ?

132
loop

По сути, контроллер Web API - это контроллер MVC, который использует HttpMessageResponse в качестве базового типа своего ответа вместо ActionResponse. Они одинаковы во многих других отношениях. Основное различие между типами проектов заключается в том, что в тип проекта MVC Application добавляются специфичные для веб-содержимого вещи, такие как файлы по умолчанию CSS, JavaScript и другие ресурсы, необходимые для веб-сайта, которые не нужны для API. 

MVC используется для создания веб-сайтов. В этом случае Controllers обычно возвращает View (т.е. ответ HTML) на запросы браузера. С другой стороны, веб-API обычно предназначены для использования другими приложениями. Если вы хотите разрешить другим приложениям получать доступ к вашим данным/функциям, вы можете создать веб-API для облегчения этого доступа. Например, Facebook имеет API для того, чтобы позволить разработчикам приложений получать доступ к информации о пользователях, использующих приложение. Веб-API не должны быть для общего пользования. Вы также можете создать API для поддержки ваших собственных приложений. Например, мы создали веб-API для поддержки функциональности AJAX нашего веб-сайта MVC.

Microsoft изменила способ представления разных шаблонов. Теперь вместо использования разных шаблонов для разных типов проектов они рекомендуют разработчикам смешивать технологии ASP.NET внутри одного проекта по мере необходимости. Microsoft называет это vNext.

UPDATE: Для ASP.NET Core веб-API был интегрирован в тип проекта MVC 6, а класс ApiController объединен в класс Controller. Более подробная информация по адресу: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

175
Elad Lachmi

Мои два цента...

  1. В ASP.Net MVC - Controller MVC решает, что должно быть View - то есть контроллер решает, что пользователь должен «видеть» (основываясь на текущем сценарии или контексте), когда он делает запрос.
  2. В ASP.Net Web Forms страницы ASPX решают, что пользователь должен «видеть», когда он делает запрос.
  3. Но в Web API нет никакой возможности управления всеми функциями Web API для определения того, что пользователь должен «видеть», когда он делает запрос.

Web API - это НЕ технология, связанная только с веб-сайтами. Он может быть использован для нескольких целей - не только веб-сайтов. Так что он не знает значение rendering

Дальнейшее чтение

  1. Планирование веб-решений сегодня: веб-формы, ASP.NET MVC, веб-API и OWIN.
  2. WCF или ASP.NET Web API? Мои два цента на эту тему
  3. Следующее поколение .NET - ASP.NET vNext
  4. Начало работы с ASP.NET MVC 6
70
Lijo

Контроллер MVC, производный от класса контроллера. В Mvc вы можете вернуть просмотры. Mvc архитектуру использует для создания приложения. Однако веб-API используются для предоставления данных различным приложениям.

Web Api работает от контроллера Api и не возвращает вид.

Примечание. Вы также можете создать Web Api из контроллера MVC, но вам нужно возвращать результат в виде JsonResult или других поддерживаемых типов возврата API. 

0
Akshay Kapoor

В дополнение к ответам, уже предоставленным здесь, стоит отметить, что любой контроллер, унаследованный от ApiController и имеющий действие с глаголом Http POST, может иметь только один входной параметр [FromBody]. При использовании контроллера MVC (производного от «Controller») у вас может быть много пост-входных параметров.

0
barrypicker