다음을 통해 공유


엔드포인트 주소

모든 엔드포인트에는 엔드포인트를 찾아 식별하는 데 사용되는 연결된 주소가 있습니다. 이 주소는 주로 엔드포인트의 위치를 지정하는 URI(Uniform Resource Identifier)로 구성됩니다. 엔드포인트 주소는 WCF(Windows Communication Foundation) 프로그래밍 모델에 EndpointAddress 표시됩니다. 클래스에는 메시지를 교환하는 다른 엔드포인트에서 엔드포인트를 인증할 수 있는 선택적 Identity 속성과 서비스에 도달하는 데 필요한 다른 SOAP 헤더를 정의하는 선택적 Headers 속성 집합이 포함되어 있습니다. 선택적 헤더는 서비스 엔드포인트를 식별하거나 상호 작용하는 추가적이고 자세한 주소 지정 정보를 제공합니다. 엔드포인트의 주소는 유선에서 EPR(WS-Addressing 엔드포인트 참조)으로 표시됩니다.

주소의 URI 구조

대부분의 전송에 대한 주소 URI에는 네 부분으로 구성됩니다. 예를 들어 URI http://www.fabrikam.com:322/mathservice.svc/secureEndpoint 의 네 부분은 다음과 같이 항목별로 지정할 수 있습니다.

  • 계획: http:

  • 컴퓨터: www.fabrikam.com

  • (선택 사항) 포트: 322

  • 경로: /mathservice.svc/secureEndpoint

서비스의 주소 정의

서비스의 엔드포인트 주소는 명령적으로 코드를 사용하거나 구성을 통해 선언적으로 지정할 수 있습니다. 배포된 서비스에 대한 바인딩 및 주소는 일반적으로 서비스를 개발하는 동안 사용되는 것과 다르기 때문에 코드에서 엔드포인트를 정의하는 것은 일반적으로 실용적이지 않습니다. 일반적으로 코드보다는 구성을 사용하여 서비스 엔드포인트를 정의하는 것이 더 실용적입니다. 바인딩 및 주소 지정 정보를 코드에서 제외하면 애플리케이션을 다시 컴파일하거나 다시 배포하지 않고도 변경할 수 있습니다.

구성에서 주소 정의

구성 파일에서 엔드포인트를 정의하려면 엔드포인트< 요소를 사용합니다>. 자세한 내용 및 예제는 엔드포인트 주소 지정을 참조하세요.

코드에서 주소 정의

클래스를 사용하여 코드 EndpointAddress 에서 엔드포인트 주소를 만들 수 있습니다. 자세한 내용 및 예제는 엔드포인트 주소 지정을 참조하세요.

WSDL의 엔드포인트

엔드포인트 주소는 WSDL에서 해당 엔드포인트 wsdl:port 요소 내의 WS-Addressing EPR 요소로 나타낼 수도 있습니다. EPR에는 엔드포인트의 주소와 모든 주소 속성이 포함됩니다. 자세한 내용 및 예제는 엔드포인트 주소 지정을 참조하세요.

.NET Framework 3.5의 다중 IIS 바인딩 지원

인터넷 서비스 공급자는 사이트 밀도를 높이고 총 소유 비용을 낮추기 위해 동일한 서버와 사이트에 많은 애플리케이션을 호스트하는 경우가 많습니다. 이러한 애플리케이션은 일반적으로 다른 기본 주소에 바인딩됩니다. IIS(인터넷 정보 서비스) 웹 사이트에는 여러 애플리케이션이 포함될 수 있습니다. 사이트의 애플리케이션은 하나 이상의 IIS 바인딩을 통해 액세스할 수 있습니다.

IIS 바인딩은 바인딩 프로토콜과 바인딩 정보의 두 가지 정보를 제공합니다. 바인딩 프로토콜은 통신이 발생하는 체계를 정의하고 바인딩 정보는 사이트에 액세스하는 데 사용되는 정보입니다.

다음 예제에서는 IIS 바인딩에 있을 수 있는 구성 요소를 보여 줍니다.

  • 바인딩 프로토콜: HTTP

  • 바인딩 정보: IP 주소, 포트, 호스트 헤더

IIS는 각 사이트에 대해 여러 바인딩을 지정할 수 있으며, 이로 인해 각 스키마에 대한 여러 기본 주소가 생성됩니다. .NET Framework 3.5 이전에는 WCF가 스키마에 대해 여러 주소를 지원하지 않았으며, 여러 주소가 지정된 경우 활성화 중에 예외를 생성했습니다 ArgumentException.

.NET Framework 3.5를 사용하면 인터넷 서비스 공급자가 동일한 사이트에서 동일한 스키마에 대해 서로 다른 기본 주소를 가진 여러 애플리케이션을 호스트할 수 있습니다.

예를 들어 사이트에는 다음 기본 주소가 포함될 수 있습니다.

  • http://payroll.myorg.com/Service.svc

  • http://shipping.myorg.com/Service.svc

.NET Framework 3.5를 사용하면 구성 파일의 AppDomain 수준에서 접두사 필터를 지정합니다. 접두사 목록을 포함하는 baseAddressPrefixFilters< 요소를 사용하여 이> 작업을 수행합니다. IIS에서 제공하는 들어오는 기본 주소는 선택적 접두사 목록에 따라 필터링됩니다. 기본적으로 접두사를 지정하지 않으면 모든 주소가 전달됩니다. 접두사를 지정하면 해당 스키마에 대해 일치하는 기본 주소만 전달됩니다.

다음은 접두사 필터를 사용하는 구성 코드의 예입니다.

