• 28. Mai 2011
  • WCF

WCF und Port-Sharing bei netTcpBinding

Bei der Entwicklung von Produkten erscheint es wünschenswert, die Anzahl der benötigten TCP-Ports niedrig zu halten, zumal diese auf eventuellen inner- oder zwischenbetrieblichen Firewalls freigeschaltet werden müssen. Aus diesem Grund bietet WCF die Möglichkeit, verschiedene Services über denselben TCP-Port zur Verfügung zu stellen. Voraussetzung dafür ist, dass sich die einzelnen Service-URLs unterscheiden, dass Port-Sharing für das netTcpBinding aktiviert wird und dass der Windows-Service Net.Tcp Port Sharing Service gestartet ist.
Das nachfolgende Listing zeigt eine Konfiguration, die den Einsatz von Port-Sharing vorsieht. Dazu wurde in der Standard-Binding-Konfiguration für netTcpBinding die Eigenschaft portSharingEnabled auf true gesetzt und als Basisadresse net.tcp://localhost:9000/FlugBuchungsService definiert. Ein anderer Service-Host könnte nun ebenfalls Port 9000 verwenden, sofern er sich auf eine andere Service-Url abstützt (zum Beispiel net.tcp://localhost:9000/HotelService und ebenfalls Port-Sharing aktiviert.

Bei Betrachtung dieser Konfiguration fällt auf, dass für die Konfiguration von Metadata-Exchange ebenfalls das netTcpBinding und nicht das dafür vorgesehene mexTcpBinding herangezogen wurde. Das ist notwendig, um Probleme im Zusammenhang mit letzterem Binding beim Einsatz von Port-Sharing zu vermeiden.
<system.serviceModel>

    <bindings>
      <netTcpBinding>
        <binding portSharingEnabled="true">
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>

    <services>
    
      <service name="FlugService.FlugBuchungsService">

        <endpoint
          address=""
          binding="netTcpBinding"
          contract="FlugService.IFlugBuchungsService" />

        <endpoint
          address="mex"
          binding="netTcpBinding"
          contract="IMetadataExchange" />

        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:9000/FlugBuchungsService" />
          </baseAddresses>
        </host>

      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="false"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>


  </system.serviceModel>

 

Schulung und Beratung

Modern Web mit Angular 2

Datenbindung, Formulare, Validierung, Routing, HTTP, Komponenten, ...

Details

Migration auf Angular 2

Bestehende Projekte auf Angular 2 migrieren, ngUpgrade, ...

Details

Progressive Web-Apps mit Angular 2

InHouse-Schulung und/oder Beratung maßgeschneidert für Ihre Lernziele

Details

Architektur-Workshop

Interaktiver Prototyp-Workshop für Ihre Anwendung

Details

Entity Framework (EF)

Datenzugriff mit Entity Framework, Mapping-Szenarien, CRUD, Transaktionen, Migrations, Stored Procedures, Vererbung, Neuerungen in Version 7

Details

Angular 2: Deep Dive

Erweiterte Aspekte von Angular 2

Details

ASP.NET WebAPI

Web APIs mit ASP.NET, HTTP, REST, Security, Formatter, Tracing, OData, Streaming

Details

Web APIs mit ASP.NET MVC 6

Web APIs mit ASP.NET, HTTP, REST, Security, Formatter, Tracing, OData, Streaming

Details

Moderne Security-Szenarien für Web APIs

OAuth 2, OpenId Connect, JWT, Spielarten und Flows, ...

Details

Weitere Schulungen ...