2010-06-16 8 views
5

Ich bin an einem WCF-Server interessiert, der sowohl HTTP- als auch TCP-Schnittstellen bereitstellt. Es wird mit Silverlight-Clients verwendet, daher ist die HTTP-Schnittstelle für sichere Kommunikation gedacht, während TCP den Rest der Zeit verwendet wird.Können WCF TCP- und HTTP-Endpunkte denselben Port haben?

Ist es möglich, dass diese beiden Schnittstellen den gleichen Port an ihren Endpunkten verwenden, z. http://localhost:9000/ und net.tcp: // localhost: 9000 /?

+0

Ich wäre sehr überrascht, vor allem, wenn Sie wirklich HTTPS für Sicherheit meinen. Wie hosten Sie den HTTP-Endpunkt - IIS oder etwas anderes? (Hat WCF einen integrierten HTTP-Host?) Wenn es IIS ist, dann fast sicher nicht. Warum willst du das trotzdem machen? – Rup

Antwort

4

Nein, das ist nicht möglich. Wenn der TCP-Portfreigabedienst aktiviert ist, können Sie mehrere Dienste am selben TCP-Port abhören. Mit dem Windows HTTP-Listener können Sie mehrere Dienste verwenden, die einen gemeinsamen Port gemeinsam nutzen (z. B. können eine Konsolenanwendung und IIS Port 80 bei verschiedenen URLs abhören). Sie können jedoch nicht mehrere Bindungen auf demselben Port verwenden.

Aber ich sehe nicht den Vorteil, das sowieso zu tun. Ich würde persönlich den HTTP-Endpunkt auf Port 80 belassen und natürlich ist Ihr TCP-Endpunkt auf einen oberen Portbereich beschränkt. Ich bin mir nicht sicher, welches Szenario Sie aktivieren möchten.

-1

Sie können nur einen "Listener" an einem TCP-Port haben, es sei denn, der WCF-Server führt Multiplexing auf Protokollebene aus (dh wenn HTTP-Header eingelesen werden, senden Sie ihn an den HTTP-Handler) der "rohe" Handler), müssen Sie verschiedene Ports verwenden.

Natürlich ist der schnellste Weg, herauszufinden, Ihren Server mit diesen beiden Schnittstellen und dem gleichen Port zu konfigurieren, und überprüfen Sie Ihre Protokolle auf Fehler. Es besteht die Möglichkeit, dass jeder versucht, über seinen eigenen Thread oder Prozess an Port 9000 zu binden, und der zweite fehlschlägt.

Verwandte Themen