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

115

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

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

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

Теги:
asp.net-mvc
asp.net-web-api

2 ответа

161
Лучший ответ

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

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

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

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

  • 1
    Спасибо, Elad, я получил его. Можете ли вы сделать en edit в свой ответ и добавить что-нибудь об Asp.net Identity и Web Api 2 Просто некоторые из них, как они будут использоваться и извлечь выгоду. Просто несколько слов.
  • 0
    Таким образом, я не могу получить доступ к действию контроллера из приложения dektop. даже если я использую правильный синтаксис GET для вызова URL?
58

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

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

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

Дополнительная литература

  • 0
    Я не могу сказать из сравниваемых кодов, почему WebAPI является более читабельным. Кроме того, похоже, что там что-то перевернуто, поскольку именно веб-API должен иметь атрибут метода HTTP, такой как [HttpGet]. Проверьте некоторый код WebAPI (и WebAPI 2) здесь
  • 2
    Принятый ответ гласит: «По сути, контроллер Web API является контроллером MVC». Это просто неправильно. Ваш ответ указывает на то , что вся суть WebAPI в том , что это НЕ MVC, не приходится иметь дело со всеми багажа и накладных расходов для работы с «Views» и «оказание». ... и контроллеры WebApi даже не нужно связывать только с веб-сайтами. Очень хороший ответ - спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню