Зачем использовать ASP.NET MVC 2 для служб REST? Почему не WCF?

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

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

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


person Jeremy McGee    schedule 27.03.2010    source источник
comment
Связанный: stackoverflow.com/questions/3401943/   -  person Max Toro    schedule 01.01.2011


Ответы (4)


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

// V1
[AcceptVerbs( HttpVerbs.Delete )]

// V2
[HttpDelete]

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

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

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

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


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

person R0MANARMY    schedule 27.03.2010

Вам следует ознакомиться с интересным блогом плечамиofgiants, который опубликовал серию сообщений о создании RESTful WebService с помощью ASP.Net MVC.

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

person moi_meme    schedule 29.03.2010

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

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

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

person Bealer    schedule 02.01.2011

Мы используем 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));
    }
    
person Shiraz Bhaiji    schedule 27.03.2010
comment
Вы также можете просто вернуть JsonResult - person moi_meme; 29.03.2010