WCF 웹 HTTP 프로그래밍 개체 모델

WCF WEB HTTP 프로그래밍 모델을 사용하는 개발자는 SOAP 없이 기본 HTTP 요청을 통해 WCF(Windows Communication Foundation) 웹 서비스를 노출할 수 있습니다. WCF WEB HTTP 프로그래밍 모델은 기존 WCF 확장성 모델 위에 빌드되며 다음과 같은 클래스를 정의합니다.

프로그래밍 모델:

채널 및 디스패처 인프라:

유틸리티 클래스 및 확장 지점:

AspNetCacheProfileAttribute

서비스 작업에 적용된 경우 AspNetCacheProfileAttribute는 작업의 응답을 ASP .NET 출력 캐시에 캐시하는 데 사용해야 하는 구성 파일의 ASP.NET 출력 캐시 프로필을 나타냅니다. 이 속성은 하나의 매개 변수, 즉 구성 파일에서 캐시 설정을 지정하는 캐시 프로필 이름만 사용합니다.

WebGetAttribute

WebGetAttribute 특성은 서비스 작업을 HTTP GET 요청에 응답하는 작업으로 표시하는 데 사용됩니다. 이는 작업 설명에 메타데이터를 추가하는 수동 작업 동작입니다(IOperationBehavior 메서드는 아무 작업도 하지 않음). 작업 설명에서 이 메타데이터를 찾는 동작(특히 WebHttpBehavior)이 서비스의 동작 컬렉션에 추가되지 않으면 WebGetAttribute를 적용해도 아무 효과가 없습니다. WebGetAttribute 특성은 다음 표에 있는 선택적 매개 변수를 사용합니다.

매개 변수 설명

BodyStyle

특성이 적용된 서비스 작업으로 보내거나 받은 요청 및 응답을 래핑할지 여부를 제어합니다.

RequestFormat

요청 메시지의 형식을 지정하는 방법을 제어합니다.

ResponseFormat

응답 메시지의 형식을 지정하는 방법을 제어합니다.

UriTemplate

특성이 적용된 서비스 작업에 매핑되는 HTTP 요청을 제어하는 URI 템플릿을 지정합니다.

WebHttpBinding

WebHttpBinding 클래스는 WebMessageEncodingBindingElement를 사용하여 XML, JSON 및 원시 이진 데이터에 대한 지원을 통합합니다. 이는 HttpsTransportBindingElement, HttpTransportBindingElementWebHttpSecurity 개체로 구성됩니다. WebHttpBindingWebHttpBehavior와 함께 사용하도록 디자인되었습니다.

WebInvokeAttribute

WebInvokeAttribute 특성은 WebGetAttribute와 비슷하지만 서비스 작업을 GET가 아닌 HTTP 요청에 응답하는 작업으로 표시하는 데 사용됩니다. 이는 작업 설명에 메타데이터를 추가하는 수동 작업 동작입니다(IOperationBehavior 메서드는 아무 작업도 하지 않음). 작업 설명에서 이 메타데이터를 찾는 동작(특히 WebHttpBehavior)이 서비스의 동작 컬렉션에 추가되지 않으면 WebInvokeAttribute를 적용해도 아무 효과가 없습니다.

WebInvokeAttribute 특성은 다음 표에 있는 선택적 매개 변수를 사용합니다.

매개 변수 설명

BodyStyle

특성이 적용된 서비스 작업으로 보내거나 받은 요청 및 응답을 래핑할지 여부를 제어합니다.

Method

서비스 작업이 매핑되는 HTTP 메서드를 지정합니다.

RequestFormat

요청 메시지의 형식을 지정하는 방법을 제어합니다.

ResponseFormat

응답 메시지의 형식을 지정하는 방법을 제어합니다.

UriTemplate

특성이 적용된 서비스 작업에 매핑되는 GET 요청을 제어하는 URI 템플릿을 지정합니다.

UriTemplate

UriTemplate 클래스를 사용하면 구조적으로 비슷한 URI 집합을 정의할 수 있습니다. 템플릿은 경로와 쿼리의 두 부분으로 구성됩니다. 경로는 슬래시(/)로 구분된 세그먼트로 구성됩니다. 각 세그먼트는 리터럴 값, 변수 값(중괄호[{ }]로 표시, 정확히 한 세그먼트의 내용과 일치하도록 제약) 또는 와일드카드(별표[*]로 표시, "나머지 경로"와 일치)를 가질 수 있으며, 이러한 값은 경로의 끝에 표시되어야 합니다. 쿼리 식은 완전히 생략할 수 있습니다. 쿼리 식(있는 경우)은 순서가 지정되지 않은 이름/값 쌍을 지정합니다. 쿼리 식의 요소는 리터럴 쌍(?x=2) 또는 변수 쌍(?x={value})일 수 있습니다. 쌍으로 되어 있지 않은 값은 사용할 수 없습니다. UriTemplate은 WCF WEB HTTP 프로그래밍 모델에서 특정 URI 또는 URI 그룹을 서비스 작업에 매핑하는 데 내부적으로 사용됩니다.

UriTemplateTable