<system.serviceModel>  
  <serviceHostingEnvironment>  
     <baseAddressPrefixFilters>  
        <add prefix="net.tcp://payroll.myorg.com:8000"/>  
        <add prefix="http://shipping.myorg.com:8000"/>  
    </baseAddressPrefixFilters>  
  </serviceHostingEnvironment>  
</system.serviceModel>  

앞의 예제에서, net.tcp://payroll.myorg.com:8000http://shipping.myorg.com:8000는 각각의 스키마에 대해 전달되는 유일한 기본 주소입니다.

baseAddressPrefixFilter은/는 와일드카드를 지원하지 않습니다.

IIS에서 제공하는 기본 주소에는 목록에 없는 baseAddressPrefixFilters 다른 스키마에 바인딩된 주소가 있을 수 있습니다. 이러한 주소는 필터링되지 않습니다.

.NET Framework 4 이상에서 다중 IIS 바인딩 지원

.NET 4부터는 IIS에서 여러 바인딩에 대한 지원을 활성화하도록 ServiceHostingEnvironmentMultipleSiteBindingsEnabled 설정을 true로 설정함으로써 단일 기본 주소를 선택할 필요가 없습니다. 이 지원은 HTTP 프로토콜 체계로 제한됩니다.

다음은 serviceHostingEnvironment에서< multipleSiteBindingsEnabled를 사용하는 구성 코드의 예입니다>.

<system.serviceModel>  
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" >  
  </serviceHostingEnvironment>  
</system.serviceModel>  

이 설정을 사용하여 여러 사이트 바인딩을 사용하는 경우 HTTP 및 비 HTTP 프로토콜 모두에 대해 baseAddressPrefixFilters 설정이 무시됩니다.

자세한 내용 및 예제는 여러 IIS 사이트 바인딩 지원MultipleSiteBindingsEnabled을 참조하세요.

WCF 서비스에서 주소 지정 기능 확장

WCF 서비스의 기본 주소 지정 모델은 다음과 같은 용도로 엔드포인트 주소 URI를 사용합니다.

  • 엔드포인트가 메시지를 수신 대기하는 위치인 서비스 수신 대기 주소를 지정하려면

  • SOAP 주소 필터를 지정하기 위해 엔드포인트에서 SOAP 헤더로 예상하는 주소입니다.

이러한 각 용도의 값을 별도로 지정할 수 있으므로 유용한 시나리오를 다루는 여러 가지 주소 지정 확장이 가능합니다.

  • SOAP 중개자: 클라이언트가 보낸 메시지는 최종 대상에 도달하기 전에 메시지를 처리하는 하나 이상의 추가 서비스를 트래버스합니다. SOAP 중개자가 메시지에 대한 캐싱, 라우팅, 부하 분산 또는 스키마 유효성 검사와 같은 다양한 작업을 수행할 수 있습니다. 이 시나리오는 최종 대상을 대상으로 하는 논리 주소(via)가 아니라 중간자를 대상으로 하는 별도의 실제 주소(wsa:To)로 메시지를 전송하여 수행됩니다.

  • 엔드포인트의 수신 대기 주소는 프라이빗 URI이며 해당 listenURI 속성과 다른 값으로 설정됩니다.

지정하는 via 전송 주소는 서비스가 있는 매개 변수에 지정된 to 다른 원격 주소로 메시지를 처음 보낼 위치입니다. 대부분의 인터넷 시나리오 via 에서 URI는 서비스의 최종 Uri 주소 속성과 to 동일합니다. 수동 라우팅을 수행해야 하는 경우에만 이 두 주소를 구분합니다.

헤더 주소 지정

엔드포인트는 기본 URI 외에도 하나 이상의 SOAP 헤더로 처리할 수 있습니다. 이 시나리오가 유용한 시나리오 집합 중 하나는 엔드포인트에서 해당 엔드포인트의 클라이언트가 중간자를 대상으로 하는 SOAP 헤더를 포함하도록 요구하는 SOAP 중간 시나리오 집합입니다.

코드 또는 구성을 사용하여 두 가지 방법으로 사용자 지정 주소 헤더를 정의할 수 있습니다.

배포 후 헤더를 변경할 수 있으므로 일반적으로 구성을 코드하는 것이 좋습니다.

사용자 지정 수신 대기 주소

수신 대기 주소를 엔드포인트의 URI와 다른 값으로 설정할 수 있습니다. 이는 노출할 SOAP 주소가 공용 SOAP 중개자의 주소인 중간 시나리오에서 유용하지만 엔드포인트가 실제로 수신 대기하는 주소는 개인 네트워크 주소입니다.

코드 또는 구성을 사용하여 사용자 지정 수신 대기 주소를 지정할 수 있습니다.

  • 코드에서 엔드포인트의 동작 컬렉션에 클래스를 ClientViaBehavior 추가하여 사용자 지정 수신 대기 주소를 지정합니다.

  • 구성에서 서비스 ListenUri 요소의 특성을 사용하여 < 사용자 지정 수신 대기 주소를 지정합니다.

사용자 지정 SOAP 주소 필터

Uri는 엔드포인트의 SOAP 주소 필터(Headers)를 정의하기 위해 모든 AddressFilter 속성과 함께 사용됩니다. 기본적으로 이 필터는 To 들어오는 메시지에 엔드포인트의 URI와 일치하는 메시지 헤더가 있고 필요한 모든 엔드포인트 헤더가 메시지에 있는지 확인합니다.

일부 시나리오에서 엔드포인트는 적절한 To 헤더가 있는 메시지뿐만 아니라 기본 전송에 도착하는 모든 메시지를 수신합니다. 이를 사용하도록 설정하려면 사용자가 클래스를 MatchAllMessageFilter 사용할 수 있습니다.

참고하십시오