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


135

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

Я пройшов підручники і дізнався, що ми можемо робити API, використовуючи MVC як окремо, так і за допомогою шаблону Web API.

Отже, які відмінності між ними базуються на архітектурі та використанні ?

Відповіді:


182

В основному, 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.

ОНОВЛЕННЯ: Для ядра ASP.NET Web API був інтегрований у тип проекту MVC 6 і ApiControllerклас консолідується у Controllerклас. Детальніші відомості: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6


1
Дякую Елад, я отримав це. Можна зробити редагування у своїх ан-х і додати щось про Asp.net Identity та Web Api 2 Просто деякі, як вони будуть використовуватися та виграти. Просто кілька слів.
петля

Отже, я жодним чином не можу отримати доступ до дії контролера з програми dektop. навіть якщо я використовую належний синтаксис GET для виклику URL-адреси?
Незламний

70

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

  1. У ASP.Net MVC - MVC Controllerвирішує, що має бути 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

Я не можу сказати із порівняних кодів, чому WebAPI читабельніше. Крім того, схоже, що там щось перевернуто, оскільки саме веб-API - це той атрибут методу HTTP, як [HttpGet]. Ознайомтеся з кодом WebAPI (і WebAPI 2) тут
Gobe

2
У прийнятій відповіді зазначено "В основному контролер Web API - це контролер MVC". Це просто неправильно. Ваш відповідь указует, що вся POINT з WebAPI є те , що це НЕ MVC, це НЕ мати справу з усім багажем і накладними витратами для роботи з «Views» і «наданням». ... а контролерам WebApi навіть не потрібно пов'язувати лише веб-сайти. Дуже хороша відповідь - дякую!
FoggyDay

0

Контролер MVC, похідний від класу контролерів. У Mvc ви можете повертати представлення даних. Achitecture Mvc використовує для створення програми. Однак веб-apis використовується для надання даних різному застосуванню.

Web Api працює з диспетчером Api, і він не повертає перегляд.

Примітка: Ви також можете створити Web Api з контролера MVC, але вам потрібно повернути результат у вигляді JsonResult або інших типів повернення, підтримуваних веб-api.


0

На додаток до вже наданих тут відповідей, варто відзначити будь-який контролер, який успадковує ApiController і має дію з Http дієсловом POST, може мати лише один вхідний параметр [FromBody]. Якщо ви використовуєте контролер MVC (походить від "Controller"), у вас може бути безліч параметрів введення повідомлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.