Продолжается подписка на наши издания! Вы не забыли подписаться?

Использование continuations при создании сложных Web-приложений

Автор: Abhijit Belapurkar
Infosys Technologies Limited
Опубликовано: 27.02.2006

Если вам приходилось разрабатывать нетривиальные 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 ООО "К-Пресс"