다음을 통해 공유


단순화된 구성

WCF(Windows Communication Foundation) 서비스를 구성하는 것은 복잡한 태스크일 수 있습니다. 다양한 옵션이 있을 수 있고 경우에 따라 필요한 설정을 확인하는 것이 쉽지 않을 수도 있습니다. 구성 파일을 사용하면 WCF 서비스가 더 유연해지지만 문제의 원인을 찾기가 그만큼 더 어려울 수 있습니다. .NET Framework 버전 4에서는 이러한 문제를 해결하고 서비스 구성의 크기와 복잡성을 줄일 수 있는 방법을 제공합니다.

단순화된 구성

WCF 구성 파일의 <system.serviceModel> 섹션에는 호스팅된 각 서비스에 대한 <service> 요소가 포함되어 있습니다. <service> 요소에는 각 서비스에 대해 노출된 끝점을 지정하고 선택적으로 일련의 서비스 동작도 지정하는 <endpoint> 요소의 컬렉션이 포함되어 있습니다. <endpoint> 요소는 끝점에서 노출하는 주소, 바인딩 및 계약을 지정하고 선택적으로 바인딩 구성과 끝점 동작도 지정합니다. <system.serviceModel> 섹션에는 서비스 또는 끝점 동작을 지정할 수 있는 <behaviors> 요소도 포함되어 있습니다. 다음 예제에서는 구성 파일의 <system.serviceModel> 섹션을 보여 줍니다.

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에서는 <service> 요소를 사용하지 않아도 되기 때문에 WCF 서비스를 보다 쉽게 구성할 수 있습니다. 사용자가 <service> 섹션(있는 경우)에 끝점을 추가하지도 않고 서비스에 의해 프로그래밍 방식으로 끝점이 정의되지도 않으면 각 서비스 기본 주소와 서비스에 의해 구현되는 각 계약마다 하나씩 끝점 집합이 서비스에 자동으로 추가됩니다. 이러한 각 끝점에서 끝점 주소는 기본 주소에 해당하고, 바인딩은 기본 주소 스키마에 의해 결정되며, 계약은 서비스에 의해 구현되는 계약입니다. 끝점 또는 서비스 동작을 지정하지 않아도 되거나 바인딩 설정을 변경하지 않아도 되는 경우에는 구성 파일을 지정하지 않아도 됩니다. 서비스에서 두 개의 계약을 구현하고 호스트에서 HTTP 전송과 TCP 전송을 둘 다 사용하는 경우 서비스 호스트에서 각 전송을 사용하여 각 계약마다 하나씩 네 개의 기본 끝점을 만듭니다. 기본 끝점을 만들려면 서비스 호스트에서 사용할 바인딩을 알고 있어야 합니다. 이러한 설정은 <system.serviceModel> 섹션 내의 <protocolMappings> 섹션에 지정됩니다. <protocolMappings> 섹션에는 바인딩 형식에 매핑된 전송 프로토콜 스키마의 목록이 들어 있습니다. 서비스 호스트는 이 목록에 전달된 기본 주소를 사용하여 사용할 바인딩을 결정합니다. 다음 예제에서는 <protocolMappings> 요소를 사용합니다.

Ee358768.note(ko-kr,VS.100).gif참고:
IIS(인터넷 정보 서비스)나 WAS(Windows Process Activation Service)에서 호스팅된 서비스는 가상 디렉터리를 기본 주소로 사용합니다.

<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을 사용하고 “net.tcp” 스키마로 시작하는 기본 주소를 가진 있는 끝점은 NetTcpBinding을 사용합니다. 로컬 App.config 또는 Web.config 파일의 설정은 재정의할 수 있습니다.

<protocolMappings> 섹션 내의 각 요소는 스키마와 바인딩을 지정해야 하며, 필요에 따라 구성 파일의 <bindings> 섹션 내에서 바인딩 구성을 지정하는 bindingConfiguration 특성을 지정할 수도 있습니다. bindingConfiguration을 지정하지 않으면 해당 바인딩 형식의 익명 바인딩 구성이 사용됩니다.

서비스 동작은 <serviceBehaviors> 섹션 내의 익명 <behavior> 섹션을 사용하여 기본 끝점에 대해 구성됩니다. <serviceBehaviors> 내의 명명되지 않은 <behavior> 요소는 서비스 동작을 구성하는 데 사용됩니다. 예를 들어 다음 구성 파일은 호스트 내의 모든 서비스에 대한 서비스 메타데이터 게시를 사용하도록 설정합니다.

<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>

끝점 동작은 <serviceBehaviors> 섹션 내의 익명 <behavior> 섹션을 사용하여 구성됩니다.

다음 예제에서는 이 항목의 시작 부분에 나온 구성 파일이 단순화된 구성 모델을 사용하는 것을 보여 줍니다.

<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>

참고 항목

개념

구성 파일을 사용하여 서비스 구성
Windows Communication Foundation 서비스에 대한 바인딩 구성
시스템 제공 바인딩 구성

기타 리소스

서비스 구성
Configuring Windows Communication Foundation Applications