Обмен приморскими сессиями с использованием Gemstone/S

Я пишу веб-приложение, используя VisualWorks Smalltalk, Seaside и Gemstone/S.

В настоящий момент состояние сеанса для клиента может поддерживаться только в том случае, если клиент всегда возвращается к одному и тому же изображению (хотя, если сеанс истекает, клиент может перезапустить любое изображение).

Я хотел бы понять, возможно ли совместно использовать состояние сеанса с помощью базы данных Gemstone/S. Это означает, что можно использовать прямую балансировку нагрузки http, и мне не нужно беспокоиться о сходстве изображений для большой группы пользователей.

Я вижу, что все это делается "бесплатно" с реализацией Gemstone в Seaside, но я бы хотел использовать Visualworks, потому что у него гораздо более мощная IDE, и я уже знаком с ней. Все ссылки, которые я могу найти в Google, предполагают использование Gemstone smalltalk и реализацию Gemstone Seaside.

Кто-нибудь сделал это? Если да, есть ли какие-либо описания выводов или учебники, которым я могу следовать? Много извинений, если я пропустил очевидную ссылку в поиске, но я действительно не смог ее увидеть.

2 ответа

Решение

Насколько я знаю, нет простого способа сделать это. Очень упрощенный и игнорирующий многие оптимизации, предпринятые Seaside, сеанс Seaside является снимком стека выполнения, ожидающего возобновления. Перенос этого замороженного стека выполнения на другой образ и его перезапуск там нетривиальны.

Наше приложение использует тот же стек (Seaside, VW, GS), но мы не используем полный интерфейс GBS между VW & GS, который позволяет одному образу VW обслуживать несколько сеансов Seaside. Однако даже в этом миксе требуется сессионная близость к каждому образу VW.

Ваши причины для разработки вашего приложения Seaside в VW имеют смысл. Это действительно лучшая среда разработки, но вы можете рассмотреть возможность разделения разработки и развертывания: напишите свой код в VW и разверните в GLASS. Это обычный способ использовать GLASS, хотя с Pharo для разработки.

Другие вопросы по тегам