Gebruik sessie in wcf

Als ik mijn servis-instantie instel als Per Session of Single kan ik een aantal gegevens verzenden tussen Services-instantie in sessie? Het moet worden gedaan in Asp.net-sessie - HttpContext.Current.Session of WCF hebben een eigen sessie?

2
Oké, ik begrijp het, maar kan ik Wcf-sessie gebruiken als asp en daarin gegevens opslaan?
toegevoegd de auteur netmajor, de bron

2 antwoord

Zoals ik al zei - WCF is geen ASP.NET en de verwerking ervan is enorm verschillend. Terwijl ASP.NET-sessies en WCF-sessies hetzelfde worden genoemd, verschillen ze enorm in doel en bruikbaarheid.

Lees de MSDN-pagina Sessions gebruiken in WCF voor meer informatie.

Eén zin luidt: Er is geen algemeen gegevensarchief gekoppeld aan een WCF-sessie. - dus het antwoord is nee - sessies in WCF zijn niet bedoeld voor gegevensopslag.

WCF-sessies zijn slechts om verschillende berichten in een gesprek te "binden". Standaard zou elk WCF-serviceverzoek bij het "per-call" -model een eigen, vers geïnstantieerde service klasse-instantie krijgen om de aanvraag af te handelen, en die service klasse-instantie zal worden vrijgegeven na het retourneren van het antwoord. Het gebruik van sessies vermijdt dit - het exemplaar van de serviceklasse dat de eerste aanroep van een sessie afhandelt, blijft in leven op de server (en dus ook geheugen op de server) en zal alle volgende verzoeken binnen dezelfde sessie afhandelen.

WCF en webservices in het algemeen zouden echter bij voorkeur stateless moeten zijn, dus sessies zijn een beetje een vreemdsoortige architectuur in een goede SOA-omgeving - en dat is waarschijnlijk ook waarom sessies in WCF ook lang niet zo nuttig zijn als ASP .NET-sessies zijn voor web-apps.

Om stateloos te blijven en de per-call-methode te ondersteunen (de aanbevolen voorkeursmethode), als u gegevens tussen gesprekken wilt opslaan, slaat u deze op in een permanente opslag (bijvoorbeeld een database) en haalt u deze daar later terug wanneer u deze later nodig hebt.

11
toegevoegd

Als u services host in IIS, kunt u de ASP.Net-compatibiliteitsmodus inschakelen. Hiermee kunt u de ASP.Net-sessiestatus gebruiken, net als in een webtoepassing.

5
toegevoegd
Hoe activeert u ASP.Net-compatibiliteitsmodus?
toegevoegd de auteur Bastien Vandamme, de bron