Die Frage lautet also, ob WCF4 Client-Verbindungs-Pooling zu WCF-Service aufruft. Zum Beispiel haben wir ASP.NET-Anwendung als Client und Service (auf separaten Rechnern). Dann irgendwo im Code haben wir so etwas:
%Vor%Nehmen wir an, wir haben einen anderen Service-Aufruf in einem Stück Code:
%Vor%Wird also die client2-Verbindung aus dem Verbindungspool genommen?
Das "Pooling" ist abhängig vom verwendeten Transportprotokoll. Für HTTP verwendet die WCF standardmäßig persistente HTTP-Verbindungen , die für kurze Zeit leben (sie sind nach 100s Inaktivität geschlossen ) und kann anschließend wiederverwendet werden Anfragen (auch von verschiedenen Proxy-Instanzen). Für TCP- und Named-Pipes bietet WCF ein integriertes Pooling .
Warum würden Sie das tun? WCF kann mehrere Anfragen über einen Client mit ConcurrencyMode.Multiple
annehmen. Es wäre also nicht sinnvoll, zwei Clients zu initialisieren.
WCF ServiceContract hat drei wichtige Attribute für dieses Verhalten
InstanceContextMode
ConcurrencyMode
Sitzungsmodus
Meistens verwende ich InstanceContextMode.PerSession
(weil Client 1 keinen Zugriff auf die Variablen im Service von Client 2 hat), ConcurrencyMode.Multiple
und SessionMode.Required
.
Sie können auch angeben, wie viele Instanzen initialisiert werden können, wie viele gleichzeitige Anrufe durchgeführt werden können und wie viele Sitzungen verwendet werden können.
Tags und Links wcf .net c# web-services connection-pooling