Является ли REST хорошим выбором для веб-приложений с графическим интерфейсом? - PullRequest
6 голосов
/ 03 февраля 2010

Веб-приложения, основанные на графическом интерфейсе, могут быть построены на компоненте с графическим интерфейсом, инфраструктуре с сохранением состояния, такой как Wicket, или они могут быть построены в виде RESTful, без сохранения состояния с состоянием графического интерфейса только на клиенте.

С технической точки зрения REST выглядит как правильный путь, поскольку он использует всю мощь http и приводит к масштабируемым приложениям. Но это приходит по цене. Сложные графические интерфейсы потребуют приложения JavaScript на клиенте во многих случаях. Вы должны остаться на той же странице и перезагрузить только части, если состояние должно быть сохранено на клиенте. Или вы должны использовать трюки со скрытыми фреймами. Иногда на сервере есть псевдоресурсы, такие как корзины покупок, чтобы включить дизайн RESTful. Вы должны поддерживать промежуточное состояние многошаговых диалогов и так далее ...

Если я посмотрю вокруг, то там очень мало веб-приложений с RESTful GUI. Это из-за исторических причин или дизайн RESTful непродуктивен в обычных сценариях?

Ответы [ 3 ]

9 голосов
/ 04 февраля 2010

Если я осматриваюсь, то там очень мало веб-приложений с RESTful GUI.Это из-за исторических причин или дизайн RESTful непродуктивен в обычных сценариях?

Мой ответ субъективен, но, по моему мнению, два основных препятствия мешают разработке RESTful:

  1. Изменение - оно сильно отличается от традиционного дизайна сайтов
  2. Задача - разработка чистого серверного API RESTful и соответствующего многофункционального и надежного клиентского интерфейса не так проста

Для сложных графических интерфейсов во многих случаях потребуется приложение JavaScript на клиенте.

На мой взгляд, сложный, богатый клиентский интерфейс потребует некоторого углубленного JavaScript, независимо от того,реализация на стороне сервера.

Вы должны остаться на той же странице и перезагрузить только части,

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

Сервер RESTful с толстым клиентом:

  • хорошо масштабируется: информация о сеансе для каждого пользователя не сохраняется в дефицитной памяти сервера
  • меньше данных запросов / ответов по сети: не отправлять каждую страницу полностью, не отправлять идентификаторы сеанса или ViewState s
  • чистые повторно используемые URL-адреса: предоставьте чистый, отсоединенный серверный API, который может поддерживать несколько пользовательских интерфейсов
  • pure: строгое соблюдение спецификации HTTP (GET не вызывает побочных эффектов и т. д.)
  • опыт клиента:более богатый, более отзывчивый с асинхронными транзакциями

Однако, как вы упоминали, у толстых клиентов есть недостатки:

  • более уязвимы для атак XSS, URL-адреса RESTful действительно нуждаются в тщательной защите
  • сложный JavaScript может быть сложным для разработки, поддержки и отладки (использование OO JavaScript может помочь в этом)
  • Необходимо указать пользователю, что асинхронные запросы обрабатываются в фоновом режиме.
  • Требуется больше логики обработки сбоев на стороне клиента.
  • платформы и инструменты IDE традиционно слабее для клиента.разработка на стороне сервера, по сравнению с серверной (это постепенно улучшается)
1 голос
/ 03 февраля 2010

Дизайн RESTful GUI очень продуктивен, ИМХО. Вы можете использовать множество функций без дополнительной работы для поддержки угловых случаев, таких как повторная отправка пользователем информации, история браузера (назад и вперед), несколько вкладок и окон. Если я не ошибаюсь, этот сайт использует RESTful UI.

0 голосов
/ 03 февраля 2010

REST был определен по характеристикам успешных веб-приложений, как GUI, так и M2M. Поэтому по определению это должно быть уместно для этих случаев.

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

...