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

Что выбрать: ASP.NET MVC или RESTful WCF?

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

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

Запросы ASP.NET MVC пройдут через ASP.NET Pipeline. Это делает его медленнее, чем WCF?

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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