簡略化された構成Simplified Configuration

Windows Communication Foundation (WCF) サービスを構成すると、複雑な作業ができる場合があります。Configuring Windows Communication Foundation (WCF) services can be a complex task. さまざまなオプションがあり、どの設定が必要であるかをいつでも簡単に判断できるとは限りません。There are many different options and it is not always easy to determine what settings are required. 構成ファイルは、WCF サービスの柔軟性を向上させ、多くの問題を見つけるためにハードのソースもができます。While configuration files increase the flexibility of WCF services, they also are the source for many hard to find problems. .NET Framework 4.6.1.NET Framework 4.6.1 では、このような問題に対応し、サービス構成の規模と複雑さを軽減する手段を提供しています。addresses these problems and provides a way to reduce the size and complexity of service configuration.

簡略化された構成Simplified Configuration

WCF サービス構成ファイルで、<system.serviceModel> セクションが含まれています、<service> ホストされているサービスごとの要素。In WCF service configuration files, the <system.serviceModel> section contains a <service> element for each service hosted. <service> 要素にはコレクションが含まれています <endpoint> 各サービスと必要に応じてサービスの動作のセットに対して公開されるエンドポイントを指定する要素。The <service> element contains a collection of <endpoint> elements that specify the endpoints exposed for each service and optionally a set of service behaviors. <endpoint> 要素の指定、アドレス、バインディング、およびコントラクトによって公開される、エンドポイントでは、必要に応じてバインド構成およびエンドポイント動作。The <endpoint> elements specify the address, binding, and contract exposed by the endpoint, and optionally binding configuration and endpoint behaviors. <system.serviceModel> セクションにも含まれています、<behaviors> 要素をサービスまたはエンドポイント動作を指定することができます。The <system.serviceModel> section also contains a <behaviors> element that allows you to specify service or endpoint behaviors. 次の例は、<system.serviceModel> 構成ファイルのセクション。The following example shows the <system.serviceModel> section of a configuration file.

<system.serviceModel>  
  <behaviors>  
    <serviceBehaviors>  
      <behavior name="MyServiceBehavior">  
        <serviceMetadata httpGetEnabled="true">  
        <serviceDebug includeExceptionDetailInFaults="false">  
      </behavior>  
    </serviceBehaviors>  
  </behaviors>  
  <bindings>  
   <basicHttpBinding>  
      <binding name=MyBindingConfig"  
               maxBufferSize="100"  
               maxReceiveBufferSize="100" />  
   </basicHttpBinding>  
   </bindings>   <services>  
    <service behaviorConfiguration="MyServiceBehavior"  
             name="MyService">  
      <endpoint address=""  
                binding="basicHttpBinding"  
                contract="ICalculator"  
                bindingConfiguration="MyBindingConfig" />  
      <endpoint address="mex"  
                binding="mexHttpBinding"  
                contract="IMetadataExchange"/>  
    </service>  
  </services>  
</system.serviceModel>  

.NET Framework 4.6.1.NET Framework 4.6.1 要件を削除することで簡単に WCF サービスを構成できるように、<service> 要素。makes configuring a WCF service easier by removing the requirement for the <service> element. 追加しない場合、<service> セクションにエンドポイントを追加したり、<service> セクションと、サービスがないプログラムでエンドポイントを定義、その後、一連の既定のエンドポイントは、サービスごとに 1 つに自動的に追加サービスのベース アドレス、サービスによって実装される各コントラクトに対して。If you do not add a <service> section or add any endpoints in a <service> section and your service does not programmatically define any endpoints, then a set of default endpoints are automatically added to your service, one for each service base address and for each contract implemented by your service. これらの各エンドポイントでは、エンドポイント アドレスがベース アドレスに対応し、バインドがベース アドレス スキームで決定されます。また、コントラクトは、サービスによって実装されるコントラクトになります。In each of these endpoints, the endpoint address corresponds to the base address, the binding is determined by the base address scheme and the contract is the one implemented by your service. エンドポイントまたはサービスの動作を指定する必要も、バインド設定を変更する必要もない場合、サービス構成ファイルを指定する必要はありません。If you do not need to specify any endpoints or service behaviors or make any binding setting changes, you do not need to specify a service configuration file at all. サービスが 2 つのコントラクトを実装し、ホストが HTTP トランスポートと TCP トランスポートの両方を有効にしている場合、サービス ホストは、それぞれのトランスポートを使用する各コントラクトに対して 1 つずつ、合計 4 つの既定のエンドポイントを作成します。If a service implements two contracts and the host enables both HTTP and TCP transports the service host creates four default endpoints, one for each contract using each transport. 既定のエンドポイントを作成するには、使用するバインドをサービス ホストに伝える必要があります。To create default endpoints the service host must know what bindings to use. これらの設定で指定を <protocolMappings> セクション内の <system.serviceModel> セクション。These settings are specified in a <protocolMappings> section within the <system.serviceModel> section. <protocolMappings> セクションには、バインドの型にマップされているトランスポート プロトコル スキームの一覧が含まれています。The <protocolMappings> section contains a list of transport protocol schemes mapped to binding types. サービス ホストは、渡されたベース アドレスを使用して、使用するバインドを決定します。The service host uses the base addresses passed to it to determine which binding to use. 次の例では、<protocolMappings> 要素。The following example uses the <protocolMappings> element.

