탑~! 2025. 8. 28. 13:37

1. WCF란?

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

 

Microsoft에서 서비스 지향 아키텍처(Service Oriented Architecture, SOA)를 구현하기 위해 내놓은 프레임워크이다. 서비스 지향 아키텍처 어플리케이션을 구현하기 위해 WCF를 사용 한다면 일반적인 기능을 구현하기 위해 특별한 기술을 사용하지 않아도 WCF 프레임워크의 도움을 받아 쉽게 어플리케이션을 구현할 수 있다. WCF 응용 프로그램들은 닷넷 런타임을 대상으로 하는 언어를 사용하여 개발할 수 있다.

 

2. 등장 배경

(1) Microsoft의 분산 기술

서비스 이름 설명
ASP.NET Web Service 상호 운용 가능한 일반적인 Web 서비스(Basic Profile 1.1 준거)를 구축하기 위한 기술
Web Services Enhancements (WSE) WS-*로 불리는 Web 서비스 최신의 확장 사양을 가능한 서포트한, 상호 운용을 의식한 차세대 Web 서비스 구축을 위한 기술
.NET Remoting 객체의 위치 투과성을 공급하고, 리모트 콜과 로컬 콜의 차이를 은폐한 프로그래밍을 가능하게 하는 분산 객체를 구축하기 위한 기술
.NET Enterprise Services(ES) 분산 트랜잭션이나 객체 풀링 등 컴포넌트의 작성과 사용을 단순화 하면서, 어플리케이션의 범위성과 융통성을 향상시키기 위한 고도의 기능을 제공하는 기술
MSMQ 즉시 응답을 필요로 하지 않는 비동기 메시지 교환의 어플리케이션을 구축하기 위한 기술

 

(2) 등장 배경

위 처럼 Microsoft의 여러 분산 기술들이 있지만 서로 다른 프로그래밍 모델을 사용하고 있으며 각기 다른 설정을 가지고 있다. 서비스 구현 로직은 같지만 이를 재사용하기 위해서는 통신에 필요한 코드를 다시 작성해야 하는 불편함이 있다. 그래서 위와 같은 분산 기술들의 문제점을 극복하고자 WCF가 등장하게 되었다.

 

- SOA(Service Oriented Architecture)기반의 WebService

- XML, SOAP 기반의 상호 운용 가능한 서비스

- 다양한 웹 서비스 스펙을 지원(WS-*)

- Configuration 설정만으로 단일 코드를 이용한 다양한 프로토콜의 구성이 가능

 

3. 특징

(1) Unification(통일성), Integration(통합)

- 분산환경 어플리케이션 개발을 위한 WebService, Remoting, MSMQ, WSE 등 MS의 분산 프로그래밍 모델들을 통일하여 새로운 개념의 분산환경 어플리케이션 플랫폼이다. 기존의 프로그래밍 모델들을 하부 구조는 유지한채 이것들의 표현 방식을 일관되게 하여 통일성을 이룩하였으며 기존 모델들이 가지는 각각의 장점과 기능들을 조합 가능하도록 하였다.

 

 

(2) Service Orientation(서비스 지향)

- SOAP를 지원함으로써 상호 운영성을 보장하며 이기종간 통신 인프라 구축을 가능하게 한다. 또한 WSE(웹 서비스 확장, WS-*) 를 모두 지원하여 확장된 형태의 서비스 구축이 가능하다.

 

 

4. 기능

(1) Web Service Based 

- XML, HTTP, SOAP, WSDL 등 웹 서비스 스펙 준수

 

(2) Security

– WS-Security, WS-Trust 등 메시지 기반 보안 제공

– HTTPS, 인증 기반의 TCP/IP 등 트랜스포트 수준의 보안 제공

 

(3) Transaction

- 분산 트랜잭션 지원

- TCP 바인딩 사용 시 OLE Transaction 직접 사용

- HTTP 바인딩 사용 시 WS-AT 를 통해 트랜잭션 전파

 

(4) Reliability

– 신뢰도 높은 메시징을 위해 WS-RM 프로토콜 구현

– 세션 기능 제공(ASP.NET의 세션과는 다른 개념)

 

(5) P2P Networking

 

(6) Rich Built-in Bindings

바인딩 설명
BasicHttpBinding WS-Basic Profile에 따른 Web 서비스 (ASMX 기반의 서비스 등)와의 통신에 적절한 바인딩. 이 바인딩에서는 전송 프로토콜로서 HTTP가 사용되어 메시지의 인코딩으로서 Text/XML이 사용됩니다.
WSHttpBinding 이중이 아닌 서비스 계약에 적절한 보안으로 보호되어 상호 운용 가능한 바인딩.
WSDualHttpBinding 이중의 서비스 계약 또는 SOAP 중개자를 사용한 통신에 적절한 보안으로 보호되어 상호 운용이 가능한 바인딩.
WSFederationHttpBinding WS-Federation 프로토콜을 지원하여, 페더레이션내 조직의 효율적인 사용자 인증과 승인이 가능한 보안으로 보호된 상호 운용이 가능한 바인딩.
NetTcpBinding WCF 응용 프로그램 사이의 컴퓨터간 통신에 적절한 보안으로 보호된 최적화 바인딩.
NetNamedPipeBinding WCF 응용 프로그램 사이의 1 대의 컴퓨터 위의 통신에 적절한 보안으로 보호되어 안정성있는 최적화된 바인딩.
NetMsmqBinding WCF 응용 프로그램 사이의 컴퓨터간 통신에 적절한 큐에 등록된 바인딩.
NetPeerTcpBinding 복수 머신간의 보안으로 보호된 통신이 가능한 바인딩.
MsmqIntegrationBinding WCF 응용 프로그램과 기존의 MSMQ 응용 프로그램 사이의 컴퓨터간 통신에 적절한 바인딩.

 

5. Endpoint

(1) 정의

WCF는 Endpoint(끝점)를 통해 서버(서비스)와 클라이언트 간의 메시지 교환을 한다. Endpoint는 닷넷 리모팅의 채널과 포멧터를 합친 개념이라고도 볼 수 있는데 서버(서비스)에는 여러 개의 Endpoint를 구성할 수 있으며 클라이언트는 이중 하나 이상의 Endpoint와 메시지 교환을 하게 된다. 

 

 

(2) ABC 컴포넌트 모델

WCF의 Endpoint는 서버와 클라이언트 간의 통신을 위한 포털 역할을 한다고 볼 수 있는데 이를 자세히 들여다 보면 통신을 위해 가장 기본적으로 서비스의 위치(Where)를 알아야 하며 통신방식(How)이 무엇인지 알아야 하며 서비스가 무엇(What)을 제공하는지 알아야 한다. 즉 Endpoint는 아래와 같은 구성요소로 이루어진다.

 

① Address 

- 서비스를 액세스하기 위한 주소 

- Transport에 따라 달라짐(http://......, net.tcp://......, net.pipe://......, net.msmq://....., net.p2p://...... )

 

② Binding 

- 서비스 호출에 사용되는 Transport 프로토콜, 인증, 암호화, 메시지 인코딩, 세션 여부 등 

- Binding에 의해 Address 형식이 결정되곤 함 

- Custom Binding 제공도 가능 

 

 

 

③ Contract 

- 서비스에 대한 인터페이스 

- 서비스의 메소드(Operation Contract) 

- 관련 데이터 타입들(Data Contract) 

 

구성 요소 키워드 설명
Address Where? 서비스가 어디에 위치해 있는가?
서비스 주소 및 연결 포트 정보 등
Binding How? 서비스는 어떤 통신을 하는가?
통신 프로토콜, 인코딩 방법, 보안 요구사항 등
Contract What? 서비스는 무엇을 제공하는가?
서비스가 제공하는 대상 등

 

즉 WCF에서 서버(서비스)와 클라이언트 간의 메시지 교환을 위한 Endpoint는 ABC 모델을 가지고 있으며 ABC 모델은 ‘어디에 있는 무엇을 어떻게 사용할 것인가?’ 에 해당하는 모델이다. 아래 그림은 WCF 분산환경에서의 ACB 모델을 도식화 한 그림이다.

 

 

WCF에서는 개발자로 하여금 Contract, 즉 무엇을 제공할 지만 신경쓰면 되도록 프로그래밍 환경을 단순화 하였다. 개발자는 서비스로 제공될 것만 개발하면 되고 나머지는 구성 파일에 속성 변경 등의 방법으로 쉽게 적용할 수 있도록 하여 개발 생산성 및 쉬운 개발을 가능하게 한다.

[출처] WCF란?|작성자 islove8587

728x90
반응형