본문 바로가기

.Net Technology/WCF

(2) WCF (Windows Communication Foundation)의 소개

월간 마이크로소프트웨어에 기고한 기사입니다.


WCF는Windows Communication Foundation의 약자로, 기존에 Indigo라고도 불리기도 했었다. WCF의 등장배경부터 자세한 개념을 이번 강의실에서 살펴 볼 것이다. 먼저 간단하게 WCF의 개념을 정리하자면 WCF는 MS의 여러 분산 프로그래밍들을 하나로 통일 시키기 위한 통일된 서비스 프로그래밍 정도로 개념을 알고 WCF를 살펴보도록 하자.

WCF의 등장배경

2000년도에 이르러서SOA(Service-Oriented-Architecture) 기술이 큰 유행이 불게 되었다. 다음 그림을 살펴보자.


<그림 2> 프로그래밍 패러다임의 변화

개발자들에게는OOP(Object-Oriented-Programming)나CBD(Component-Based-Develop)와 같은 개념들은 이미 수도 없이 들어 왔을 것이다. 바로 과거에 굉장히 유행했던 아키텍처의 패턴 이였다. 2000년도에서도 역시 새롭게 등장한 패턴이 있다. 바로 SOA(Service-Oriented-Architecture)라는 서비스 지향적 아키텍처이다. 보편적으로 SOA는 상호 관계를 가지고 있는 기업들간의 정보 시스템을 구현할 때 많이 사용된다.

SOA를 구축하기 위해서는 기업이나 고객간의 분산 환경을 같이 상호 운용이 가능하게 설계 되어야 한다. 예를 들어서 A라는 기업과 B라는 기업이 제휴를 맺고 A의 어떤 특정한 데이터를 B라는 기업에 보내주어야 한다고 가정해 보자. 그럼 A라는 기업은 그 데이터를 어떻게 넘겨 줄 것인가? A기업에서 쉽게 처리하자고 해서 데이터베이스의 테이블을 열어주는 무책임한 행동은 하지 않을 것이다. 이때 일반적으로 기업끼리는 분산환경에 대해 서로 협의를 하게 된다. TCP 통신을 이용할 것인지, Soap 통신을 이용할 것인지, 닷넷끼리의 환경이라면 Remoting 서비스도 대두될 것이다. 서비스 아키텍처를 협의에서 오르내리게 될 MS의 분산기술은 다음과 같이 구성되어 있다.

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

<표 1> MS 분산기술의 종류

MS의 분산 기술은 이렇게 다양하게 나누어져 있다. 보통 상호 운용 성을 고려해서 웹 서비스를 많이 선택한다. 하지만 웹 서비스는 큰 데이터를 운반할 때에 좋은 성능을 발휘하지 못한다. 상호운용 성이 좋다는 장점이 있는 반면 Soap의 단점이 있기도 하다. 이런 MS의 분산기술을 소개한 이유는 위의 기술들이 바로 WCF와 연관이 있기 때문이다. WCF는 바로 이렇게 번잡해 보일 수 있는 MS의 분산 기술을 통합하자는 의미에서 새롭게 탄생한 것이 바로 WCF가 되는 것이다. 분산된 서비스 기술을 하나로 묶은 통합된 서비스 프로그래밍이 된 것이다.


<그림 3> WCF의 정의


WCF의 특징

WCF는 서비스 지향 어플리케이션을 신속하게 개발하기 위한 통합된 서비스 프로그래밍이라고 정의할 수 있다. WCF의 특징은 다음과 같이 요약할 수 있다.

● 통일성

앞서서 설명했듯이 WCF는 MS의 분산서비스들을 통일하여 새로운 서비스가 탄생된 거라고 설명 했듯이 WCF는 통일의 특징을 가지고 있다. 또한 통일의 특징은 기존 분산 서비스들이 가지고 있는 특징과 기능들의 조합이 가능하다는 것이다. 조금 구체적으로 설명을 하자면 서비스를 구현할 때 보안을 어떻게 구현할지 설정하고, 안전성과 트랜잭션과 같은 기능을 자신이 원하는 서비스대로 조합을 해서 구현할 수 있다는 것이다. 다음 그림은 WCF가 MS의 분산기술을 통합시키면서 가지고 있는 장점 들을 보여주고 있다.



 
<
그림 4> WCF의 통일성

 높은 생산성

서비스를 통합하므로 서 원하는 서비스의 기능을 쉽게 구현할 수 있다. 아무리 좋은 기능이라도 개발자가 또한 Configuration의 설정 기반으로 개발되기 때문에 개발이 용이하다. 또한 Visual Studio.Net 2005 버전은 WCF 서비스를 쉽게 개발 할 수 있도록 여러 가지 지원을 해주고 있기 때문에 쉽게 구현할 수 있다. 다음 그림은 단 3줄의 코드 설정으로 구현하고 있는 서비스를 보여주고 있다.

<그림 5> WCF의 높은 생산성

 상호 운용성

WCF는 웹 서비스의 확장 스팩(WS-*)을 모두 지원하고 있다. 때문에 다른 시스템과도 별 문제없이 서비스를 제공할 수 있고, 또한 자바 개발자들과도 많은 커뮤니케이션과 테스팅을 통해서 상호 운용성을 검증해 왔다. 그리고 MS의 분산 기술들과도 역시 쉽게 서비스를 구현 할 수 있다는 특징을 가지고 있다. 다음 그림은 기존 MS 분산 서비스와 WCF의 상호 운용성을 보여주고 있다.


<그림 6> WCF의 상호 운용성

앞의 그림에서는 COM+ 같은 경우는 Moniker나 Stub 같은 것을 이용해서 상호 운영이 가능하다는 것을 보여주고 있다.