Share via


Windows Communication Foundation의 새로운 기능

이 항목에서는 WCF(Windows Communication Foundation)에 새로 추가된 기능에 대해 설명합니다.

구성 기반 활성화

일반적으로 IIS(인터넷 정보 서비스)나 WAS(Windows Process Activation Service)에서 WCF(Windows Communication Foundation) 서비스를 호스팅할 때는 .svc 파일을 제공해야 합니다. .svc 파일에는 서비스 이름과 선택적 사용자 지정 서비스 호스트 팩터리가 포함되어 있습니다. 이 추가 파일을 사용하면 관리 효율성이 떨어지지만 구성 기반 활성화 기능을 사용하면 .svc 파일이 필요 없기 때문에 이로 인한 관리 효율성 저하도 발생하지 않습니다. 자세한 내용은 다음 항목을 참조하십시오. IIS 및 WAS에서 구성 기반 활성화구성 기반 활성화를 참조하십시오.

System.Web.Routing 통합

IIS에서 WCF(Windows Communication Foundation) 서비스를 호스팅할 때는 가상 디렉터리에 .svc 파일을 저장합니다. 이 .svc 파일은 사용할 서비스 호스트 팩터리와 함께 서비스를 구현하는 클래스를 지정합니다. 서비스를 요청할 때는 https://contoso.com/EmployeeServce.svc와 같은 URI를 사용하여 .svc 파일을 지정합니다. REST 서비스를 작성하는 프로그래머에게는 이러한 유형의 URI가 적합하지 않을 수 있습니다. REST 서비스의 URI는 특정 리소스를 지정하며 일반적으로 확장명을 포함하지 않습니다. System.Web.Routing 통합 기능을 사용하면 확장명이 없는 URI에 응답하는 WCF 서비스를 호스팅할 수 있습니다. 자세한 내용은 다음 항목을 참조하십시오. System.Web.Routing 통합SystemWebRouting Integration 샘플을 참조하십시오.

여러 IIS 사이트 바인딩 지원

IIS(인터넷 정보 서비스) 7.0에서 WCF(Windows Communication Foundation) 서비스를 호스팅하는 경우 동일한 사이트에 대해 동일한 프로토콜을 사용하는 여러 기본 주소를 제공할 수 있습니다. 이렇게 하면 동일한 서비스에서 여러 다른 URI에 응답할 수 있습니다. 이는 https://www.contoso.comhttps://contoso.com에서 수신 대기하는 서비스를 호스팅하거나 내부 사용자에 대한 기본 주소와 외부 사용자에 대한 별도의 기본 주소가 있는 서비스를 만들려는 경우에 유용합니다. 자세한 내용은 다음 항목을 참조하십시오. 여러 IIS 사이트 바인딩 지원을 참조하십시오.

라우팅 서비스

라우팅 서비스는 메시지 라우터 역할을 하는 제네릭 SOAP 매개자입니다. 라우터 서비스의 핵심 기능은 메시지 내용을 기반으로 메시지를 라우트할 수 있는, 즉 메시지 헤더나 메시지 본문 같은 메시지 자체에 포함된 값을 기반으로 메시지를 클라이언트 끝점에 전달할 수 있는 기능입니다. 자세한 내용은 다음 항목을 참조하십시오. 라우팅, 라우팅 서비스 .

WS-Discovery에 대한 지원

서비스 검색 기능을 사용하면 클라이언트 응용 프로그램에서 런타임에 WS-Discovery를 사용하여 상호 운용 가능한 방식으로 서비스 주소를 동적으로 검색할 수 있습니다. WS-Discovery 사양은 간단한 서비스 검색을 수행하는 데 필요한 MEP(메시지 교환 패턴)에 대해 멀티캐스트(애드혹) 및 유니캐스트(네트워크 리소스 이용)별로 간략하게 설명합니다. 자세한 내용은 다음 항목을 참조하십시오. WCF Discovery, 검색(샘플).

표준 끝점

표준 끝점은 하나 이상의 속성(주소, 바인딩, 계약)이 고정된 미리 정의된 끝점입니다. 예를 들어 모든 메타데이터 교환 끝점이 IMetadataExchange를 해당 계약으로 지정하기 때문에 개발자는 계약을 지정하지 않아도 됩니다. 즉, 표준 MEX 끝점에는 고정된 IMetadataExchange 계약이 있습니다. 자세한 내용은 다음 항목을 참조하십시오. 표준 끝점, .

