> Непросто. Контекст может включать в себя целую пачку объектов, а цепочка вызовов
> — быть достаточно длинной.и это не страшно. совсем. irl — совсем немного. одна функция — одно логическое действие, не забываем.
> Но это не самое страшное. Самое страшное — это обеспечение конзистентности. К
> моменту получения от пользователя «ответа» ряд данных по цепочке вызовов вниз
> (да и просто) мог устареть, и эти данные всегда должны быть
> перезагружены из БД (например), а не из контекста. Или пересчитаны.
и это тоже не страшно. потому что о кэшировании данных мы не то, что не думаем — мы вообще забываем, что такое на свете существует. в нашем мире существует только объект со свойствами. и вот этот-то объект отлично знает, что и когда надо перечитывать. а мы просто обращаемся к его свойствам.
> Модель «вопрос-ответ» с полным сохранением контекста никуда не годится в случае наличия
> хоть малейшей доли параллелизма.
вообще-то абсолютно все программы работают по модели «вопрос-ответ». вообще все. просто иногда это *настолько* неочевидно… и писать это неочевидно, и читать это неочевидно, и проектировать это неочевидно. а всё от того, что сохранять состояния-continuations кода-то было действительно дорого.
>>> Всё и сразу? Вот прямо-таки весь дамп области данных апликухи?
>> зачем? O_O у нас есть замыкание, оно знает, что в нём сохранено.
> И никакой цепочки вызовов тоже не существует? Если нет — модель годится
> только для простейших аппликух, где нет никакой вложенности и/или зависимости контроллеров.
(вздыхает ещё раз) con-ti-nu-a-ti-on. наличие общей части с «continue» о чём-то говорит?
я тебе сейчас ещё более страшную штуку скажу: это самое continuation можно передать по сети другому исполнителю. и там продолжить (при условии, понятно, что на обоих одна и та же версия юзерского софта). load balancing? да пожалуйста. несколько серверов — да на здоровье. прозрачная миграция сессии пользователя с одного сервера на другой? да без проблем. а функции-обработчики об этом как не знали, так и не знают. им всё равно.
p.s. да, у меня есть такой фрэймворк. нет, я его не покажу: это «камерная» разработка, proof-of-concept. неоптимизированая и неотлаженая. нет, я не хочу выпускать это «в мир», мне неинтересно.