Tjänstproxy och sessioner
-tjänstproxyn har särskilda beteenden för sessions- och icke-sessionsbaserade kanalbindningar. Tjänstproxyn tillhandahåller sessionsbaserad semantik om den underliggande kanalbindningen är sessionsbaserad. I det här fallet används en enda kanal för tjänstanrop. Men om kanalbindningen inte är sessionsbaserad skapar tjänstproxyn en separat kanal för varje anrop. Observera dock att icke-sessionsbaserade kanaler poolas och kanske återanvänds. Vid återanvändning av en kanal håller tjänstproxyn kanalen öppen om den underliggande kanalen inte har felat eller om anropet på en kanal har resulterat i att tjänstproxyn har felat kanalen. Observera det. Förutom om det uppstår ett fel hålls en kanal öppen så länge tjänstproxyn är öppen och stängs endast när tjänstproxyn stängs.
Om kanalbindningen är sessionsbaserad och om den underliggande kanalen fel, övergår tjänstproxytillståndsdatorn till WS_SERVICE_PROXY_STATE_FAULTED tillstånd. När det gäller icke-sessionsbaserad kanalbindning leder ett fel i den underliggande kanalen inte till att proxyn övergår till WS_SERVICE_PROXY_STATE_FAULTED tillstånd.
Mer information om tjänstproxyn och dess relation till tillstånd finns i avsnittet Service Proxy. Exempel på olika kanalbindningar finns i följande exempel:
- icke-session kanalbindning, HttpCalculatorClientExample
- sessionsbaserad kanalbindning, SessionfullCalculatorClientExample