КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Сеансы и состояния
Лекция 13. Основные концепции проектирования корпоративных приложений (продолжение) В процессе сеанса работы пользователя с системой возникают различные промежуточные данные актуальные для конкретного сеанса. Существуют подходы для организации работы как с состояниями так и без (Stateless Session и Stateful Session).
Сеанс без состояния (Stateless Session) предполагает отсутствия какой либо информации или предыстории взаимодействия в рамках сеанса для обслуживания запросов пользователя. В таком случае сеанс взаимодействия с системой может вырождаться до одного запроса. (Например обращение к поисковой системе).
Сеанс с состоянием (Stateful Session) предполагает наличие некоторой промежуточной информации в процессе общения пользователя с системой в рамках сеанса, при этом информация необходима для выполнения запросов в правильной последовательности. (Пример – корзина в электронном магазине).
Оба подхода обладают рядом преимуществ и недостатков, ограничивающих их использование в том или ином архитектурном контексте или наоборот, отдающим им предпочтение.
К преимуществам сеанса без состояния следует отнести:
К преимуществам сеанса с состоянием относятся:
Недостатками каждого из подходов являются достоинства противоположного метода. Какому из них отдавать предпочтение – зависит от конкретной ситуации, и, быть может, от пожжержки со стороны технологической платформы.Так например обе платформы и Java 2 Enterprise Edition (J2EE) и.Net поддерживают HttpSession – вариант взаимодействия с состоянием. Использовать сессию очень просто и удобно, однако, при необходимости распределять приложение (например для балансировки нагрузки или кластеризации), необходимо соблюдать ряд мер, пренебрегание которыми способно в худшем случае вообще привести к невозможности запуска приложения на кластере или даже снизить производительность (например из-за интенсивной репликации сессии между узлами кластера). трибутыным решением здесь может быть применение так называемого подхода Session Affinity, т.е. гарантированная обработка запросов от одного клиента одним узлом кластера, что избавляет от необходимости постоянной репликации сессии (которая при неграмотном или неприспособленном проектировании может вообще оказаться не подлежащей репликации (non serializable)), однако не избавляет от проблемы повышения отказоустойчивости, так как в случае выхода из строя одного узла кластера, сессии, не будучи реплицированными на другие узлы – теряются. Что касается использование подхода без состояния – то ASP.Net позволяет использовать мехинизм, называемый ViewState. Фактически – это аналог сессии, однако не хранимый на сервере, а передаваемый каждый раз на клиент в виде Base64 закодированного hidden поля. Положительным моментом тут является то, что сервер избавляет себя от дополнительной нагрузки связанной с репликацией и поддержкой трибу. Однако, резко отрицательным моментом оказывается то, что при неграмотном проектировании размер request-response может оказываться очень значительным (например около 1Мб, что сильно тормозит сетевое взаимодействие). Оданко, такой подход всё равно нельзя назвать подходом без состояния, так как значения ViewState им как раз и являются. А дополнительное кодирование по закрытому протоколу никак не прибавляет прозрачности взаимодействия.
Существует ряд подходов для сохранения состояния сеанса:
Дата добавления: 2014-01-05; Просмотров: 410; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |