{{위키데이터 속성 추적}}
{{소프트웨어 정보
| name                   = 윈도우 커뮤니케이션 파운데이션<br />Windows Communication Foundation (WCF)
| author                 = [[마이크로소프트]]
| developer              = [[닷넷 파운데이션]]
| released               = {{시작 날짜와 나이|2006|11|21}}
| latest release version = v3.4.0
| latest release date    = {{시작 날짜와 나이|2022|08|18}}
| repo                   = {{URL|https://github.com/dotnet/wcf}}
| replaces               = [[Web Services Enhancements]]
| programming language   = [[C 샤프|C#]]
| operating system       = [[Linux]], [[macOS]], [[마이크로소프트 윈도우|Windows]]
| platform               = [[닷넷 프레임워크]], [[닷넷]]
| genre                  = [[소프트웨어 프레임워크]]
| license                = [[MIT 라이선스]]
| website                = {{URL|https://docs.microsoft.com/en-us/dotnet/framework/wcf/index}}
}}
[[파일:DotNet3.0.svg|alt=dot net three point  windows stack diagram|섬네일|right|300px|이 개별 블럭은 [[.NET Framework 3.0]]의 일부이다.]]

'''윈도우 커뮤니케이션 파운데이션'''(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 포맷의 데이터 구조에 순응하는 인코딩들 둘 다 [[XML 정보 세트|정보 세트]]라고 부른다.

== 서비스 지향 아키텍처 ==
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.  {{ISBN|0-672-32877-1}}

== 외부 링크 ==
* [http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx 윈도우 커뮤니케이션 파운데이션], MSDN 윈도우 커뮤니케이션 파운데이션 포털.
* [https://web.archive.org/web/20071011013037/http://wcf.netfx3.com/ 윈도우 커뮤니케이션 파운데이션], 마이크로소프트의 WCF 정보 및 샘플 웹 사이트.
* [http://wcfguide.blogspot.com 윈도우 커뮤니케이션 파운데이션 길잡이], 윈도우 커뮤니케이션 파운데이션에 대한 온라인 길잡이.
* [https://web.archive.org/web/20080708225951/http://msdn.microsoft.com/windowsvista/getthebeta/default.aspx WinFX 베타 페이지], 마이크로소프트의 WinFX 사이트.
* [http://msdn2.microsoft.com/en-us/library/aa480188.aspx David Chappell: "Introducing Indigo: An Early Look"], 2005년 2월
* [https://web.archive.org/web/20080302043315/http://msdn.microsoft.com/theshow/episode.aspx?xml=theshow%2Fen%2FEpisode040%2Fmanifest.xml The .NET Show: Longhorn Indigo], 2005년 2월
* [https://web.archive.org/web/20070402043047/http://www.netfxguide.com/guide/WCF.aspx WCF section on NetFXGuide.com]
* [https://web.archive.org/web/20071016154400/http://searchvb.techtarget.com/general/0,295582,sid8_gci1191213,00.html?Offer=VBwikiwcflg 윈도우 커뮤니케이션 파운데이션 학습 길잡이] (SearchVB.com)
* [https://web.archive.org/web/20071016171435/http://www.codeproject.com/csharp/indigoqueuinghelloworld.asp 헬로 월드 예제 ('Indigo')]  인디고를 사용한 헬로 월드 예제
* [http://msdn2.microsoft.com/en-us/library/bb332338.aspx WCF 서비스 호스팅 및 소비] (Chris Peiris & Dennis Mulder, [[Avanade]])

{{닷넷 프레임워크}}
{{마이크로소프트 API}}
{{마이크로소프트 개발 도구}}

[[분류:윈도우 비스타]]
[[분류:마이크로소프트 API]]
[[분류:닷넷 프레임워크]]
[[분류:닷넷 용어]]