Что выбрать: ASP.NET MVC или RESTful WCF? - PullRequest
17 голосов
/ 08 декабря 2008

В ASP.NET MVC обычно используется код AJAX (например, jQuery) для вызова веб-службы с сервера без обновления страницы. Сделать веб-сервис RESTful естественно. Кажется, что есть два пути. Во-первых, URI ASP.NET MVC являются RESTful, очень просто сделать какой-нибудь контроллер / действие в качестве метода веб-службы. Во-вторых, WCF может быть RESTful начиная с версии 3.5.

Итак, каковы плюсы и минусы этих двух способов?

Запросы к ASP.NET MVC будут проходить через конвейер ASP.NET. Делает ли это медленнее, чем WCF?

Ответы [ 4 ]

12 голосов
/ 08 декабря 2008

Если вы уже используете ASP.Net MVC для остальной части веб-сайта, я думаю, что имеет смысл использовать ту же платформу и для вызовов AJAX.

Что касается конвейера ASP.Net, я полагаю, вы беспокоитесь обо всем, что касается жизненного цикла страницы. Жизненный цикл страницы выполняется только в том случае, если вы используете Views с WebFormViewEngine. Инфраструктура обеспечивает JsonResult для легкой сериализации JSON результатов действий, которая полностью обходит жизненный цикл страницы ASP.Net. Подобные классы доступны для XML, RSS и т. Д.

6 голосов
/ 21 января 2009

В моем блоге http://shouldersofgiants.co.uk/Blog/ Я собрал серию статей об использовании ASP.Net MVC для предоставления веб-службы RESTful, если это поможет.

3 голосов
/ 16 декабря 2008

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

Если вам просто нужен JS вашего приложения для связи с сервером, то использование контроллеров MVC - самое простое и простое решение.

Если вы хотите, чтобы эти API были отделены от кода MVC вашего веб-сайта (для целей развертывания и т. Д.) Или если вам нужен REST API, чтобы другие могли использовать его для вызова вашего приложения - WCF.

0 голосов
/ 05 декабря 2010

Дополнительным преимуществом использования стека WCF является возможность предоставления всех интерфейсов, необходимых для CRUD и исследования данных, всего за несколько щелчков мыши с использованием WCF Data Services / ODATA ( spec , demo ), если у вас есть слой данных, реализованный с использованием Entity Framework.

Я думаю о том, чтобы объединить эти базовые интерфейсы RAD с дополнительным уровнем более сложных транзакционных сервисов, построенных с использованием обычного MVC. Комбинация не выглядит слишком элегантной, но с точки зрения производительности она может быть полезной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...