클라이언트 구성

WCF(Windows Communication Foundation) 클라이언트 구성을 사용하여 클라이언트에서 서비스 엔드포인트에 연결하는 데 사용하는 클라이언트 엔드포인트의 “ABC” 속성인 계약, 바인딩 동작 및 주소를 지정할 수 있습니다. <client> 요소에는 해당 특성이 엔드포인트 ABC를 구성하는 데 사용되는 <endpoint> 요소가 있습니다. 이 특성은 엔드포인트 구성 섹션에서 설명합니다.

또한 <endpoint> 요소에는 메타데이터 가져오기 및 내보내기 설정을 지정하는 데 사용되는 <metadata> 요소, 사용자 지정 주소 헤더 컬렉션을 포함하는 <headers> 요소, 메시지를 교환하는 다른 엔드포인트에서 엔드포인트를 인증할 수 있게 해주는 <identity> 요소도 포함되어 있습니다. <headers><identity> 요소는 EndpointAddress의 일부이며 주소 항목에서 설명합니다. 메타데이터 확장 사용을 설명하는 항목에 대한 링크가 메타데이터 구성 섹션에 제공됩니다.

엔드포인트 구성

클라이언트 구성은 클라이언트가 하나 이상의 엔드포인트를 지정할 수 있도록 디자인되었습니다. 각 엔드포인트는 고유한 이름, 주소 및 계약을 가지며, 클라이언트 구성에서 <bindings><behaviors> 요소를 참조하여 해당 엔드포인트를 구성하는 데 사용할 수 있습니다. 클라이언트 구성 파일의 이름은 WCF 런타임이 예상하는 이름인 “App.config”로 지정되어야 합니다. 다음 예제에서는 클라이언트 구성 파일을 보여 줍니다.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
  <system.serviceModel>  
        <client>  
          <endpoint  
            name="endpoint1"  
            address="http://localhost/ServiceModelSamples/service.svc"  
            binding="wsHttpBinding"  
            bindingConfiguration="WSHttpBinding_IHello"  
            behaviorConfiguration="IHello_Behavior"  
            contract="IHello" >  
  
            <metadata>  
              <wsdlImporters>  
                <extension  
                  type="Microsoft.ServiceModel.Samples.WsdlDocumentationImporter, WsdlDocumentation"/>  
              </wsdlImporters>  
            </metadata>  
  
            <identity>  
              <servicePrincipalName value="host/localhost" />  
            </identity>  
          </endpoint>  
            <!-- Add another endpoint by adding another <endpoint> element. -->
          <endpoint  
            name="endpoint2">  
           //Configure another endpoint here.  
          </endpoint>  
        </client>  
  
<!-- The bindings section references by the bindingConfiguration endpoint attribute.   -->
    <bindings>  
      <wsHttpBinding>  
        <binding name="WSHttpBinding_IHello"
                 bypassProxyOnLocal="false"
                 hostNameComparisonMode="StrongWildcard">  
          <readerQuotas maxDepth="32"/>  
          <reliableSession ordered="true"
                           enabled="false" />  
          <security mode="Message">  
           <!-- Security settings go here.   -->
          </security>  
        </binding>  
        <binding name="Another Binding"  
          <!-- Configure this binding here. -->  
        </binding>  
          </wsHttpBinding>  
     </bindings>  
  
<!-- The behavior section references by the behaviorConfiguration endpoint attribute.   -->
        <behaviors>  
            <endpointBehaviors>  
                <behavior name=" IHello_Behavior ">  
                    <clientVia />  
                </behavior>  
            </endpointBehaviors>  
        </behaviors>  
  
    </system.serviceModel>  
</configuration>  

선택적 name 특성은 지정된 계약의 엔드포인트를 고유하게 식별합니다. 이 특성은 ChannelFactory<TChannel> 또는 ClientBase<TChannel>가 서비스에 대한 채널을 만들 때 로드해야 하는 대상 엔드포인트를 클라이언트 구성에서 지정하는 데 사용됩니다. 와일드카드 엔드포인트 구성 이름 "*"를 사용 가능하며 이 와일드카드는 정확하게 하나의 사용 가능한 엔드포인트 구성이 있으면 파일에서 엔드포인트 구성을 로드해야 하고 그렇지 않으면 예외를 throw해야 함을 ApplyConfiguration 메서드에 알려줍니다. 이 특성을 생략하면 해당하는 엔드포인트가 지정된 계약 형식과 연결된 기본 엔드포인트로 사용됩니다. name 특성의 기본값은 다른 이름과 마찬가지로 일치되는 빈 문자열입니다.

모든 엔드포인트에는 해당 엔드포인트를 찾아서 식별할 수 있는 연결된 주소가 있어야 합니다. ph x="1" /> 특성을 사용하면 엔드포인트의 위치를 제공하는 URL을 지정할 수 있습니다. URI(Uniform Resource Identifier)를 만든 다음 ServiceHost 메서드 중 하나를 사용하여 AddServiceEndpoint에 추가하여 서비스 엔드포인트의 주소를 코드로 지정할 수도 있습니다. 자세한 내용은 주소를 참조하세요. 소개에 표시된 대로 <headers><identity> 요소는 EndpointAddress의 일부이며 주소 항목에서도 설명합니다.

ph x="1" /> 특성은 서비스에 연결할 때 사용할 엔드포인트 바인딩 형식을 나타냅니다. 형식에 등록된 구성 섹션이 있어야 형식을 참조할 수 있습니다. 이전 예제의 <wsHttpBinding> 섹션에 해당되며, 이 섹션에서는 엔드포인트에서 WSHttpBinding을 사용한다는 것을 설명합니다. 그러나 엔드포인트에서 사용할 수 있는 지정된 형식의 바인딩이 여러 개 있을 수도 있습니다. 각 바인딩에는 (binding) 형식 요소 내에 고유한 <binding> 요소가 있습니다. bindingconfiguration 특성은 동일한 형식의 바인딩을 구분하는 데 사용됩니다. 해당 값은 <binding> 요소의 name 특성과 일치합니다. 구성을 사용하여 클라이언트 바인딩을 구성하는 방법에 관한 자세한 내용은 방법: 구성에서 클라이언트 바인딩 지정을 참조하세요.

behaviorConfiguration 특성은 엔드포인트에서 사용해야 하는 <endpointBehaviors><behavior>를 지정하는 데 사용됩니다. 해당 값은 <behavior> 요소의 name 특성과 일치합니다. 구성을 사용하여 클라이언트 동작을 지정하는 예제는 클라이언트 동작 구성을 참조하세요.

ph x="1" /> 특성은 엔드포인트가 공개하는 계약을 지정합니다. 이 값은 ConfigurationNameServiceContractAttribute에 매핑됩니다. 기본값은 서비스를 구현하는 클래스의 전체 형식 이름입니다.

메타데이터 구성

<metadata> 요소는 메타데이터 가져오기 확장 등록에 사용되는 설정을 지정하는 데 사용됩니다. 메타데이터 시스템을 확장하는 방법에 대한 자세한 내용은 메타데이터 시스템 확장을 참조하세요.

참고 항목