워크플로 서비스

일련의 메시징 작업이 도입되면서 데이터를 보내고 받는 워크플로의 구현이 이전보다 쉬워졌습니다. 이러한 메시징 작업을 사용하면 일반적인 보내기/받기 또는 RPC 스타일 메서드 호출을 벗어나는 복잡한 메시지 교환 패턴을 모델링할 수 있습니다. 자세한 내용은 다음 항목을 참조하십시오. 워크플로 서비스, Services, Services.

대상 프레임워크 특성

대상 프레임워크 특성은 IIS 또는 WAS에서 호스팅되는 응용 프로그램이 대상으로 하는 .NET Framework의 버전을 지정하는 데 사용됩니다. 이 특성을 사용하면 Visual Studio에서 .NET Framework 2.0, 3.5 또는 4를 대상으로 하는 응용 프로그램을 빌드할 수 있습니다. 이 특성은 다음 예제와 같이 응용 프로그램의 Web.config 파일에 있는 <compilation> 태그 내의 특성 집합입니다.

<compilation debug="false"
        targetFramework="4.0">

        <assemblies>
          <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
          <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
          <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        </assemblies>

      </compilation>

IIS 또는 WAS에서 호스팅되는 응용 프로그램이 설치되어 있지 않은 .NET Framework 버전을 대상으로 하면 문제를 나타내는 예외가 throw됩니다. 대상 프레임워크 모니커가 응용 프로그램의 Web.config 파일에 지정되어 있지 않으면 IIS에 구성된 응용 프로그램 풀 버전에서 해당 모니커 값이 유추됩니다.

이 새 기능으로 인해 .NET Framework 4를 실행하는 컴퓨터에서 .NET Framework 3.5를 사용하여 작성한 WCF 서비스를 호스팅하려고 하면 다음 텍스트와 함께 ProtocolException이 발생할 수 있습니다.

처리되지 않은 예외: System.ServiceModel.ProtocolException: 응답 메시지의 콘텐츠 형식 text/html; charset=utf-8이(가) 바인딩의 콘텐츠 형식(application/soap+xml; charset=utf-8)과 일치하지 않습니다. 사용자 지정 인코더를 사용 중인 경우 IsContentTypeSupported 메서드가 올바르게 구현되는지 확인하십시오. 응답의 처음 1024바이트가 <html>    <head>        <title>입니다.' 응용 프로그램 도메인이나 응용 프로그램 풀이 현재 .NET Framework 버전 4.0 이상을 실행하고 있습니다. 이 웹 응용 프로그램에 대한 IIS 설정이 4.0 이상으로 설정되었거나 ASP.NET Web Development Server 버전 4.0 이상을 사용하고 있는 경우 이 예외가 발생할 수 있습니다. 이 웹 응용 프로그램의 Web.config 파일에 있는 &lt;compilation&gt; 요소에는 이 버전의 .NET Framework에 대한 필수 'targetFrameworkMoniker' 특성이 포함되어 있지 않습니다(예: '&lt;compilation targetFrameworkMoniker=&quot;.NETFramework,Version=v4.0&quot;&gt;'). 이 특성을 사용하여 Web.config 파일을 업데이트하거나 다른 버전의 .NET Framework를 사용하도록 웹 응용 프로그램을 구성하십시오.</title>...

이 오류는 IIS가 실행되는 응용 프로그램 도메인에서 .NET Framework 4를 실행하고 있지만 WCF 서비스를 .NET Framework 3.5에서 실행해야 하는 경우에 발생합니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 방법: .NET Framework 4에서 실행되는 IIS에서 .NET Framework 3.5를 사용하여 작성한 WCF 서비스 호스팅을 참조하십시오.

WCF REST

캐싱

.NET Framework 4를 사용하면 WCF REST 서비스에서 ASP.NET에 이미 제공되어 있는 선언적 캐싱 메커니즘을 사용할 수 있습니다. 이렇게 하면 WCF REST 서비스 작업의 응답을 캐시할 수 있습니다. 사용자가 캐시용으로 구성된 서비스에 HTTP GET을 보내면 ASP.NET이 캐시된 응답을 다시 보내고 서비스 메서드가 호출되지 않습니다. 캐시가 만료되면 다음에 사용자가 HTTP GET을 보낼 때 서비스 메서드가 호출되고 응답이 다시 한 번 캐시됩니다.

