윈도우 커뮤니케이션 파운데이션

윈도우 커뮤니케이션 파운데이션(Windows Communication Foundation, WCF)은 응용 프로그램을 한 대의 컴퓨터나 네트워크에 연결된 여러 컴퓨터를 걸쳐 통신할 수 있게 만들어 주는 새로운 통신 하부 시스템이다. WCF 응용 프로그램들은 닷넷 런타임을 대상으로 하는 언어를 사용하여 개발할 수 있다.

닷넷 프레임워크 3.0의 일부로 도입된 4 개의 API 중 하나이며 윈도우 비스타, 윈도우 서버 2008에 포함되어 있다. 윈도우 XP, 윈도우 서버 2003에서도 지원된다.

개요 
WCF 프로그래밍 모델은 웹 서비스, 닷넷 리모팅, MTS, 그리고 메시지 쿼리를 하나의 서비스 지향 프로그래밍으로 통합한다. 로컬 컴퓨터, 랜, 인터넷 안의 프로세스 통신어를 위한 단일 API와 더불어 웹 서비스 개발에 대한 고속 개발 도구 방식을 제공하기 위해 고안된 것이다. WCF는 모래상자(sandbox) 안에서 실행되며 모든 닷넷 응용 프로그램이 제공하는 강화된 보안 모델을 제공한다.

WCF는 두 개의 프로세스 사이의 통신을 위해 SOAP 메시지를 사용한다. 그럼으로써 WCF 기반 응용 프로그램을 SOAP 메시지를 통해 통신하는 다른 프로세스와 상호 운영할 수 있게 만들어 준다.
WCF 프로세스가 WCF가 아닌 프로세스와 통신할 때, XML 기반 인코딩은 SOAP 메시지를 위해 사용되지만, 다른 WCF 프로세스와 통신할 때에는 SOAP 메시지는 최적화된 이진 포맷으로 인코딩된다. SOAP 포맷의 데이터 구조에 순응하는 인코딩들 둘 다 정보 세트라고 부른다.

서비스 지향 아키텍처 
WCF는 서비스 지향 아키텍처 원칙과 부합하도록 설계되어 있으며 서비스가 소비자에 의해 소비되는 분산 컴퓨팅을 지원한다. 클라이언트들은 여러 개의 서비스를 소비하며 서비스들은 여러 대의 클라이언트에 의해 소비될 수 있다.
서비스들은 보통 WCF 클라이언트가 서비스 소비에 사용할 수 있는 WSDL 인터페이스를 가지고 있다. WCF는 WS 어드레싱, WS 신뢰 메시지, WS 보안과 같은 수많은 고급 웹 서비스 (WS)를 사용한다.

WCF 서비스 
WCF 서비스는 세 개의 부분으로 이루어져 있다.
서비스 클래스: 제공되는 서비스가 추가되어 있다.
호스트 환경: 서비스를 호스트한다.
하나 이상의 종착점: 클라이언트가 연결되는 곳이다.
WCF 서비스의 모든 통신은 종착점을 통해 이루어진다. 이러한 종착점은 어떠한 방식의 서비스 클래스가 종착점을 통해 접근될 것인지를 정의하는 계약(Contract)을 지정한다. 각 종착점은 다른 모임의 방식을 드러낼 수도 있다. 종착점은 또한 어떻게 클라이언트가 종착점이 호스트되는 서비스, 주소와 통신하는지 지정하는 묶음(binding)으로 정의한다.

WCF는 WCF 서비스를 호스팅하는 데에 사용할 수 있는 윈도우 활성화 서비스를 제공한다. 아니면 WCF 서비스는 또한 WCF에 의해 제공되는 인터넷 정보 서비스나 "ServiceHost 클래스를 사용하는 프로세스" 안에서 호스팅될 수 있다. 서비스들은 자체 호스팅을 할 수도 있다.

WCF 서비스의 정의 
WCF 서비스 클래스는 서비스를 메소드로 추가하고 있다. 적어도 1개의 서비스 계약(Contract)이 정의되고 서비스가 실행할 수 있는 조작이 정의된다. 계약(Contract)은 .NET Attributes를 사용해서 정의된다. 옵션으로 데이터 계약의 정의를 할 수 있고 이용할 수 있는 데이터의 종류를 기술할 수 있다.

계약은 .NET Attributes를 사용해 정의된다. WCF 서비스로 공개된 클래스에는 ServiceContract 속성을 부여하거나, 그 속성이 부여된 인터페이스를 갖출 필요가 있다. 클라이언트가 SOAP 메시지를 사용해 호출할 메소드에는 OperationContract속성을 부여해야 한다.

하나 이상의 종착점의 정의 
WCF클라이언트는 종착점(End Point)을 통해 WCF 서비스와 접속이 된다.

각 서비스는 1개 이상의 종착점을 통해 계약(Contract)을 공개한다. 종착점에는 URL로 표시된 주소가 있고, 바인팅 프로퍼티에서 데이터의 전송방식을 지정한다.

Address/Binding/Contract 3개의 요소를 "ABC"라고 한다. 바인딩에는 서비스에 접속할 때 사용되는 통신 프로토콜, 세큐리티 기구의 종류 등이 지정된다.

같이 보기 
 닷넷 프레임워크
 윈도우 비스타

WCF에 대한 추가 리소스 정보 
Microsoft Windows Communication Foundation: Hands-On, Craig McMurtry (Computer Books Author), Marc Mercuri, and Nigel Watling, SAMS Publishing, May 26, 2006.

외부 링크 
 윈도우 커뮤니케이션 파운데이션, MSDN 윈도우 커뮤니케이션 파운데이션 포털.
 윈도우 커뮤니케이션 파운데이션, 마이크로소프트의 WCF 정보 및 샘플 웹 사이트.
 윈도우 커뮤니케이션 파운데이션 길잡이, 윈도우 커뮤니케이션 파운데이션에 대한 온라인 길잡이.
 WinFX 베타 페이지, 마이크로소프트의 WinFX 사이트.
 David Chappell: "Introducing Indigo: An Early Look", 2005년 2월
 The .NET Show: Longhorn Indigo, 2005년 2월
 WCF section on NetFXGuide.com
 윈도우 커뮤니케이션 파운데이션 학습 길잡이 (SearchVB.com)
 헬로 월드 예제 ('Indigo')  인디고를 사용한 헬로 월드 예제
 WCF 서비스 호스팅 및 소비 (Chris Peiris & Dennis Mulder, Avanade)

윈도우 비스타
마이크로소프트 API
닷넷 프레임워크