Если я осматриваюсь, то там очень мало веб-приложений с RESTful GUI.Это из-за исторических причин или дизайн RESTful непродуктивен в обычных сценариях?
Мой ответ субъективен, но, по моему мнению, два основных препятствия мешают разработке RESTful:
- Изменение - оно сильно отличается от традиционного дизайна сайтов
- Задача - разработка чистого серверного API RESTful и соответствующего многофункционального и надежного клиентского интерфейса не так проста
Для сложных графических интерфейсов во многих случаях потребуется приложение JavaScript на клиенте.
На мой взгляд, сложный, богатый клиентский интерфейс потребует некоторого углубленного JavaScript, независимо от того,реализация на стороне сервера.
Вы должны остаться на той же странице и перезагрузить только части,
Это очень отличается от традиционного полного запроса / ответа.дизайн страницы до полной страницы.Каждый дизайн имеет свои собственные компромиссы.Проекты REST особенно хорошо работают с вызовами AJAX, но код на стороне клиента требует тщательного проектирования, чтобы его можно было поддерживать и поддерживать.
Сервер RESTful с толстым клиентом:
- хорошо масштабируется: информация о сеансе для каждого пользователя не сохраняется в дефицитной памяти сервера
- меньше данных запросов / ответов по сети: не отправлять каждую страницу полностью, не отправлять идентификаторы сеанса или
ViewState
s - чистые повторно используемые URL-адреса: предоставьте чистый, отсоединенный серверный API, который может поддерживать несколько пользовательских интерфейсов
- pure: строгое соблюдение спецификации HTTP (GET не вызывает побочных эффектов и т. д.)
- опыт клиента:более богатый, более отзывчивый с асинхронными транзакциями
Однако, как вы упоминали, у толстых клиентов есть недостатки:
- более уязвимы для атак XSS, URL-адреса RESTful действительно нуждаются в тщательной защите
- сложный JavaScript может быть сложным для разработки, поддержки и отладки (использование OO JavaScript может помочь в этом)
- Необходимо указать пользователю, что асинхронные запросы обрабатываются в фоновом режиме.
- Требуется больше логики обработки сбоев на стороне клиента.
- платформы и инструменты IDE традиционно слабее для клиента.разработка на стороне сервера, по сравнению с серверной (это постепенно улучшается)