SerializableSession

Overview

The SerializableSession class is used as a base class for out-of-process session classes. This class provides save-to-stream and load-from-stream functionality as well as internal cache used to speed up handling of complex objects.

Unlike the in-process sessions like the MemorySessionManager that store references to objects added to session out-of-process session managers have to serialize session data before sending it to an out-of-process session state storage (f.e. Olympia state server). This implies significant restrictions on values that can be stored in the session.

Sessions based on the SerializableSession class can store data of the following types: * Primitive values: * Binary ** Boolean ** Byte ** Currency ** DateTime ** Decimal ** Double ** Guid ** Int8 ** Int16 ** Int32 ** Int64 ** String * Classes inherited from the ComplexType class. In this case methods ComplexType and ComplexType are used to serialize/deserialize data * All .NET classes marked with the Serializable attribute. In this case .NET serialization facility will be used * Arrays of types listed above

The SerializableSession class also provides internal cache so all non-primitive values are deserialized only when they are accessed from the user code.

Location

Implements

 

constructor  protected

Creates a new instance of the SerializableSession class and sets its IsNew and SessionID properties.

 

constructor(sessionId: Guid; isNew: Boolean)

 

SerializableSession(Guid sessionId, Boolean isNew)

 

Sub New (sessionId As Guid, isNew As Boolean)

Parameters:

  • sessionId: Session ID
  • isNew: Flag indicating whether this session instance is new (ie it was created anew, not loaded from the session storage)

Count

Gets the number of items in the session-state collection.

 

property Count: Int32 read;

 

Int32 Count { get; }

 

Property ReadOnly Count As Int32

Created

Gets or sets UTC datetime when this session instance was created.

 

property Created: DateTime read write;

 

DateTime Created { get; set; }

 

Property Created As DateTime

Dispose

Disposes of the current session instance.

 

method Dispose

 

void Dispose()

 

Sub Dispose

Disposed

Gets a flag indicating whether current session instance is already disposed of.

Disposed sessions can no longer be modified and they will be discarded (rather then persisted for future calls) once they get released.

 

property Disposed: Boolean read;

 

Boolean Disposed { get; }

 

Property ReadOnly Disposed As Boolean

Expired

Gets a flag indicating whether the current session instance is expired.

 

property Expired: Boolean read;

 

Boolean Expired { get; }

 

Property ReadOnly Expired As Boolean

IsChanged

Gets a flag indicating that session values stored in the current session were changed.

This flag can be used by the session manager to reduce amount of data that will be sent to the session storage (ie there is no need to rewrite session values dats stream if there were no changes in them).

 

property IsChanged: Boolean read;

 

Boolean IsChanged { get; }

 

Property ReadOnly IsChanged As Boolean

IsNew

Gets a flag indicating that the current session instance was just created and wasn't stored in the session storage yet.

 

property IsNew: Boolean read;

 

Boolean IsNew { get; }

 

Property ReadOnly IsNew As Boolean

Item

Gets or sets individual session values.

 

property Item[name: String]: Object read write;

 

Object Item[String name] { get; set; }

 

Property Item(name As String) As Object

LastAccessed

Gets or sets a UTC datetime when this session instance was last accessed.

 

property LastAccessed: DateTime read write;

 

DateTime LastAccessed { get; set; }

 

Property LastAccessed As DateTime

LoadFromStream

Loads session data from the provided data stream.

 

method LoadFromStream(stream: Stream)

 

void LoadFromStream(Stream stream)

 

Sub LoadFromStream(stream As Stream)

Parameters:

  • stream: Stream containing serialized session data

Names

Gets list of session value names.

 

property Names: ReadOnlyCollection<String> read;

 

ReadOnlyCollection<String> Names { get; }

 

Property ReadOnly Names As ReadOnlyCollection<String>

Remove

Removes session value from the current session instance. If session doesn't contain value with provided name then it is ignored.

 

method Remove(name: String)

 

void Remove(String name)

 

Sub Remove(name As String)

Parameters:

  • name: Session value name

Roles

Gets or sets roles associated to this session.

Roles are checked when services or methods have their Roles property set in the Service Builder.

 

property Roles: array of String read write;

 

String[] Roles { get; set; }

 

Property Roles As array of String

SaveToStream

Loads session data to the provided data stream.

 

method SaveToStream(stream: Stream)

 

void SaveToStream(Stream stream)

 

Sub SaveToStream(stream As Stream)

