본문 바로가기

Programming/WCF

WCF Service Client - Visual Studio

 

WCF는 XML Web Service 표준을 구현하기 때문에 Client를 작성하기 위해 반드시 WCF를 사용하여야 하는 것은 아니다
WCF를 전혀 사용하지 않고 닷넷 프레임워크 2.0만을 사용하여 Client를 제작할 수도 있고, C/C++이나 VB6.0도 가능하다.


1. Client Project는 Service의 Interface를 사용하기 위패 Library Project를 참조해야 한다.

2. ServiceEndPoint Class를 사용해 Service의 EndPoint를 기술. - System.ServiceModel.Description -
    WCF Client가 Service와 통신하기 위해 유일하고 반드시 알아야 할 것이 바로 Service의 EndPoint이다.
    Service의 EndPoint는 Service의 Interface를 기술하는 Contract, Binding, Address를 포함하고 있다.
    Client는 호출하고자 하는 Service의 종점이 무엇인지 WCF런타임에게 알려주어야만 한다.
    ServiceEndPoint Class는 두개의 생성자를 제공한다.

   생성자의 필수 매개변수인 ContractDescription Class는 서비스계약이 어떤 닷넷 인터페이스 타입인가에 대한 정보와
   서비스 계약에 포맣될 수 있는 다양한 속성들에 대한 정보를 포함한다.

   ContractDescription의 GetContract를 통해서 Interface에서 서비스계약 속성 정보를 포함하는 객체를 가져온다.
   Client와 Service가 동일한 바인딩을 사용하도록 하기 위해 Binding을 맞춘다.
   마지막으로 서비스의 주소를 나타내는 EndPointAddress를 기술한다.

3. WCF의 Channel Factory를 생성하는 것이다.
    WCF의 내부 구조는 다양한 XML Web Service 통신에 사용할 수 있는 다양한 채널들이 메시지를 순차적으로
    처리해 나가도록 구성되어 있다. 즉, WCF를 통해 Client가 서비스를 호출하면 .Net의 메서드 호출이 XML Message로 
   변환하는 작업을 수행하는 채널
을 거치고, 필요하다면 Message에 추가적인 보안 설정을 수행하는 채널
    통과하며, 최종적으로 메시지를 트랜스포트 프로토콜을 사용하여 네트워크로 흘려보내는 트랜스포트 채널을 통과한다.

    이렇게 여러 채널들 중 필요한 채널들의 파이프라인을 구성해주는 역할을 하는 것이 Channel Factory객체이며
    ChannelFactory<T> Class에 의해 구현되어 있다. Gereric Type이며, Service의 Contract Interface를 매개변수
    로 받아 WCF의 내부 Channeling을 구성하고 Proxy 객체를 생성하여 반환해 준다.

    Proxy 객체는 Service의 Contract Interface타입을 갖게되며, Proxy객체는 Interface 매서드 호출을 XML Message로
    변환하고 다양한 채널을 통과하면서 이 XML Message를 처리하고 최종적으로 Service에 전달한다.

     Proxy객체는 WCF Service Session과도 연관이 깊으므로 Close나 dispose작업은 매우 중요하다.


4. Proxy객체를 사용하여 사용



    Service의 반환 전과 반환 후의 xml 을 비교해 보면 아래와 같다






'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 Hosting  (0) 2011.08.18
WCF Service programming  (0) 2011.08.18
WCF 이론  (0) 2011.08.17