В веб-разработке много внимания уделяется архитектурам типа REST, цель которых сводится к минимуму (или устранению) состояния. Веб-фреймворки, которые я видел, все подчеркивают этот стиль (Django, Rails, фляжка и т. Д.).Веб-разработка: сложные процессы: являются ли государственные машины способом (только?)?
Хотя я согласен с тем, что это хорошо подходит для Интернета в целом, есть также много случаев, когда это неадекватно. В частности, я думаю о том, что вы хотите, чтобы пользователь следил за процессом, то есть вы хотите предложить несколько шагов, и эти шаги должны быть выполнены в определенном порядке (возможно, с дополнительными шагами, отклонениями путей и т. Д.)
Хорошим примером может быть корзина для покупок: сначала вы должны сделать свой выбор, затем ввести свой адрес, выбрать тип отправки, ввести свои платежные реквизиты, завершить. Вы не хотите, чтобы пользователь пропустил любой из этих шагов, и процесс может стать намного более сложным. В идеале я хотел бы, чтобы этот процесс определялся в отдельном месте, чтобы отделить эту логику от остальной части реализации.
Теперь мои вопросы:
конечны автоматы путь здесь? Они все еще хорошо работают, если эти процессы становятся сложными и нуждаются в значительном изменении (например, этот шаг должен идти здесь, этот шаг должен идти на этот процесс и т. Д.)?
Какие варианты предлагаются/для веб-фреймворков (в частности, меня не интересуют лучшие решения)?
Каковы интересные/хорошие примеры того, где происходят такие процессы? Тележки для покупок являются очевидным примером, но я уверен, что их намного больше.
Интересный пример государственных машин - это телевизионная приставка для кабельной компании, такой как Virgin и т. Д. Они могут стать довольно сложными и огромной болью в заднице, чтобы кодировать, поскольку ящики часто очень ограничены по мощности и большая часть полосы пропускания зарезервирована для аудио/видео. – Thor84no