方法 : ポート共有を使用するように Windows Communication Foundation サービスを構成するHow to: Configure a Windows Communication Foundation Service to Use Port Sharing

Windows Communication Foundation (WCF) アプリケーションで net.tcp://ポート共有を使用する最も簡単な方法は、を使用してサービスを公開することです NetTcpBindingThe easiest way to use net.tcp:// port sharing in your Windows Communication Foundation (WCF) application is to expose a service using the NetTcpBinding.

このバインディングは、PortSharingEnabled プロパティを提供します。このプロパティは、このバインディングを使用して構成されるサービスに対して net.tcp:// ポート共有を有効にするかどうかを制御します。This binding provides a PortSharingEnabled property that controls whether net.tcp:// port sharing is enabled for the service being configured with this binding.

以下の手順では、NetTcpBinding クラスを使用して URI (Uniform Resource Identifier)、net.tcp://localhost/MyService にあるエンドポイントを開く方法を示します。最初にコードを使用する場合の手順を示し、次に構成要素を使用する場合の手順を示します。The following procedure shows how to use the NetTcpBinding class to open an endpoint at the Uniform Resource Identifier (URI) net.tcp://localhost/MyService, first in code and then by using configuration elements.

コードで NetTcpBinding の net.tcp:// ポート共有を有効にするにはTo enable net.tcp:// port sharing on a NetTcpBinding in code

  1. というコントラクトを実装するサービスを作成し、という名前 IMyService MyService を呼び出します。Create a service to implement a contract called IMyService and call it MyService, .

    [ServiceContract]
    interface IMyService
    {
    
       //Define the contract operations.
    }
    
    class MyService : IMyService
    {
    
    //Implement the IMyService operations.
    }
    
    <ServiceContract()> _
    Friend Interface IMyService
    
        'Define the contract operations.
    
    End Interface
    
    Friend Class MyService
        Implements IMyService
    
        'Implement the IMyService operations.
    
    End Class
    
  2. NetTcpBinding クラスのインスタンスを作成し、PortSharingEnabled プロパティを true に設定します。Create an instance of the NetTcpBinding class and set the PortSharingEnabled property to true.

    NetTcpBinding portsharingBinding = new NetTcpBinding();
    portsharingBinding.PortSharingEnabled = true;
    
    Dim portsharingBinding As New NetTcpBinding()
    portsharingBinding.PortSharingEnabled = True
    
  3. ServiceHost を作成し、ポート共有を有効にした MyService を使用し、エンドポイント アドレス URI "net.tcp://localhost/MyService" をリッスンする NetTcpBinding のサービス エンドポイントを追加します。Create a ServiceHost and add the service endpoint to it for MyService that uses the port sharing-enabled NetTcpBinding and that listens at the endpoint address URI "net.tcp://localhost/MyService".

    ServiceHost host = new ServiceHost( typeof( MyService ) );
    host.AddServiceEndpoint( typeof( IMyService ), portsharingBinding,"net.tcp://localhost/MyService" );
    
    
    Dim host As New ServiceHost(GetType(MyService))
    host.AddServiceEndpoint(GetType(IMyService), portsharingBinding, "net.tcp://localhost/MyService")
    

    注意

    このエンドポイント アドレス URI は異なるポート番号を指定しないため、この例では既定の TCP ポートである 808 を使用します。This example uses the default TCP port of 808 because the endpoint address URI does not specify a different port number. トランスポート バインディングでポート共有が明示的に有効になっているため、このサービスはポート 808 を他のプロセスの他のサービスと共有できます。Because port sharing is explicitly enabled on the transport binding, this service can share port 808 with other services in other processes. ポート共有が許可されておらず、既に別のアプリケーションがポート 808 を使用している場合は、このサービスを開こうとすると AddressAlreadyInUseException がスローされます。If port sharing were not allowed and another application were already using port 808, this service would throw an AddressAlreadyInUseException when it was opened.

構成で NetTcpBinding の net.tcp:// ポート共有を有効にするにはTo enable net.tcp:// port sharing on a NetTcpBinding in configuration

  1. 次の例では、構成要素を使用してポート共有を有効にし、サービス エンドポイントを追加します。The following example shows how to enable port sharing and add the service endpoint using configuration elements.
<system.serviceModel>  
  <bindings>  
    <netTcpBinding name="portSharingBinding"
                   portSharingEnabled="true" />  
  </bindings>  
  <services>  
    <service name="MyService">  
        <endpoint address="net.tcp://localhost/MyService"  
                  binding="netTcpBinding"  
                  contract="IMyService"  
                  bindingConfiguration="portSharingBinding" />  
    </service>  
  </services>  
</system.serviceModel>  

関連項目See also