다음을 통해 공유


구성 파일을 사용하여 서비스 구성

구성 파일을 사용하여 WCF(Windows Communication Foundation) 서비스를 구성하면 디자인 타임 대신 배포 시 끝점 및 서비스 동작 데이터를 제공할 수 있습니다. 이 항목에서는 사용할 수 있는 기본 기술에 대해 간략하게 설명합니다.

WCF 서비스는 .NET Framework 구성 기술을 사용하여 구성할 수 있습니다. 가장 일반적으로 XML 요소는 WCF 서비스를 호스팅하는 IIS(인터넷 정보 서비스) 사이트의 Web.config 파일에 추가됩니다. 이 요소를 사용하여 끝점 주소(서비스와의 통신에 사용되는 실제 주소)와 같은 세부 사항을 컴퓨터별로 변경할 수 있습니다. 또한 WCF에는 서비스의 가장 기본적인 기능들을 빠르게 선택할 수 있는 여러 시스템 제공 요소가 포함되어 있습니다. 실제로 구성 작성은 WCF 응용 프로그램을 프로그래밍하는 과정의 주요 부분입니다.

자세한 내용은 Windows Communication Foundation 서비스에 대한 바인딩 구성을 참조하십시오. 가장 일반적으로 사용되는 요소 목록은 시스템 제공 바인딩을 참조하십시오.

System.Configuration: Web.config 및 App.config

WCF에서는 .NET Framework의 System.Configuration 구성 시스템을 사용합니다.

Visual Studio에서 서비스를 구성할 때는 Web.config 파일 또는 App.config 파일을 사용하여 설정을 지정합니다. 구성 파일 이름은 서비스에 대해 선택한 호스팅 환경에 따라 결정됩니다. IIS를 사용하여 서비스를 호스팅하는 경우에는 Web.config 파일을 사용합니다. 다른 호스팅 환경을 사용하는 경우에는 App.config 파일을 사용합니다.

Visual Studio에서 App.config라는 파일은 최종 구성 파일을 만드는 데 사용됩니다. 구성에 사용되는 최종 이름은 어셈블리 이름에 따라 달라집니다. 예를 들어, "Cohowinery.exe"라는 어셈블리에는 "Cohowinery.exe.config"의 최종 구성 파일 이름이 포함됩니다. 그러나 App.config 파일만 수정하면 됩니다. 이 파일의 변경 내용은 컴파일 타임에 최종 응용 프로그램 구성 파일에 자동으로 적용됩니다.

App.config 파일 사용 시 응용 프로그램이 시작되고 구성이 적용되면 구성 시스템에서는 App.config 파일을 Machine.config 파일의 내용과 병합합니다. 이 메커니즘을 통해 시스템 수준의 설정이 Machine.config 파일에 정의됩니다. App.config 파일을 사용하여 Machine.config 파일의 설정을 재정의할 수 있습니다. 또한 Machine.config 파일의 설정이 사용되도록 해당 설정을 잠글 수 있습니다. Web.config의 경우 구성 시스템에서는 응용 프로그램 디렉터리에 이르는 모든 디렉터리의 Web.config 파일을 적용된 구성에 병합합니다. 구성과 설정의 우선 순위에 대한 자세한 내용은 System.Configuration 네임스페이스에 있는 항목을 참조하십시오.

구성 파일의 주요 섹션

구성 파일의 주요 섹션에는 다음 요소가 포함됩니다.

<system.ServiceModel>

   <services>
      <service>
         <endpoint/>
      </service>
   </services>

   <bindings>
   <!-- Specify one or more of the system-provided binding elements,
    for example, <basicHttpBinding> --> 
   <!-- Alternatively, <customBinding> elements. -->
      <binding>
      <!-- For example, a <BasicHttpBinding> element. -->
      </binding>
   </bindings>

   <behaviors>
   <!-- One or more of the system-provided or custom behavior elements. -->
      <behavior>
      <!-- For example, a <throttling> element. -->
      </behavior>
   </behaviors>

</system.ServiceModel>

참고

바인딩 및 동작 섹션은 선택 사항이며 필요 시에만 포함됩니다.

<services> 요소

services 요소에는 응용 프로그램에서 호스팅하는 모든 서비스에 대한 사양이 포함됩니다.

<services> element reference

<service> 요소

각 서비스에는 다음 특성이 있습니다.

  • name. 서비스 계약의 구현을 제공하는 형식을 지정합니다. 이 특성은 정규화된 이름(네임스페이스 및 형식 이름)입니다.
  • behaviorConfiguration. behaviors 요소에 있는 behavior 요소 중 하나의 이름을 지정합니다. 지정한 동작은 서비스에서 가장을 허용할지 여부와 같은 작업을 제어합니다.
  • <service> element reference

<endpoint> 요소

