Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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));
    }