.NET Framework 4를 사용하면 조건부 HTTP GET 캐싱을 구현할 수도 있습니다. REST 시나리오에서 조건부 HTTP GET은 HTTP Specification에 설명된 대로 주로 서비스에서 지능형 HTTP 캐싱을 구현하는 데 사용됩니다. 자세한 내용은 다음 항목을 참조하십시오. WCF 웹 HTTP 서비스에 대한 캐싱 지원, Caching and Automatic Help Page.

형식 지원

WCF 웹 HTTP 프로그래밍 모델을 사용하면 서비스 작업의 응답을 반환하는 데 사용할 수 있는 가장 적절한 형식을 동적으로 결정할 수 있습니다. 응답은 Accept 헤더에 따라 XML 및 JSON용으로 자동으로 설정할 수 있습니다. 여기에는 작업의 형식을 프로그래밍 방식으로 설정할 수 있도록 도우미 API가 추가되어 있습니다. 자세한 내용은 다음 항목을 참조하십시오. WCF 웹 HTTP 형식 지정, Automatic Format Selection, Advanced Format Selection.

HTTP REST 오류 처리

WCF 웹 HTTP 오류 처리를 사용하면 HTTP 상태 코드를 지정하고 작업과 동일한 형식(예: XML 또는 JSON)을 사용하여 오류 정보를 반환하는 WCF REST 서비스에서 오류를 반환할 수 있습니다. 자세한 내용은 다음 항목을 참조하십시오. WCF 웹 HTTP 오류 처리, .

배포 기능

서비스를 실행하는 데 필요한 구성이 단순해졌으며 더 단순화된 서비스 구성을 위해 새 표준 끝점이 추가되었습니다. 단순화된 새 구성에 대한 자세한 내용은 단순화된 구성을 참조하십시오. 표준 끝점에 대한 자세한 내용은 표준 끝점을 참조하십시오.

IIS에서 WCF(Windows Communication Foundation) 서비스를 호스팅할 때는 가상 디렉터리에 .svc 파일을 저장합니다. 이 .svc 파일은 사용할 서비스 호스트 팩터리와 함께 서비스를 구현하는 클래스를 지정합니다. 서비스를 요청할 때는 https://contoso.com/EmployeeServce.svc와 같은 URI를 사용하여 .svc 파일을 지정합니다. REST 서비스를 작성하는 프로그래머에게는 이러한 유형의 URI가 적합하지 않을 수 있습니다. REST 서비스의 URI는 특정 리소스를 지정하며 일반적으로 확장명을 포함하지 않습니다. System.Web.Routing 통합 기능을 사용하면 확장명이 없는 URI에 응답하는 WCF REST 서비스를 호스팅할 수 있습니다. 자세한 내용은 다음 항목을 참조하십시오. System.Web.Routing 통합.

도메인 간 JavaScript

JSONP(JSON Padding)는 웹 브라우저에서 사이트 간 스크립팅을 지원할 수 있도록 하는 메커니즘입니다. JSONP는 현재 로드된 문서를 가져온 사이트가 아닌 다른 사이트에서 스크립트를 로드하는 웹 브라우저의 기능을 기반으로 설계되었습니다. 이 메커니즘은 JSON 페이로드를 사용자 정의 콜백 함수 이름으로 채우는 방식으로 작동합니다. 예를 들면 다음과 같습니다.

callback({ “a” = \“b\” });

위의 예제에서 {“a” = \”b\”} JSON 페이로드는 callback 함수 호출로 래핑됩니다. 콜백 함수는 현재 웹 페이지에 이미 정의되어 있어야 합니다. JSONP 응답의 콘텐츠 형식은 “application/javascript”입니다. 자세한 내용은 다음 항목을 참조하십시오. JSONP.

WCF REST 서비스 도움말 페이지

.NET Framework 버전 4에서는 WCF REST 서비스에 대한 자동 도움말 페이지를 제공합니다. 이 도움말 페이지에는 각 작업에 대한 설명, 요청 및 응답 형식, 스키마 등이 표시됩니다. 자세한 내용은 다음 항목을 참조하십시오. WCF 웹 HTTP 서비스 도움말 페이지, Caching and Automatic Help Page.