WCF 웹 프로그래밍 개체 모델

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

프로그래밍 모델:

채널 및 디스패처 인프라:

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

WebGetAttribute

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

매개 변수 설명

BodyStyle

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

RequestFormat

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

ResponseFormat

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

UriTemplate

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

WebHttpBinding

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

WebInvokeAttribute

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

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

매개 변수 설명

BodyStyle

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

Method

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

RequestFormat

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

ResponseFormat

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

UriTemplate

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

UriTemplate

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

UriTemplateTable

UriTemplateTable 클래스는 개발자가 선택한 개체에 바인딩된 UriTemplate 개체의 관련 집합을 나타냅니다. 이 클래스를 사용하면 집합의 템플릿에 대해 후보 URI(Uniform Resource Identifier)를 일치시키고 일치하는 템플릿과 연결된 데이터를 검색할 수 있습니다. UriTemplateTable은 WCF 웹 프로그래밍 모델에서 특정 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 요청을 받을 수 있도록 합니다. HTML Form Handler Sample은 이 확장 지점을 사용하는 예를 보여 줍니다.

WebHttpDispatchOperationSelector

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

호환성

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

참고 항목

참조

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector

개념

WCF 웹 프로그래밍 모델 개요