Зачем использовать ASP.NET MVC 2 для служб REST? Почему не WCF?
Итак, я вижу, что MVC 2 теперь поддерживает [HttpPut]
и [HttpDelete]
, а также [HttpGet]
и [HttpPost]
, что позволяет использовать полный веб-сервис RESTful, используя его.
Я использовал инструментарий REST для WCF некоторое время и считаю его достаточно мощным, но мне было бы интересно узнать, какие (если есть) преимущества используют подход MVC 2.
Ссылки, военные истории или даже чистое слух-приветствуются.
Ответы
Ответ 1
Я уверен, что 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-интерфейсов с использованием API-интерфейсов Web API и контроллеров здесь.
Ответ 2
Вы должны проверить интересный блог shouldersofgiants Кто сделал серию публикаций по созданию RESTful WebService с ASP.Net MVC.
от часть 1 до часть 21 вы может найти иную информацию. И он еще не сделал... хорошее чтение.
Ответ 3
Я не могу говорить о наборе MVC, но лично я считаю, что WCF боль для работы. У этого есть использование, но это довольно тяжелая структура и может быть довольно неудобно использовать время от времени.
Если вы хотите спуститься по маршруту REST, OpenRasta - лучшее решение .Net в настоящее время. Особенно в плане соблюдения.
Вы также можете подделать структуру ASP MVC как RESTful, но для этого требуется честная работа (по сравнению с OpenRasta, которая работает из коробки).
Ответ 4
Мы используем ASP.Net MVC 1.0 для создания служб JSON.
Есть несколько причин для этого:
- Мы использовали ASP.Net MVC для страниц, поэтому его использование для этих услуг также уменьшает количество технологий в проекте.
-
Мы нашли его очень простым в использовании для возврата 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));
}