Tipps und Tricks rund um .NET und Visual Studio

WCF Lebensdauer von Sessions beeinflussen
Kommentare

Wird die Verwendung von Sessions mittels SessionMode.Requires erzwungen, kann auch festgelegt werden, welche Operationen zum Initiieren einer Session aufzurufen sind und welche Operationen diese beenden.

Hierzu finden die Eigenschaften IsInitiating und IsTerminating von OperationContract Verwendung. Listing 1 demonstriert das. Für die Methode Start wurde IsInitiating auf true gesetzt, weswegen man sie zum Starten einer Session aufrufen kann.

Da Start die einzige Methode mit diesem Merkmal ist, muss sie sogar zu Beginn aufgerufen werden. Danach kann der Client entweder Next oder Stop anstoßen, wobei Stop zum Abschluss der Session führt, da hier IsTerminating den Wert true aufweist. Danach darf über den verwendeten Proxy keine Methode mehr aufgerufen werden; eventuelles Zuwiderhandeln bestraft WCF mit einer Ausnahme. Der Standardwert für IsInitiating ist true; der Standardwert für IsTerminating hingegen false.

Werden diese Werte also nicht angegeben, kann jede Methode zum Initiieren einer Session herangezogen werden und keine Methode beendet sie. In diesem Fall schließt WCF die Session erst, wenn der Proxy geschlossen, eine Ausnahme ausgelöst oder das Session-Timeout überschritten wird.

Listing 1

[ServiceContract(SessionMode = SessionMode.Required)]
public interface ICountingService
{
    [OperationContract(IsInitiating=true, IsTerminating=false)]
    void Start();

    [OperationContract(IsInitiating = false, IsTerminating = false)]
    int Next();

    [OperationContract(IsInitiating = false, IsTerminating = true)]
    void Stop();
}
  

Dr. Holger Schwichtenberg (MVP) und FH-Prof. Manfred Steyer arbeiten bei www.IT-Visions.de als Softwarearchitekten, Berater und Trainer für .NET-Technologien. Dabei unterstützen sie zahlreiche Unternehmen beim Einsatz von .NET und entwickeln selbst in größeren Projekten. Sie haben zahlreiche Fachbücher geschrieben und gehören seit vielen Jahren zu den Hauptsprechern auf der BASTA!. Manfred Steyer ist zudem für den Fachbereich „Software Engineering“ der Studienrichtung „IT und Wirtschaftsinformatik“ an der FH CAMPUS 02 in Graz verantwortlich. Dr. Holger Schwichtenberg unterrichtet in Lehraufträgen an den Fachhochschulen Münster und Graz.

Autor

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -