Windows Communication Foundation 정의
WCF(Windows Communication Foundation)는 서비스 지향 애플리케이션을 작성하기 위한 프레임워크입니다. WCF를 사용하면 데이터를 비동기 메시지로 서비스 엔드포인트 간에 전송할 수 있습니다. 서비스 엔드포인트는 IIS에서 호스팅하는 계속 사용 가능한 서비스의 일부분일 수도 있고 애플리케이션에서 호스팅되는 서비스일 수도 있습니다. 또한 엔드포인트는 서비스 엔드포인트에서 데이터를 요청하는 서비스의 클라이언트일 수 있습니다. 메시지는 XML로 전송되는 한 문자나 단어처럼 간단할 수도 있고 이진 데이터 스트림처럼 복잡할 수도 있습니다. 다음은 몇 가지 샘플 시나리오입니다.
비즈니스 트랜잭션을 처리하는 보안 서비스
트래픽 보고서 또는 기타 모니터링 서비스와 같은 최신 데이터를 다른 서비스에 제공하는 서비스
두 사람이 실시간으로 통신하거나 데이터를 교환할 수 있도록 하는 채팅 서비스
하나 이상의 서비스를 폴링해 데이터를 가져와서 논리적 프레젠테이션으로 표시하는 대시보드 애플리케이션
Windows Workflow Foundation을 사용하여 구현되는 워크플로를 WCF 서비스로 노출
WCF가 도입되기 전에도 이러한 애플리케이션을 만들 수는 있었지만, WCF를 사용하면 엔드포인트를 매우 쉽게 개발할 수 있습니다. 즉, WCF는 간편한 방식으로 웹 서비스와 웹 서비스 클라이언트를 만들 수 있도록 디자인되었습니다.
WCF의 대안인 gRPC
gRPC는 WCF에 대한 인기 있는 대안인 최신 RPC 프레임워크입니다. gRPC는 HTTP/2를 기반으로 빌드되며 다음을 포함하여 WCF에 비해 다양한 이점을 제공합니다.
- 성능: gRPC는 특히 장기 실행 연결의 경우 WCF보다 훨씬 효율적입니다.
- 확장성: gRPC는 많은 수의 클라이언트 및 서버로 확장하도록 설계되었습니다.
- 보안: gRPC는 TLS 및 인증을 비롯한 다양한 보안 메커니즘을 지원합니다.
- 플랫폼 간: gRPC는 플랫폼 중립적이며 다양한 프로그래밍 언어와 함께 사용할 수 있습니다.
WCF 앱을 개발하거나 gRPC로 마이그레이션하는 방법에 대한 자세한 내용은 다음을 참조하세요.
WCF의 기능
WCF에는 다음과 같은 기능 집합이 포함됩니다. 자세한 내용은 WCF 기능 세부 정보를 참조하세요.
서비스 지향성
WS 표준을 사용하는 경우의 이점 중 하나는 WCF를 통해 서비스 지향 애플리케이션을 만들 수 있다는 것입니다. SOA(서비스 지향 아키텍처) 방식에서는 웹 서비스를 사용하여 데이터를 보내고 받습니다. 이러한 서비스에서는 애플리케이션이 서로 하드 코드되지 않고 느슨하게 결합된다는 장점이 있습니다. 느슨하게 결합된 관계란 필수 계약이 충족되는 한 모든 플랫폼에서 만들어지는 모든 클라이언트가 어떤 서비스에나 연결할 수 있는 관계입니다.
상호 운용성
WCF는 웹 서비스 상호 운용성을 위한 최신 업계 표준을 구현합니다. 지원되는 표준에 대한 자세한 내용은 상호 운용성 및 통합을 참조하세요.
다양한 메시지 패턴
메시지가 교환되는 패턴에는 여러 가지가 있습니다. 그 중에서 가장 일반적인 패턴인 요청/회신 패턴에서는 한 엔드포인트에서 두 번째 엔드포인트의 데이터를 요청합니다. 그러면 두 번째 엔드포인트에서 회신을 합니다. 또한 단일 엔드포인트에서 회신을 기대하지 않고 메시지를 보내는 단방향 메시지와 같은 패턴도 있습니다. 보다 복잡한 패턴인 이중 교환 패턴은 두 엔드포인트가 하나의 연결을 설정하여 데이터를 주고 받는 것으로, 인스턴트 메시징 프로그램과 유사합니다. WCF를 사용하여 다른 메시지 교환 패턴을 구현하는 방법에 대한 자세한 내용은 계약을 참조하세요.
서비스 메타데이터
WCF에서는 WSDL, XML 스키마, WS-Policy 등 업계 표준으로 지정된 형식을 사용하여 서비스 메타데이터를 게시할 수 있습니다. 이 메타데이터를 사용하여 WCF 서비스에 액세스하기 위한 클라이언트를 자동으로 생성하고 구성할 수 있습니다. 메타데이터는 HTTP 및 HTTPS를 통해 게시하거나 웹 서비스 메타데이터 교환 표준을 사용하여 게시할 수 있습니다. 자세한 내용은 메타데이터를 참조하세요.
데이터 계약
WCF는 .NET Framework를 사용하여 작성되었으므로, 적용할 계약을 코드에 적합한 방식으로 제공하는 방법도 포함하고 있습니다. 널리 사용되는 계약 유형 중 하나는 데이터 계약입니다. 기본적으로 Visual C# 또는 Visual Basic을 사용하여 서비스 코드를 작성할 때 데이터를 가장 쉽게 처리하는 방법은 데이터 엔터티에 속하는 속성을 사용하여 해당 데이터 엔터티를 나타내는 클래스를 만드는 것입니다. WCF에는 이와 같이 손쉬운 방식으로 데이터를 사용할 수 있는 포괄적인 시스템이 포함되어 있습니다. 데이터를 나타내는 클래스를 만들면 서비스에서 메타데이터를 자동으로 생성하며, 이 메타데이터는 클라이언트가 사용자가 디자인한 데이터 형식을 준수할 수 있도록 합니다. 자세한 내용은 데이터 계약 사용을 참조하세요.
보안
개인 정보를 보호하기 위해 메시지를 암호화할 수 있으며, 사용자가 인증을 해야 메시지를 받을 수 있도록 지정할 수 있습니다. SSL 또는 WS-SecureConversation 등의 널리 알려진 표준을 사용하여 보안을 구현할 수 있습니다. 자세한 내용은 보안을 참조하세요.
다양한 전송 및 인코딩
기본 제공되는 여러 전송 프로토콜 및 인코딩 중 원하는 항목을 사용하여 메시지를 전송할 수 있습니다. 가장 일반적으로 사용되는 프로토콜과 인코딩은 World Wide Web용 HTTP(HyperText Transfer Protocol)를 사용하여 텍스트로 인코딩된 SOAP 메시지를 보내는 것입니다. WCF에서는 TCP, 명명된 파이프 또는 MSMQ를 사용하여 메시지를 보낼 수도 있습니다. 이러한 메시지는 텍스트로 인코딩할 수도 있고 최적화된 이진 형식을 사용하여 인코딩할 수도 있습니다. 이진 데이터는 MTOM 표준을 사용하여 보내는 것이 효율적입니다. 제공되는 전송 또는 인코딩 중에서 요구 사항에 적합한 항목이 없는 경우에는 사용자 지정 전송 또는 인코딩을 직접 만들 수 있습니다. WCF에서 지원하는 전송 및 인코딩에 대한 자세한 내용은 전송을 참조하세요.
신뢰할 수 있는 메시지 및 대기 중인 메시지
WCF에서는 WS-Reliable Messaging을 통해 구현되는 신뢰할 수 있는 세션과 MSMQ를 사용하여 메시지를 신뢰할 수 있는 방식으로 교환할 수 있습니다. WCF에서 지원되는 신뢰할 수 있는 메시징 및 대기 중인 메시징에 대한 자세한 내용은 큐 및 신뢰할 수 있는 세션을 참조하세요.
지속적 메시지
지속적 메시지는 통신이 중단되어도 손실되지 않는 메시지입니다. 지속적 메시지 패턴의 메시지는 항상 데이터베이스에 저장됩니다. 통신이 중단되는 경우 연결이 복원되면 데이터베이스가 메시지 교환을 다시 시작할 수 있도록 해 줍니다. Windows WF(Workflow Foundation)를 사용하여 지속적 메시지를 만들 수도 있습니다. 자세한 내용은 워크플로 서비스를 참조하세요.
트랜잭션
WCF는 WS-AtomicTtransactions, System.Transactions 네임스페이스의 API 및 Microsoft Distributed Transaction Coordinator의 세 가지 트랜잭션 모델 중 하나를 사용하는 트랜잭션도 지원합니다. WCF의 트랜잭션 지원에 대한 자세한 내용은 트랜잭션을 참조하세요.
AJAX 및 REST 지원
REST는 Web 2.0 기술 발전에 대한 한 가지 예일 뿐입니다. WCF는 SOAP 봉투에 래핑되지 않은 “일반” XML 데이터를 처리하도록 구성할 수 있습니다. WCF는 ATOM(일반 RSS 표준)과 같은 특정 XML 형식뿐만 아니라 JSON(JavaScript Object Notation)과 같은 비XML 형식도 지원하도록 확장할 수 있습니다.
확장성
WCF 아키텍처에는 다양한 확장성 지점이 있습니다. 추가적인 기능이 필요한 경우에는 여러 진입점을 통해 서비스 동작을 사용자 지정할 수 있습니다. 사용 가능한 확장성 지점에 대한 자세한 내용은 WCF 확장을 참조하세요.
WCF와 다른 Microsoft 기술의 통합
WCF는 유동적인 플랫폼입니다. 이와 같이 뛰어난 유연성으로 인해 WCF는 다른 여러 Microsoft 제품에서도 사용됩니다. WCF의 기본 사항을 이해하면 이러한 제품을 사용할 때 해당 기능을 즉시 활용할 수 있습니다.
WCF와 함께 사용된 최초의 기술은 Windows WF(Workflow Foundation)입니다. 워크플로에서는 단계가 “활동”으로 캡슐화되므로 애플리케이션 개발이 간소화됩니다. Windows Workflow Foundation의 첫 번째 버전에서는 개발자가 워크플로를 위한 호스트를 만들어야 했습니다. 다음 버전의 Windows Workflow Foundation은 WCF와 통합되었습니다. 이를 통해 모든 워크플로를 WCF 서비스에서 쉽게 호스트할 수 있습니다. Visual Studio 2012 이상에서 WF/WCF 프로젝트 형식을 자동으로 선택하여 이 작업을 수행할 수 있습니다.
Microsoft BizTalk Server R2에서도 통신 기술로 WCF를 활용합니다. BizTalk는 표준화된 형식 간에 데이터를 전송 및 수신하도록 디자인되었습니다. 메시지는 중앙의 메시지 상자로 배달되어야 하며, 여기서 엄격한 매핑을 사용하거나 워크플로 엔진과 같은 BizTalk 기능 중 하나를 사용하여 메시지를 변환할 수 있습니다. 이제 BizTalk에서는 WCF LOB(사업 부문) 어댑터를 사용하여 메시지를 메시지 상자로 배달할 수 있습니다.
Windows Server AppFabric 애플리케이션 서버의 호스팅 기능은 통신에 WCF를 사용하는 애플리케이션을 배포하고 관리하도록 특별히 디자인되었습니다. 호스팅 기능에는 WCF를 사용하는 애플리케이션을 위하여 특별히 디자인된 다양한 도구 및 구성 옵션이 포함되어 있습니다.