Использование ASP.NET MVC в качестве веб-службы

Есть ли у кого-нибудь опыт использования ASP.NET MVC-проекта в качестве веб-службы?

то есть. используя ASP.NET MVC без представлений, поэтому другие приложения могут использовать URL для GET или POST для действий в контроллере.

Кто-нибудь использовал его? Если да, есть ли недостатки для не использования проекта веб-сервиса?

Спасибо всем заблаговременно!

Ответы

Ответ 1

Это действительно зависит от типа приложения, которое вы пишете. Я бы фактически утверждал обратную позицию LukLed - службы на основе SOAP лучше подходят для внутренних клиентов, когда вы хотите поддерживать такие вещи, как Windows Authentication, или разные протоколы, такие как TCP или MSMQ.

Использование более веб-стиля GET и POST вокруг определенных "ресурсов" начнет вас в архитектурный стиль REST. Этот метод имеет несколько отличительных преимуществ для меня:

  • Ответ обычно меньше, особенно при использовании таких легких форматов, как JSON
  • Из-за простоты запросов и ответов это значительно упрощает использование в мобильных/родных приложениях (см. Twitter API, например)
  • Созданная вами служба может быть самоописательной и обнаруживаемой, поскольку вы можете ссылаться на другие части вашего API, как на обычные веб-страницы.

Одна статья, которая особенно помогла мне понять компромиссы здесь, - это Мартин Фаулер "Шаги к славе REST" . Как говорится, это может или не может быть подходящим для вашего приложения.

Если вы решили создать более основанную на REST службу, обязательно рассмотрите возможность использования ASP.NET Web API, встроенного в MVC4, как другие упомянув. В настоящее время он работает в бета-версии, но Microsoft чувствует себя достаточно хорошо, чтобы дать ему лицензию на go-live.

UPDATE:

Так как ядро ​​ASP.NET, веб-API ASP.NET был интегрирован в проект MVC 6. https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Ответ 2

Если вы хотите использовать простые вызовы GET и POST, MVC будет хорошим выбором. ASP.NET MVC 4 будет поддерживать создание API на основе HTTP. Вы можете прочитать об этом здесь: http://www.asp.net/web-api

Веб-сервис, созданный в проекте веб-службы, может быть проще использовать, поскольку он может генерировать WSDL файл, который можно легко прочитать и использовать на разных языках (используя протокол SOAP). С другой стороны, WS может создавать огромные ответы XML, которые могут быть во много раз меньше, если вы использовали свой собственный формат.

Если вы хотите распространять свой веб-сервис по всему миру, это позволяет SOAP облегчить жизнь многим разработчикам. SOAP может использоваться людьми, которые почти не имеют понятия о программировании. Если вы будете использовать его внутренне, предпочитаете скорость и простые запросы и ответы, вы можете использовать MVC.

Ответ 3

Новый ASP.NET MVC включает Web Api Kit, который может делать именно то, что вы хотите. С текущей версией вы все равно можете ее использовать. Нет никаких реальных недостатков.