ASP.NET WebApi проти MVC? [зачинено]


140

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

Питання: які переваги та / або недоліки використання asp.net WebApi щодо MVC?



11
Мені смішно, як випадкові ці "проти" запитання або закриваються негайно, або піднімаються до цього рівня голосів.
cbmeeks

10
Grrr Я ненавиджу ті "закриті, як занадто зручні" банери. Тож багато разів я знаходжу такі великі питання. І частіше за все вони також не мають чудових відповідей. То що робити, якщо вона занадто широка. Експерти є тут, а не на вікіпедії чи іншому форумі. Тож нехай вони роблять свою справу і виходять з дороги.
nharrer

Відповіді:


47

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

Відповідне посилання порівняння, обговорень та навчальних посібників:

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


20
Не погоджуйтеся, що інша посада схожа. Інша публікація насправді стосується WCF проти WebAPI.
Шейн Кортрілль

З технічної точки зору, він говорить, що веб-API WCF, однак у другому рядку розміщується повідомлення про те, що він об'єднаний у веб-api Asp.net зараз та підтримує самостійний хостинг. Я все одно оновив посилання з більш пізнім. Сподіваюся, що це допоможе.
Юсубов

Оновлено посилання.
Юсубов

23

WebAPI випльовує OData, тому ви отримуєте всі переваги використання OData. Наприклад, за допомогою WebAPI ви отримуєте:

  • Параметри запитів, такі як $ filter, $ top, $ orderby тощо.
    • З традиційними контролерами MVC їх потрібно реалізувати самостійно.
  • Стандартизація формату
    • Є клієнти OData, які зрозуміють основний формат вашого RESTful API.

5
Різновид. Я МОЖУ підтримувати oData, але тільки якщо ви прикрасите дію атрибутом "queryable", принаймні, як RC.
EBarr

14

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

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

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

4 . У веб-API запит відображається на дії на основі дієслів HTTP, але в MVC він відображається на ім'я дій.

5 . Asp.Net Web API - це новий фреймворк і частина основної бази ASP.NET. Моделі прив'язки, фільтри, маршрутизація та інші функції MVC існують у веб-API відрізняються від MVC та існує в новій збірці System.Web.Http. У MVC ці функції існують у System.Web.Mvc. Отже, Web API також може використовуватися з Asp.Net і як окремий сервісний рівень.

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

7 . Якщо ви змішали контролер MVC та Web API і хочете реалізувати авторизацію, вам доведеться створити два фільтри, один для MVC та інший для Web API, оскільки обидва є різними.

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

Оригінальне джерело тут


13

Подібність

1) обидва успадковуються від ihhtphandler для asyncrequest, тому в основному apicontroller або mvc-контролер обидва є обгорткою навколо web.http

Відмінності: 1) Контролер mvc дуже важкий, якщо ви могли пройти його визначення, ви можете бачити, скільки інтерфейсів та базового коду він використав, web api - це легший контролер і розрізняти запит за переданими параметрами (так, ми також можемо змінити його! )

2) Контролер MVC має занадто багато функцій, таких як повернення поглядів, результат дії, результат javascript тощо, але у веб-api є JSON або XML

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


1
Варто відзначити, що ви все ще можете виконувати такі API, як поведінка з MVC, використовуючи результати дії mvc, такі як JSONResult, і т. Д. Однак, як ви вказали, контролер MVC важчий. Також спосіб реалізації контролерів Web API сприятливіший для створення API, ніж MVC.
Grizzly Peak Software

12

Це зображення, схоже, показує відмінності та схожість у питанні. Я сподіваюся, що допомога мені цікава.

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


10

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


5

Веб-програми ASP.NET MVC та ASP.NET вони обидва використовують для різних цілей

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-сервісів, що охоплюють широке коло клієнтів, включаючи браузери та мобільні пристрої. ASP.NET Web API - це ідеальна платформа для побудови RESTful додатків у .NET Framework.

ви можете прочитати більше форми тут http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-bet between- ASP.NET- MVC-and- ASP.NET- Web- API.html


3

ASP.NET MVC орієнтований на полегшення виводу HTML. Веб-API ASP.NET орієнтований на полегшення виводу необроблених даних.

У світі WebForms ASP.NET MVC був би еквівалентний сторінкам .aspx, а ASP.NET Web API був би .asmx


2

Asp.Net MVC використовується для створення веб-додатків, які повертають і види, і дані, але Web API API.Net використовується для створення повноцінних сервісів 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, файли, шаблони тощо.

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