UriTemplateTable 클래스는 개발자가 선택한 개체에 바인딩된 UriTemplate 개체의 관련 집합을 나타냅니다. 이 클래스를 사용하면 집합의 템플릿에 대해 후보 URI(Uniform Resource Identifier)를 일치시키고 일치하는 템플릿과 연결된 데이터를 검색할 수 있습니다. UriTemplateTable은 WCF WEB HTTP 프로그래밍 모델에서 특정 URI 또는 URI 그룹을 서비스 작업에 매핑하는 데 내부적으로 사용됩니다.

WebServiceHost

WebServiceHost는 비SOAP 웹 스타일 서비스를 보다 쉽게 호스팅할 수 있도록 ServiceHost를 확장합니다. WebServiceHost는 서비스 설명에서 끝점을 찾지 못하는 경우 자동으로 서비스의 기본 주소에 기본 끝점을 만듭니다. 기본 HTTP 끝점을 만들 때 WebServiceHost는 메타데이터 끝점이 기본 HTTP 끝점에 방해가 되지 않도록 HTTP 도움말 페이지 및 WSDL(웹 서비스 기술 언어) GET 기능을 사용하지 않도록 설정합니다. WebServiceHost는 또한 WebHttpBinding을 사용하는 모든 끝점에 필수 WebHttpBehavior가 연결되어 있는지 확인합니다. 마지막으로WebServiceHost는 보안 가상 디렉터리에서 사용될 때 연결된 IIS(인터넷 정보 서비스) 보안 설정과 함께 작동하도록 끝점의 바인딩을 자동으로 구성합니다.

WebServiceHostFactory

WebServiceHostFactory 클래스는 서비스가 IIS(인터넷 정보 서비스) 또는 WAS(Windows Process Activation Service)에서 호스팅될 때 동적으로 WebServiceHost를 만드는 데 사용됩니다. 호스팅 응용 프로그램이 WebServiceHost를 인스턴스화하는 자체 호스팅 서비스와 달리 IIS 또는 WAS에서 호스팅되는 서비스는 이 클래스를 사용하여 서비스에 대한 WebServiceHost를 만듭니다. CreateServiceHost 메서드는 서비스에 대한 들어오는 요청을 수신할 때 호출됩니다.

WebHttpBehavior

WebHttpBehavior 클래스는 서비스 모델 계층에서 웹 스타일 서비스 지원에 필요한 필수 포맷터, 작업 선택기 등을 제공합니다. 이 클래스는 WebHttpBinding과 함께 사용되는 끝점 동작으로 구현되며 각 끝점에 대해 포맷터와 작업 선택기를 지정하도록 허용하여 동일한 서비스 구현에서 SOAP 끝점과 POX 끝점을 모두 노출할 수 있습니다.

WebHttpBehavior 확장

WebHttpBehaviorGetOperationSelector, GetReplyClientFormatter, GetRequestClientFormatter, GetReplyDispatchFormatter, GetRequestDispatchFormatter 등과 같은 여러 가지 가상 메서드를 사용하여 확장할 수 있습니다. 개발자는 WebHttpBehavior에서 클래스를 파생하고 이러한 메서드를 재정의하여 기본 동작을 사용자 지정할 수 있습니다.

WebScriptEnablingBehaviorWebHttpBehavior를 확장한 한 예입니다. WebScriptEnablingBehavior는 WCF(Windows Communication Foundation) 끝점에서 브라우저 기반 ASP.NET AJAX 클라이언트의 HTTP 요청을 수신할 수 있도록 합니다. AJAX Service Using HTTP POST은 이 확장 지점을 사용하는 예를 보여 줍니다.

Bb412204.Warning(ko-kr,VS.100).gif 주의:
WebScriptEnablingBehavior를 사용할 때 UriTemplateWebGetAttribute 또는 WebInvokeAttribute 특성 내에서 지원되지 않습니다.

WebHttpDispatchOperationSelector

WebHttpDispatchOperationSelector 클래스는 UriTemplateUriTemplateTable 클래스를 사용하여 호출을 서비스 작업에 디스패치합니다.

호환성

WCF WEB HTTP 프로그래밍 모델은 SOAP 기반 메시지를 사용하지 않으므로 WS-* 프로토콜을 지원하지 않습니다. 그러나 SOAP를 사용하는 끝점과 SOAP를 사용하지 않는 끝점 등 두 개의 다른 끝점에 대해 동일한 계약을 노출할 수 있습니다. 이에 대한 예제를 보려면 방법: SOAP 및 웹 클라이언트에 계약 공개를 참조하십시오.

보안

WCF WEB HTTP 프로그래밍 모델은 WS-* 프로토콜을 지원하지 않으므로 WCF WEB HTTP 프로그래밍 모델에 빌드된 웹 서비스를 보호하는 방법은 SSL을 사용하여 서비스를 노출하는 것뿐입니다. IIS 7.0을 사용하여 SSL을 설정하는 방법에 대한 자세한 내용은 IIS에서 SSL을 구현하는 방법을 참조하십시오.

참고 항목

참조

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector

개념

WCF 웹 HTTP 프로그래밍 모델 개요