다음을 통해 공유


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 추가하는 수동 작업 동작(메서드는 아무 작업도 수행하지 않음)입니다. WebGetAttribute 작업 설명(특히WebHttpBehavior)에서 이 메타데이터를 찾는 동작이 서비스의 동작 컬렉션에 추가되지 않는 한 적용은 효과가 없습니다. 이 특성은 WebGetAttribute 다음 표에 표시된 선택적 매개 변수를 사용합니다.

매개 변수 설명
BodyStyle 특성이 적용되는 서비스 작업에서 보내고 받은 요청 및 응답을 래핑할지 여부를 제어합니다.
RequestFormat 요청 메시지의 형식을 지정하는 방법을 제어합니다.
ResponseFormat 응답 메시지의 서식을 지정하는 방법을 제어합니다.
UriTemplate 특성이 적용되는 서비스 작업에 매핑되는 HTTP 요청을 제어하는 URI 템플릿을 지정합니다.

WebHttpBinding (웹 서비스 HTTP 바인딩)

WebHttpBinding 클래스는 WebMessageEncodingBindingElement를 사용하여 XML, JSON 및 순수 이진 데이터에 대한 지원을 통합합니다. HttpsTransportBindingElement 개체, HttpTransportBindingElement 개체, 그리고 WebHttpSecurity 개체로 구성됩니다. 는 WebHttpBinding .와 함께 WebHttpBehavior사용하도록 설계되었습니다.

웹인보크어트리뷰트

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

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

매개 변수 설명
BodyStyle 특성이 적용되는 서비스 작업에서 보내고 받은 요청 및 응답을 래핑할지 여부를 제어합니다.
Method 서비스 작업이 매핑되는 HTTP 메서드를 지정합니다.
RequestFormat 요청 메시지의 형식을 지정하는 방법을 제어합니다.
ResponseFormat 응답 메시지의 서식을 지정하는 방법을 제어합니다.
UriTemplate 특성이 적용되는 서비스 작업에 매핑되는 GET 요청을 제어하는 URI 템플릿을 지정합니다.

UriTemplate

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

유리템플릿테이블

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

WebServiceHost

WebServiceHostServiceHost SOAP 웹 스타일이 아닌 서비스를 더 쉽게 호스트할 수 있도록 확장합니다. 서비스 설명에서 엔드포인트를 찾지 못하면 WebServiceHost 자동으로 서비스의 기본 주소에 기본 엔드포인트를 만듭니다. 기본 HTTP 엔드포인트를 만들 때 메타데이터 엔드포인트가 기본 HTTP 엔드포인트 WebServiceHost 를 방해하지 않도록 HTTP 도움말 페이지와 WSDL(Web Services Description Language) GET 기능도 사용하지 않도록 설정합니다. WebServiceHost는 또한 WebHttpBinding을 사용하는 모든 엔드포인트에 필수 WebHttpBehavior가 연결되어 있는지 확인합니다. 마지막으로 보안 WebServiceHost 가상 디렉터리에서 사용할 때 연결된 IIS(인터넷 정보 서비스) 보안 설정과 작동하도록 엔드포인트의 바인딩을 자동으로 구성합니다.

WebServiceHostFactory

WebServiceHostFactory 클래스는 서비스가 IIS(인터넷 정보 서비스) 또는 WAS(Windows Process Activation Service)에서 호스트되는 경우 동적으로 만드는 WebServiceHost 데 사용됩니다. 자체 호스팅 서비스와 달리, IIS 또는 WAS에서 호스트되는 서비스는 서비스를 위해 WebServiceHost를 생성하기 위해 이 클래스를 사용하여 WebServiceHost를 인스턴스화합니다. 서비스에 CreateServiceHost(Type, Uri[]) 대한 들어오는 요청을 받을 때 메서드가 호출됩니다.

WebHttpBehavior

이 클래스는 WebHttpBehavior 서비스 모델 계층에서 웹 스타일 서비스 지원에 필요한 포맷터, 작업 선택기 등을 제공합니다. 이 동작은 엔드포인트 동작(함께 사용됨)으로 WebHttpBinding구현되며 각 엔드포인트에 대해 포맷터 및 작업 선택기를 지정할 수 있으므로 동일한 서비스 구현에서 SOAP 및 POX 엔드포인트를 모두 노출할 수 있습니다.

WebHttpBehavior의 확장

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

확장되는 WebScriptEnablingBehavior의 예는 WebHttpBehavior입니다. WebScriptEnablingBehavior 를 사용하면 WCF(Windows Communication Foundation) 엔드포인트가 브라우저 기반 ASP.NET AJAX 클라이언트에서 HTTP 요청을 수신할 수 있습니다. HTTP POST를 사용하는 AJAX 서비스는 이 확장성 지점을 사용하는 예제입니다.

경고

사용할 때 WebScriptEnablingBehavior 내에서는 UriTemplate 또는 WebGetAttribute 속성 내에서 WebInvokeAttribute이 지원되지 않습니다.

WebHttpDispatchOperationSelector (웹 HTTP 디스패치 작업 선택기)

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

호환성

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

안전

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

참고하십시오