Я нахожусь в процессе разработки многофункционального интернет-приложения, которое взаимодействует с (Java) бэкэндом через веб-сервисы.Я создал прототип пользовательского интерфейса как во Flex / Flash, так и в GWT / Javascript и заметил, что эти платформы RIA предпочитают метод внутренней связи в стиле RPC (AMF для Flex и GWT-RPC для GWT).
В моем случае серверу также необходимо предоставлять веб-сервисы другим клиентам, которых я не создаю.Из-за этого я склоняюсь к основанным на стандартах веб-сервисам (например, SOAP и REST).Я убежден, что RIA должна использовать тот же веб-сервис, который мы предоставляем для других.Я «получаю» SOAP, потому что он моделирует стиль RPC, с которым я знаком по опыту.Я новичок в REST, но создал прототип REST-сервера с использованием CXF / Jackson.В настоящее время, однако, мой REST API по-прежнему чувствует себя как API в стиле RPC, и я понимаю, что это потому, что у меня возникают проблемы с мыслью о HATEOAS.
Я прочитал Полезное сообщение в блоге Роя Т. Филдинга около 10 раз, и я думаю, что начинаю видеть свет.Например, для меня ясно, что если бы я включил ссылки на различные переходы состояний вместе с моим ресурсом, я мог бы реально уменьшить количество связей между моим клиентом и сервером.Мой клиент может просто отображать кнопки, которые предоставляют пользователю доступ к легальным операциям, которые могут быть выполнены на отображаемом объекте в это время.
Но имеет ли значение слабая связь между RIA и его серверным приложением?
По своей природе RIA довольно тесно связаны с моделью данных сервера.Из коробки они предполагают много вещей.Я предполагаю, что именно поэтому они также предпочитают протокол приложений в стиле RPC ... потому что слабая связь не является целью проектирования.Но я начинаю понимать, что если бы мы серьезно относились к HATEOAS, мы могли бы написать гораздо более универсального клиента RIA, который бы сделал ОЧЕНЬ мало предположений о модели данных и операциях, которые можно выполнить.Это может уменьшить количество усилий по поддержке клиента за счет изменений в серверной части, , но имеет ли это смысл?перевешивает ли выгода?
ps - Еще две детали - Это приложение имеет чрезвычайно сложную модель данных с глубоким вложением.Кроме того, мне было бы наплевать, если кто-то скажет, что мы не являемся веб-приложением REST со 100% чистотой.