2016-12-22 4 views
-1

Im Moment habe ich einen WCF-Webdienst auf einem Computer, der mit einem WCF-Windows-Dienst auf einem anderen Computer verbunden ist, der die gesamte Datenverarbeitung durchführt. Der Webdienst verweist direkt auf den Windows-Dienst und alle Konfigurationsinformationen werden in den Dateien web und app.config festgelegt.Kann ich programmatisch eine Verbindung zu einem anderen WCF-Endpunkt in meinem Webdienst herstellen?

Um dies skalierbar zu machen, möchte ich, dass der Web-Service mit mehreren WCF-Windows-Diensten auf separaten Rechnern verbunden werden kann. Zum Beispiel würden die Clients 1 bis 3 alle ihre Datenverarbeitung auf einem Windows-Dienst/Rechner ausführen, während die Clients 4 bis 6 ihre auf einem separaten Windows-Dienst/Rechner haben würden.

Ich denke darüber nach, es so zu implementieren; Wenn eine SQL-Datenbank die WCF-Endpunkte in einer clientID speichert, übernimmt der Webdienst die clientID und ruft im Gegenzug einen WCF-Endpunkt ab. Anschließend stellt der Webdienst eine Verbindung mit diesem bestimmten Windows-Dienst mit diesem WCF-Endpunkt her.

Ist dies machbar, oder gibt es einen besseren Weg, damit umzugehen? Ich habe nicht viel WCF Erfahrung gehabt, also könnte ich hier auf der falschen Spur sein.

Danke.

+0

Dies ist machbar. Sie können die URL (den Endpunkt) des Webdienstes angeben, wenn Sie den Client erstellen. – Tim

Antwort

1

WCF unterstützt sowohl administrative Client-Konfiguration (über Konfigurationsdatei) als auch programmatische Client-Konfiguration. Du brauchst den zweiten.

Hier ist Beispiel für programmatische Konfiguration:

Binding wsBinding = new WSHttpBinding(); 
EndpointAddress endpointAddress = new EndpointAddress("http://localhost:8000/SomeService"); 
SomeServiceClient proxy = new SomeServiceClient(wsBinding, endpointAddress); 

proxy.SomeMethod(); 

proxy.Close(); 

Mit Programmkonfiguration durch Binding und EndpointAddress Klassen, die Sie die gleiche Flexibilität wie mit Konfigurationsdateien erreichen könnten.

Weitere Hilfe finden Sie unter:

Binding Class

EndpointAddress Class

ClientBase Class

+0

danke für die Antwort Ich werde diese Links überprüfen – cjw

Verwandte Themen