Parameters:

  • stream: Stream that will contain serialized session data

SessionID

Gets session Id.

 

property SessionID: Guid read;

 

Guid SessionID { get; }

 

Property ReadOnly SessionID As Guid

Timeout

Gets or sets the number of seconds since the last access that can elapse before the session will expire.

 

property Timeout: Int32 read write;

 

Int32 Timeout { get; set; }

 

Property Timeout As Int32

Touch

Updates the ISession value of the session with current date and time.

 

method Touch

 

void Touch()

 

Sub Touch

 

Count

Gets the number of items in the session-state collection.

 

property Count: Int32 read;

 

Int32 Count { get; }

 

Property ReadOnly Count As Int32

Created

Gets or sets UTC datetime when this session instance was created.

 

property Created: DateTime read write;

 

DateTime Created { get; set; }

 

Property Created As DateTime

Disposed

Gets a flag indicating whether current session instance is already disposed of.

Disposed sessions can no longer be modified and they will be discarded (rather then persisted for future calls) once they get released.

 

property Disposed: Boolean read;

 

Boolean Disposed { get; }

 

Property ReadOnly Disposed As Boolean

Expired

Gets a flag indicating whether the current session instance is expired.

 

property Expired: Boolean read;

 

Boolean Expired { get; }

 

Property ReadOnly Expired As Boolean

IsChanged

Gets a flag indicating that session values stored in the current session were changed.

This flag can be used by the session manager to reduce amount of data that will be sent to the session storage (ie there is no need to rewrite session values dats stream if there were no changes in them).

 

property IsChanged: Boolean read;

 

Boolean IsChanged { get; }

 

Property ReadOnly IsChanged As Boolean

IsNew

Gets a flag indicating that the current session instance was just created and wasn't stored in the session storage yet.

 

property IsNew: Boolean read;

 

Boolean IsNew { get; }

 

Property ReadOnly IsNew As Boolean

Item

Gets or sets individual session values.

 

property Item[name: String]: Object read write;

 

Object Item[String name] { get; set; }

 

Property Item(name As String) As Object

LastAccessed

Gets or sets a UTC datetime when this session instance was last accessed.

 

property LastAccessed: DateTime read write;

 

DateTime LastAccessed { get; set; }

 

Property LastAccessed As DateTime

Names

Gets list of session value names.

 

property Names: ReadOnlyCollection<String> read;

 

ReadOnlyCollection<String> Names { get; }

 

Property ReadOnly Names As ReadOnlyCollection<String>

Roles

Gets or sets roles associated to this session.

Roles are checked when services or methods have their Roles property set in the Service Builder.

 

property Roles: array of String read write;

 

String[] Roles { get; set; }

 

Property Roles As array of String

SessionID

Gets session Id.

 

property SessionID: Guid read;

 

Guid SessionID { get; }

 

Property ReadOnly SessionID As Guid

Timeout

Gets or sets the number of seconds since the last access that can elapse before the session will expire.

 

property Timeout: Int32 read write;

 

Int32 Timeout { get; set; }

 

Property Timeout As Int32

 

constructor  protected

Creates a new instance of the SerializableSession class and sets its IsNew and SessionID properties.

 

constructor(sessionId: Guid; isNew: Boolean)

 

SerializableSession(Guid sessionId, Boolean isNew)

 

Sub New (sessionId As Guid, isNew As Boolean)

Parameters:

  • sessionId: Session ID
  • isNew: Flag indicating whether this session instance is new (ie it was created anew, not loaded from the session storage)

Dispose

Disposes of the current session instance.

 

method Dispose

 

void Dispose()

 

Sub Dispose

LoadFromStream

Loads session data from the provided data stream.

 

method LoadFromStream(stream: Stream)

 

void LoadFromStream(Stream stream)

 

Sub LoadFromStream(stream As Stream)

Parameters:

  • stream: Stream containing serialized session data

Remove

Removes session value from the current session instance. If session doesn't contain value with provided name then it is ignored.

 

method Remove(name: String)

 

void Remove(String name)

 

Sub Remove(name As String)

Parameters:

  • name: Session value name

SaveToStream

Loads session data to the provided data stream.

 

method SaveToStream(stream: Stream)

 

void SaveToStream(Stream stream)

 

Sub SaveToStream(stream As Stream)

Parameters:

  • stream: Stream that will contain serialized session data

Touch

Updates the ISession value of the session with current date and time.

 

method Touch

 

void Touch()

 

Sub Touch

See Also