警告

バインディングまたは動作のような既定の構成要素を変更すると、構成階層の下のレベルで定義されたサービスはこれらの既定のバインディングおよび動作を使用している可能性があるため、影響を受けることがあります。Changing default configuration elements, such as bindings or behaviors, might affect services defined in lower levels of the configuration hierarchy, since they might be using these default bindings and behaviors. したがって、既定のバインディングおよび動作を変更する場合は、これらの変更が階層の他のサービスに影響を与える可能性があることに注意する必要があります。Thus, whoever changes default bindings and behaviors needs to be aware that these changes might affect other services in the hierarchy.

注意

インターネット インフォメーション サービス (IIS) または Windows プロセス アクティブ化サービス (WAS) にホストされるサービスは、仮想ディレクトリをベース アドレスとして使用します。Services hosted under Internet Information Services (IIS) or Windows Process Activation Service (WAS) use the virtual directory as their base address.

<protocolMapping>  
  <add scheme="http"     binding="basicHttpBinding" bindingConfiguration="MyBindingConfiguration"/>  
  <add scheme="net.tcp"  binding="netTcpBinding"/>  
  <add scheme="net.pipe" binding="netNamedPipeBinding"/>  
  <add scheme="net.msmq" binding="netMSMQBinding"/>  
</protocolMapping>  

前の例では、"http" スキームで始まるベース アドレスのエンドポイントは、BasicHttpBinding を使用します。In the previous example, an endpoint with a base address that starts with the "http" scheme uses the BasicHttpBinding. "net.tcp" スキームで始まるベース アドレスのエンドポイントは、NetTcpBinding を使用します。An endpoint with a base address that starts with the "net.tcp" scheme uses the NetTcpBinding. ローカルの App.config または Web.config ファイルの設定はオーバーライドできます。You can override settings in a local App.config or Web.config file.

内の各要素の <protocolMappings> セクションは、スキームとバインドを指定する必要があります。Each element within the <protocolMappings> section must specify a scheme and a binding. 必要に応じて指定できます、bindingConfiguration内でバインド構成を指定する属性を <bindings> 構成ファイルのセクション。Optionally it can specify a bindingConfiguration attribute that specifies a binding configuration within the <bindings> section of the configuration file. bindingConfiguration が指定されていない場合は、適切なバインド型の匿名バインド構成が使用されます。If no bindingConfiguration is specified, the anonymous binding configuration of the appropriate binding type is used.

匿名を使用して既定のエンドポイント サービスの動作が構成されている <behavior> セクション内 <serviceBehaviors> セクション。Service behaviors are configured for the default endpoints by using anonymous <behavior> sections within <serviceBehaviors> sections. いずれかの名前のない <behavior> 内の要素 <serviceBehaviors> サービスの動作を構成するために使用します。Any unnamed <behavior> elements within <serviceBehaviors> are used to configure service behaviors. たとえば、次の構成ファイルでは、ホスト内のすべてのサービスで、サービス メタデータの公開が有効になります。For example, the following configuration file enables service metadata publishing for all services within the host.

<system.serviceModel>  
    <behaviors>  
      <serviceBehaviors>  
        <behavior>  
          <serviceMetadata httpGetEnabled="True"/>  
        </behavior>  
      </serviceBehaviors>  
    </behaviors>    <!-- No <service> tag is necessary. Default endpoints are added to the service -->  
    <!-- The service behavior with name="" is picked up by the service -->  
 </system.serviceModel>  

匿名を使用してエンドポイントの動作が構成されている <behavior> セクション内 <serviceBehaviors> セクション。Endpoint behaviors are configured by using anonymous <behavior> sections within <serviceBehaviors> sections.

以下は、このトピックの最初にある例と同じ内容ですが、簡略化された構成モデルを使用している構成ファイルの例です。The following example is a configuration file equivalent to the one at the beginning of this topic that uses the simplified configuration model.

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
       <basicHttpBinding>
          <binding maxBufferSize="100"
                   maxReceiveBufferSize="100" />
       </basicHttpBinding>
    </bindings>
    <!-- No <service> tag is necessary. Default endpoints will be added to the service -->
    <!-- The service behavior with name="" will be picked up by the service -->
    <protocolMapping>
      <add scheme="http" binding="basicHttpBinding" />
  </protocolMapping>
  </system.serviceModel>

重要

この機能は、WCF サービス構成にのみ適用され、クライアント構成には適用されません。This feature relates only to WCF service configuration, not client configuration. ほとんどの場合、WCF クライアント構成は、svcutil.exe などのツールを使用したり、Visual Studio からサービス参照を追加したりすることで生成されます。Most times, WCF client configuration will be generated by a tool such as svcutil.exe or adding a service reference from Visual Studio. WCF クライアントを手動で構成している場合は、追加する必要があります。、<クライアント > 要素を構成し、呼び出すエンドポイントを指定します。If you are manually configuring a WCF client you will need to add a <client> element to the configuration and specify any endpoints you wish to call.

関連項目See also