Технология Клиент-Сервер 2005'2 |
|||||||
|
Если вам приходилось разрабатывать нетривиальные Web-приложения, вы знаете, что сложность разработки повышается из-за того, что Web-браузеры позволяют пользователям произвольно перемещаться по приложению. Неважно, куда направится пользователь – вы, разработчик, все равно отвечаете за взаимодействие с ним и за корректную работу приложения в целом. Традиционный MVC-подход позволяет обрабатывать такие ситуации, но есть и другие возможности, позволяющие справиться со сложными приложениями.
Из-за stateless-природы HTTP Web-технологии страдают от проблемы утраты информации о состоянии между двумя успешными взаимодействиями с пользователем. Интерактивные Web-приложения состоят из наборов скриптов. Один скрипт отвечает за взаимодействие с пользователем, отсылая страницу браузеру (и на этом заканчиваясь), пользователь через какое-то время заполняет и отправляет форму, и еще один скрипт (возможно, другой) обрабатывает эту форму. Таким образом, логика приложения распределена по множеству скриптов.
Все усложняется тем, что браузеры позволяют пользователю в процессе взаимодействия с приложением возвращаться назад, а также создавать копии работающих приложений и исполнять их параллельно. С таким набором возможностей пользователь может одновременно перемещаться по приложению несколькими путями, а ваш код должен обеспечить успешный результат. Фреймворки Web-разработки, например, Spring или Struts, позволяют обрабатывать разнообразные пути навигации, но цена этого – усложнение и без того сложного кода.
В этой статье я покажу основанную на continuations альтернативу, способную упростить разработку сложных Web-приложений. Я начну с объяснений, что такое continuations, содержащих аргументы за то, что continuations-подход может попасть в цель при традиционном MVC-стиле программирования. Затем я перейду к простому примеру – корпоративному приложению, демонстрирующему преимущества использования continuations в смысле упрощения разработки и понятности кода приложения. Поскольку один из ключевых недостатков использования continuations – отсутствие их поддержки на платформе Java, я буду использовать фреймворк Apache Cocoon, чтобы продемонстрировать JavaScript и pure Java-реализацию примера программы. В завершение будет дан обзор достоинств и недостатков использования continuations.
Continuation обычно определяют как функцию, представляющую "остальные вычисления" или "что делать дальше". Другими словами, отправка continuation-функции промежуточного результата вычислений должна привести к получению конечного результата всего вычисления...
Copyright © 1994-2016 ООО "К-Пресс"