본문 바로가기

Programming/WCF

WCF 이론

Windows Communication Fundation

Microsoft 플랫폼 기반의 개발자에게 있어서 WCF의 기술적 가치는 상당히 중요하다.
특히 Web, Network 프로그램을 하는 이들에게 이 기술은 반드시 필요한 기술임에 틀림이 없다.
많은 기업들이 기존의 Web Service 기반의 Application들을 WCF기반의 Application으로 교체하고 있기도 하다.


WCF는 XML Web Service 기반의 차세대 서비스 통신 프레임워크다.
따라서 서로 통신하고자 하는 두 프로그램이 WCF를 이용하여 통신을 할 수 있다.
어떤 기능을 제공하는 프로그램으로서 호출을 받는 Callee를 Service라고 하고
기능을 제공받기 위해 호출하는 Caller를  Client라고 한다.
WCF는 Client와 Service의 사이에서 상호작용하며 둘 사이의 통신을 보다 쉽고 강력하게 해준다.
XML을 주고 받으면서 Client가 Service에게 기능적인 요청을 수행하고 그 결과를 Client에게 반환해준다.




WCF Service의 핵심적인 주요 요소 세가지 --> Address, Binding, Contract
Address : 인터넷 상의 Service 위치를 나타내는 URI ( http://192.168.0.4/wcf/testservice.svc )
Binding  : WCF Service를 네트워크를 통해 호출할 때 고려해야 할 다양한 요소들의 집합 ( 프로토콜, 데이터포멧 등 )
Contract : WCF Service가 제공하는 기능들에 대한 인터페이스. WCF Service가 제공하는 메서드.
세가지 요소를 모두 합쳐서 Service의 EndPoint라고 부르며 WCF는 반드시 하나 이상의 EndPoint을 같는다.
WCF에서 Client는 반드시 Service의 EndPoint을 통해서만 Service를 호출할 수 있다.
이 EndPoint 객체는 Service의 인터넷 주소, 바인딩 구성, Service 계약을 모두 명시해야 한다.



1개의 WCF Service는 2개 이상의 EndPoint를 가질 수 있다.( HTTP기반의 바인딩, TCP기반의 바인딩 )
예를들어 어떤 WCF Service를 구현 후, 인터넷 상의 Client는 상호 운영성이 뛰어난 HTTP 기반의 Binding을 사용하도록 하고, 인트라넷 상의 클라이언트는 성능적으로 보다 우수한 TCP 기반의 바인딩을 사용하도록 할 수 있다.






WCF를 이용하여 Service를 구현하면 이 Service는 WCF Host에 의해 Hosting 되어야만 Client의 호출을 받을 수 있다.
WCF는 Service가 실제로 클라이언트의 호출을 받을수 있드록 Host환경을 완벽하게 갖추고 있으며,
이 호스팅 환경은 일반 닷넷 EXE Application 혹은 IIS를 이용하여 구축 될 수 있다.
WCF가 제공하는 Host는 Multi-Thread Pool을 완벽하게 지원하기 때문에 여러 클라이언트의 동시 호출에 대해 문제가 없다.
개발자는 단순히 Host객체를 생성하고 Open 메소드를 호출하기만 하면 된다.
WCF 런타임이 네트워크 포트나 HTTP 프로토콜을 구성하여 클라이언트 메시지를 수신하기 시작할 것이고 수신된 클라이언트 호출은 스레드 풀의 스레드 중 한 스레드에 의해 WCF Service에 전달 될 것이다.





WCF는 SOAP Message 기반의 Web Service를 구현하기 쉽게 해 주는 Framework로서 .Net Programming적인 요소를 XML Web Service 요소로 바꾸어 줄 뿐만 아니라 보다 간편한 Programming 모델을 제시해 준다.

위 그림처럼 WCF Service와 WCF Client는 WCF 런타임과 클래스 라이브러리를 이용하여 Service와 Client Proxy를 구성하고 Client가  Proxy를 통해 Service를 호출하면 Service 호출은 여러 채널을 통과함에 따라 XML 기반의 SOAP Message로 변환되고 이 Message가 Service에 도착하게 된다.
Service 측의 Channel들은 수신된 SOAP Message를 처리하여 다시 Service 메서드 호출로 변환해 주며 Service Method 수행 후 Service의 수행 결과는 다시 채널을 통과하면서 XML 기반의 SOAP 결과 Message로 변환된다.
Client측의 채널들은 결과  XML 을 처리하여 프록시의 리턴값으로 변환하여 최종적으로  Client에게 전달할 것이다.





'Programming > WCF' 카테고리의 다른 글

WSDL - Web Service Descirption Language  (0) 2011.08.24
Talking to WCF with Flex 3 via JSON or XML  (0) 2011.08.23
WCF Service Client - Visual Studio  (0) 2011.08.23
WCF Service Hosting  (0) 2011.08.18
WCF Service programming  (0) 2011.08.18