2010-12-19 6 views
1

Ich erstelle einen WCF-Dienst, der im Moment eine Reihe von Verträgen mit einem basicHttpBinding aussetzt. Ich möchte jedoch den Dienst lokal auf demselben Computer verwenden, und eine NetNamedPipeBinding scheint in Bezug auf die Leistung angemessener. Aus diesem Grund möchte ich den Dienst mithilfe einer Named Pipe und HTTP verfügbar machen.WCF HTTP und NamedPipe-Dienst

Im Moment mit der folgenden Konfiguration dies zu tun Ich bin:

<service name="WCFService.MyService" behaviorConfiguration="serviceBehaviour"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8080/MyService" /> 
     <add baseAddress="net.pipe://localhost/MyService" /> 
     </baseAddresses> 
    </host> 

    <endpoint address="calculator" binding="basicHttpBinding" contract="WCFService.ICalculatorService" /> 
    <endpoint address="database" binding="basicHttpBinding" contract="WCFService.IDatabaseService" /> 
</service> 

Dies scheint gut zu funktionieren, aber bei genauerem Hinsehen der Endpunkte sind immer noch mit dem Basichttpbinding. Das funktioniert, aber ich habe den Eindruck, dass es unnötigen Overhead verursacht.

Muss ich für jeden Vertrag und jeden Bindungstyp einen Endpunkt erstellen (z. B. basicHttpBinding und netNamedPipeBinding) oder gehe ich völlig falsch damit um?

(! Wenn es nicht klar ist, ich bin ziemlich neu in WCF)

+0

In .NET 4, Sie WCF könnte damit umgehen: Sie könnten nur die beiden Basisadressen definieren, und WCF würde einen Endpunkt für jede Bindung und jeden gefundenen Servicevertrag erstellen, z Insgesamt vier Endpunkte –

Antwort

1

Ja, müssen Sie mehrere Endpunkte (1 Endpunkt pro Bindung) spezifizieren:

<endpoint address="calculator" binding="basicHttpBinding" contract="WCFService.ICalculatorService" /> 
<endpoint address="database" binding="basicHttpBinding" contract="WCFService.IDatabaseService" /> 

<endpoint address="calculator" binding="netNamedPipeBinding" contract="WCFService.ICalculatorService" /> 
<endpoint address="database" binding="netNamedPipeBinding" contract="WCFService.IDatabaseService" /> 
+0

Danke, das hilft sehr. – Barg