Зачем использовать ASP.NET MVC 2 для служб REST? Почему не WCF? - PullRequest
19 голосов
/ 27 марта 2010

Итак, я вижу, что MVC 2 теперь поддерживает [HttpPut] и [HttpDelete], а также [HttpGet] и [HttpPost], что делает возможным создание полноценного Web-сервиса RESTful с его использованием.

Я уже некоторое время использую инструментарий REST для WCF и считаю его довольно мощным, но мне было бы интересно узнать, какие (если есть) преимущества есть при использовании подхода MVC 2.

Приветствуются ссылки, рассказы о войне или даже чистые слухи.

Ответы [ 4 ]

15 голосов
/ 28 марта 2010

Я почти уверен, что ASP.NET MVC поддерживает все HTTP-глаголы с самого начала. По крайней мере, у HttpVerb Enumeration они были с самого начала. Единственное, что нового в V2 - это то, что они являются атрибутами.

// V1
[AcceptVerbs( HttpVerbs.Delete )]

// V2
[HttpDelete]

Шесть из одного, полдюжины из другого. Что касается того, хотите ли вы предоставить функциональность через WCF или ASP.NET MVC, все будет зависеть от того, как вы относитесь к своему приложению.

  • Если вы думаете о нем как о толстом клиентском приложении, которое просто написано на JavaScript и обращается к релакс-сервисам для данных (затем форматирует их на стороне клиента), то WCF будет выглядеть как более правильное решение (даже если вы можете сделать это с помощью любого из них).

  • Однако, если вы рассматриваете свое приложение как серверное приложение, которое возвращает контент в той или иной форме для потребления, то использование RESTful API для ваших действий будет более целесообразным. Ваши действия вернут полностью отформатированный контент, который будет отображаться в браузере без дальнейшей обработки. Вы могли бы возвращать отформатированный контент (HTML или другой) из веб-службы, но это было бы как-то неправильно.

По крайней мере, такое различие имеет смысл в моей голове =). Вас также может заинтересовать сообщение Фила Хаака о Как метод становится действием .


Теперь есть еще одна опция, Web API . ScottGu имеет краткое введение в своем блоге, и есть интересное сообщение в блоге, в котором обсуждается создание API с использованием Web API против контроллеров здесь .

4 голосов
/ 02 января 2011

Я не могу говорить о наборе инструментов MVC, но лично я считаю, что работать с WCF сложно. У него есть свои применения, но это довольно тяжелый фреймворк, и иногда его может быть довольно неудобно использовать.

Если вы хотите пойти по REST-маршруту, OpenRasta - лучшее решение .Net, которое сейчас существует. Особенно с точки зрения соответствия.

Вы также можете создать фреймворк ASP MVC для RESTful, но для этого требуется немало усилий (по сравнению с OpenRasta, который работает из коробки).

4 голосов
/ 29 марта 2010

Вам следует проверить интересный блог плечи-гиганты Кто написал серию постов о создании веб-сервиса RESTful с ASP.Net MVC.

от Часть 1 до Часть 21 вы можете найти некоторую интересную информацию. И он еще даже не закончил ... хорошее чтение.

3 голосов
/ 28 марта 2010

Мы используем ASP.Net MVC 1.0 для создания служб JSON.

Для этого есть несколько причин:

  1. Мы использовали ASP.Net MVC для страниц,поэтому использование его для сервисов также уменьшает количество технологий в проекте.
  2. Мы обнаружили, что его очень легко использовать для возврата ActionResult с данными в формате JSON

    public ActionResult GetData(string id)
    {
        if (string.IsNullOrEmpty(id))
        {
            throw new ArgumentNullException("id", "Searchvalue must be provided.");
        }
    
        // Where Provider.GetData returns  IEnumerable<Data>
        return Json(Provider.GetData(id));
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...