IntraWeb сесии

IntraWeb от сесия.

- За версията .NET ще трябва да почакате още :)ПатрикЙонеску. Atozed Software [1]

Резюме. Статията се занимава с управление на IntraWeb сесии. Той чете за бизнес обекти, поддържащи текущата сесия, свойства на IntraWeb компоненти и методи, свързани със сесията. Обсъжда се достъпът до сесии чрез TThreadList. Съдържа редица примери.

WEB средата не поддържа състояние (без състояние). Това означава, че сървърът не се интересува кой клиент иска информация. След като заявката бъде обслужена, цялата свързана с нея информация се губи. Ако дизайнерите на HTTP бяха вградили държавност в протокола в края на клиента, мрежовите ресурси бързо биха се изчерпали. Въпреки това, постоянството на състоянието на клиента е необходимо и е внедрено в концепцията на сесиите.

Обектът Session съхранява цялата информация за потребителя. В рамките на сесии могат да се генерират всякакви бизнес структури, чийто обхват и функционалност са ограничени, освен може би от сървърните ресурси. Въпреки това, самата IntraWeb сесия е доста инертна, тъй като сървърът не се държи активно в рамките на HTML. Тоест невъзможно е например да се изпрати команда от сървъра за затваряне на WEB браузъри за определени сесии и прекратяване на тези сесии. Сесиите съществуват определено време и ако през това време не бъде открита никаква активност на клиентския компютър, сесията се унищожава, освобождавайки ресурси (вижте главата „IntraWeb Server Controller“).

Нека разгледаме процеса на обработка на заявка от сървъра IntraWeb. Всяка заявка се обработва от сървъра в рамките на неговата сесия и от страна на клиента изглежда така, сякаш всяко самостоятелно приложение, работещо на неговата машина, е създало своя собствена сесия на сървъра. По този начин,концепцията за приложение и сесия са много тясно свързани и тази връзка е особено ясна при разработването в Delphi. Програмистът отстранява грешки както в клиентската, така и в сървърната част едновременно в един проект, просто като превключва раздели с формуляри или модули. В режим на отстраняване на грешки (самостоятелен), едно приложение, работещо на клиентската машина, създава една сесия на сървъра. Как се съхраняват данните за уникалната сесия? Когато се създаде нова сесия, сървърът генерира нов 120-битов идентификатор за нея. Този идентификатор на сесията, в зависимост от настройките на контролера на сървъра, може да се съхранява като бисквитка на локалната машина и да се предава на сървъра за идентифициране на клиента или, ако използването на бисквитка не е желателно, да се предава на сървъра като част от URL адреса. Използвайки този идентификатор, сървърът уникално идентифицира клиента.

Нова потребителска сесия се стартира от сървъра в манипулатора TIWServerController.IWServerControllerBaseNewSession. Това първо създава екземпляр на приложението WEBApplication и след това задава свойството Data на текущата потребителска сесия.

ASession: TIWA приложение;varVMainForm: TIWAppForm);

Тук трябва да се отбележи, че TUserSession по подразбиране е само мъниче и не съхранява никакви полета или методи на клиентския бизнес обект. Следователно, ако проектът не трябва да управлява сесии, класът TUserSession може да бъде изключен напълно.

Преди да преминем, за да научим как сървърът IntraWeb управлява сесиите, нека разгледаме по-подробно свързаните със сесията свойства на класа на приложение TIWApplication.

1. Свойства и методи на обекта TIWApplication.

  • AppID. Връща уникален идентификатор на сесия под формата D891CD00C44BAC0BEF63E240. Идентификаторът не може да бъде определенпредварително, както и повторно използване в друг браузър. Това осигурява допълнителна защита срещу неоторизиран достъп до данните от сесиите.
  • AuthUser.Съхранява потребителското име, ако приложението е удостоверено чрез HTTP. Ако не е извършено такова удостоверяване, това свойство връща празен низ. Методите за удостоверяване са описани по-долу в раздела „Удостоверяване“.

  • Данни. Има няколко начина за предаване на променливи стойности между формулярите за кандидатстване. Например чрез публични свойства на формуляри. IntraWeb обаче предлага по-елегантен начин – чрез създаденото приложение обект на приложение. Това може да бъде произволна бизнес информация, например индивидуална информация за посетител на сайта: