Dans un projet que j'ai réalisé il y a pas longtemps, j'ai du intégrer le concept de session dans Windows Communication Foundation (WCF). Vous allez voir, c'est un vrai jeu d'enfant!
Tout se passe dans l'interface qui définit notre contrat (ou presque). Au départ, nous avons ceci comme contrat :
[code:c#]
public interface ICareOfUServices
{
bool Login(string Login, string Password);
void AjoutSinistre(int GestionnaireID, int EtatSinitreID, int NumeroProcesVerbal, string Intitule, string Temoin,
string Lieu, string Commentaire, int Imobilise);
}
[/code]
Nous avons ici deux méthodes :
- Login : qui permettra l'authentification.
- AjoutSinistre : qui pourra être appellé seulement si on est authentifier.
Pour utiliser les sessions, nous devons les définir dans l'interface à l'aide d'attribut. Notre interface devient :
[code:c#]
[ServiceContract(SessionMode=SessionMode.Required)]
public interface ICareOfUServices
{
[OperationContract(IsInitiating=
true, IsOneWay=
false)]
bool Login(
string Login,
string Password);
[OperationContract(IsOneWay=true)]
void AjoutSinitre(int GestionnaireID, int EtatSinitreID, int NumeroProcesVerbal, string Intitule, string Temoin,
string Lieu, string Commentaire, int Imobilise);
}
[/code]
On voit différents éléments :
- SessionMode : Permet de dire qu'on à besoin absolument d'une session.
On peut avoir d'autre mode de session :
- IsInitiating : permet d'indiquer où est initialisée la session. Par opposition, on peut aussi trouver IsTerminating= qui permet d'indiquer où la session se termine.
- IsOneWay : permet d'indiquer si on envoi une réponse ou non.
Dans la classe qui implémente l'interface, nous avons besoin d'ajouter un attribut :
[code:c#]
[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerSession)]
public class CareOfUServices : ICareOfUServices
{
#region ICareOfUServices Members
bool IsConnected = false;
...
[/code]
Ce qui veut dire qu'on instancie cette objet à chaque session. La session, c'est donc l'objet lui même. On voit un peu plus bas que j'ai mis un booléan à false que je mettrai à true si le consommateur du web service est bien connecté. Ensuite, dans mes autres méthodes je mettrai :
[code:c#]
if( IsConnected == true)
// OK...
[/code]
Et voilà :)
Lire la suite...
Tags:
wcf,
session
Catégorie :
Windows Comunication Foundation
Une question sur cet article? n'hésitez pas a me contacter par Live Messegner. Suis-je connecté? 
Actuellement noté 4.0 par 1 personne(s)
- Currently 4/5 Stars.
- 1
- 2
- 3
- 4
- 5
Permalink |
Commentaires (3) |
Post RSS |