Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

Преимущества WebApi перед Asp.net mvc при реализации api

Добрый день! Возник следующий вопрос. Имеется asp.net mvc приложение, работающее с некой бд (sql server). И есть еще одно приложение, для которого нужно дать некий api для работы с первым приложением (по большому счету с его базой данных). Предполагается что api должно представлять собой набор http методов, позволяющих получать ответ в формате json. Напрашивается использование технологии ASP.NET Web Api, про которую я слышал ранее. Проблема вот в чем. Я почти ничего не знаю об этой технологии (ну только что она позволяет достаточно легко и удобно создавать такие api и более "легкая" по сравнению с wcf). Пока что я вижу более простую для себя альтернативу в виде создания дополнительного контроллера в своем asp.net mvc приложении с экшнами, возвращающими JsonResult. Ну в общем такая простенькая реализация api. Преимущество такого подхода для меня состоит в том, что в этом случае не придется создавать новый проект и разворачивать его отдельно (мелочь но все же) а также что в mvc приложении доступ к данным происходит через orm и в случае с web api придется как-то дублировать код этого доступа и в web api проекте.
Теперь сам вопрос: есть ли какие-то весомые преимущества у технологии web api для решения данной задачи? Или наоборот есть ли какие-то существенные недостатки для решения этой задачи у подхода с отдельным контроллером и экшнами возвращающими JsonResult? Просто меня гложет сомнение что раз существует такая технология как WebApi,то наверное реализовывать свой api с помощью такого кустарного метода как простые Json-экшены несколько глупо? Наставьте пожалуйста на путь истинный! заранее спасибо!


Ответ

WEB API крайне удобен для создания RESTful-сервисов, который Вам как раз и нужно будет создать. Есть у него и свои нюансы, если MVC сочетает в себе и контроллеры и движок представления, то Web Api - это только контроллеры, возвращающие данные (JSON, XML или др. - не важно), которые работают с HTTP. Вы не сможете, к примеру, выполнить переадресацию пользователя на другую страницу, но вы можете послать HTTP-код, соответствующий редиректу. Вы не сможете отобразить ошибку авторизации, но вы пошлёте на клиент статус-код, в котором покажете ошибку 401 и сообщение к нему.
Абсолютно без разницы как и на чём вы будете писать клиентское приложение - ведь WebApi - это HTTP-стандарт.
Но если не брать в расчёт такие понятия как вид выводимых данных - то то, что происходит в контроллере - практически ничем не отличается от обычного MVC! Так что не стоит переживать о том, что не сможете использовать ORM

Комментариев нет:

Отправить комментарий