각 끝점에는 다음 특성으로 표시되는 주소, 바인딩 및 계약이 필요합니다.

  • address. 절대 주소이거나 서비스의 기본 주소에 대한 상대 주소일 수 있는 서비스의 URI(Uniform Resource Identifier)를 지정합니다. 이 특성이 빈 문자열로 설정되면 서비스에 ServiceHost를 만들 때 지정되는 기본 주소에서 끝점을 사용할 수 있음을 나타냅니다.
  • binding. 일반적으로 WsHttpBinding과 같은 시스템 제공 바인딩을 지정하지만 사용자 정의 바인딩을 지정할 수도 있습니다. 지정된 바인딩에 따라 전송 형식, 사용된 보안 및 인코딩 그리고 신뢰할 수 있는 세션, 트랜잭션 또는 스트리밍을 지원하거나 사용할 수 있는지 여부를 확인합니다.
  • bindingConfiguration. 바인딩의 기본값을 수정해야 하는 경우 bindings 요소에서 해당 binding 요소를 구성하여 수행할 수 있습니다. 이 특성에는 기본값을 변경하는 데 사용되는 binding 요소의 name 특성과 동일한 값을 지정해야 합니다.
  • contract. 계약을 정의하는 인터페이스를 지정합니다. 이 특성은 service 요소의 name 특성으로 지정된 CLR(공통 언어 런타임)에 구현된 인터페이스입니다.
  • <endpoint> element reference

<bindings> 요소

bindings 요소에는 서비스에 정의된 끝점에서 사용할 수 있는 모든 바인딩에 대한 사양이 포함됩니다.

<bindings> element reference

<binding> 요소

bindings 요소에 포함된 binding 요소는 시스템 제공 바인딩(시스템 제공 바인딩 참조) 또는 사용자 지정 바인딩(사용자 지정 바인딩 참조) 중 하나일 수 있습니다. binding 요소에는 endpoint 요소의 bindingConfiguration 특성에 지정된 끝점과 바인딩을 연관시키는 name 특성이 있습니다.

서비스 및 클라이언트 구성에 대한 자세한 내용은 Windows Communication Foundation 응용 프로그램 구성을 참조하십시오.

<binding> element reference

<behaviors> 요소

서비스의 동작을 정의하는 behavior 요소에 대한 컨테이너 요소입니다.

<behaviors> element reference

<behavior> 요소

behavior 요소는 name 특성으로 식별되며 <throttling>과 같은 시스템 제공 동작이나 사용자 지정 동작을 제공합니다.

<behavior> element reference

바인딩 및 동작 구성 사용 방법

WCF에서는 구성에 있는 참조 시스템을 사용하여 끝점 간의 구성을 쉽게 공유할 수 있습니다. 구성 값을 끝점에 직접 할당하는 대신 바인딩 관련 구성 값은 <binding> 섹션의 bindingConfiguration 요소로 그룹화됩니다. 바인딩 구성은 바인딩에 대한 설정의 명명된 그룹입니다. 끝점은 이름별로 bindingConfiguration을 참조할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.serviceModel>
  <bindings>
    <basicHttpBinding>
     <binding name="myBindingConfiguration1" closeTimeout="00:01:00" />
     <binding name="myBindingConfiguration2" closeTimeout="00:02:00" />
    </basicHttpBinding>
     </bindings>
     <services>
      <service name="myServiceType">
       <endpoint 
          address="myAddress" binding="basicHttpBinding" 
          bindingConfiguration="myBindingConfiguration1" />
       </service>
      </services>
    </system.serviceModel>
</configuration>

bindingConfigurationname<binding> 요소에 설정됩니다. name은 바인딩 형식 범위 내에 있는 고유 문자열이어야 합니다. 이 경우 <basicHttpBinding>입니다. 끝점은 bindingConfiguration 특성을 이 문자열에 설정하여 구성에 연결됩니다.

behaviorConfiguration은 다음 샘플과 동일한 방식으로 구현됩니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="myBehavior">
           <callbackDebug includeExceptionDetailInFaults="true" />
         </behavior>
       </endpointBehaviors>
    </behaviors>
    <services>
     <service name="NewServiceType">
       <endpoint 
          address="myAddress" behaviorConfiguration="myBehavior"
          binding="basicHttpBinding" />
      </service>
    </services>
   </system.serviceModel>
</configuration>

이 시스템에서는 설정을 다시 정의하지 않고 끝점이 일반 구성을 공유할 수 있습니다. 시스템 수준의 범위가 필요하면 Machine.config에서 동작 구성 또는 바인딩을 만듭니다. 모든 App.config 파일에서 구성 설정을 사용할 수 있습니다. Configuration Editor Tool (SvcConfigEditor.exe)를 사용하면 구성을 쉽게 만들 수 있습니다.

참고 항목

기타 리소스

Windows Communication Foundation 응용 프로그램 구성
<service>
<binding>