ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • WCF 맛보기
    .NetFramWork/WCF 2022. 7. 6. 17:04

    01. WCF 걸음마

    서비스 종점 서비스 종점을 구성하는 서비스 주소, 바인딩, 계약의 개념
    서비스 구현에 필요한 서비스 호스트
    서비스의 클라이언트를 구성하는 요소

     

         WCF?

            - 웹 서비스 기반의 통신 프레임워크

               (callee, service) <==> (caller, client)

            - 클라이언트와 서비스 사이에서 상호작용하며 둘 사이의 통신을 보쉽고 강력하게 해 주는 역할

            - 메시징 프레임워크다.

               WCF기반을 통해 클라이언트와 서비스는 XML을 주고받는다.

     

     

    주소, 바인딩, 계약의 개념

    WCF ABC ( Address, Binding, Contract)

     

    WCF에서의 서비스 주소란?

      클라이언트가 서비스를 호출하기 위해 사용되는 주소

    일반적으로 말하는 인터넷 주소

       바인딩이 어떤 프로토콜을 사용하는 가에 따라 그 모양새가 조금씩 차이가 날수 있음을 유의

       Ex) http://www.contoso.com/wcf/testservice.svc

          net.tcp://appserver:2100/data/stockinfo.svc

          net.msmq://server/AsyncService

           

     WCF에서의 바인딩

        WCF 서비스를 네트워크를 통해 호출할 때 고려해야 할 다양한 요소들의 집합

    네트워크 통신을 할 때 고려해야 할 사항
         - 어떤 프로토콜을 사용할 것인가?  ( TCP, HTTP, FTP )
         - 데이터 포맷은 어떤 방식을 사용할 것인가? ( 바이너리, 텍스트, MIME )
         - 네트워크 보안을 적용할 것인가? 적용한다면 어떤 보안 방식을 취할 것인가?( SSL, 암호화 등)
         - 트랜잭션 처리, 비동기 전송 등의 진보된 기능을 사용할 것인가?

     

       , WCF에서의 바인딩은 통신에 필요한 다양한 요소들을 정의

        - WCF 바인딩은 HTTP,. TCP, 명명된 파이프, MMSQ, P2P 등의 다양한 프로토콜 중 하나를 사용하면서 인터넷 표준, 바이

    너리/텍스트 메시지 인코딩 등의 네트워킹에 필요한 요소를 켜거나 끌 수 있다.

       

     

    WCF에서의 계약

       서비스에 대한 인터페이스

       어떤 기능을 제공하고 각 기능의 매개변수가 어떠한지를 기술

    public interface IBankingContract
    {
        decimal Deposit(string account_id, decimal amount);
    }

     

      

    종점의 개념

       WCF 서비스의 핵심적인 요소는 주소, 바인딩, 계약이다.

       WCF 에서는 이들 세 가지 요소를 합쳐서 서비스 종점(endpoint)이라 부르며 WCF 서비스는 반드시 하나 이상의 종점을

    갖는다.

     

    서비스가 복수 개의 종점을 제공할 수 있다는 것은 이전의 닷넷 기반 통신 기술들인 ASP.NET 웹 서비스(ASMX), 닷넷 리모

    , COM+ 이 따라올 수 없는 WCF만의 독특하고 유연한 장점이다.

     

    [service] 1개의 서비스가 2개의 종점을 가진다고 가정 (HTTP기반 바인딩 / TCP 기반 바인딩)
    [client1] HTTP 프로토콜을 사용하는 클라이언트는 HTTP 기반의 종점을 통해 서비스 호출
    [client2] TCP 프로토콜을 사용하는 클라이언트는 TCP 기반의 종점을 통해서 서비스를 호출
    *) WCF 서비스는 어떤 바인딩을 사용하는가에 따라 서비스 구현코드나 방식이 달라지지 않는다.
    *) 클라이언트 입장에서는 성능적으로 우수한 프로토콜을 골라서 사용할 수 있다.

     

     

     

     

    서비스 호스트와 클라이언트

    [서비스 호스트]

    WCF를 이용하여 서비스를 구현하면 이 서비스는 WCF 호스트에 의해 호스팅되어야만 클라이언트의 호출을 받을 수 있다.

    호스팅 환경은 일반 닷넷 EXE 어플리케이션 혹은 IIS를 이용하여 구축한다.

    WCF가 제공하는 호스트는 다중 스레드 풀(multi-thread pool)을 완벽하게 지원한다.(클라이언트의 동시 호출(concurrent call)

    에 대한 고민을 해결해 줌

     

     

    [클라이언트]

    서비스 호출시 WCF 프레임워크의 도움을 받는다.

      - 서비스 계약으로부터 서비스가 제공하는 메소드를 알게 됨

      - WCF 런타임과 유틸리티 도구(tool)를 이용하여 서비스의 계약 정보로부터 서비스에 대한 프록시 클래스를 생성한다.

      - WCF 런타임이 적절하게 서비스를 찾고 XML 메시지를 전송할 수 있도록 호출하고자 하는 서비스의 종점에 대한 정보

    를 제공한다.

     

     

     

    [ 서비스 프록시와 서비스 호스트 작동 방식]

    1)     [client] 서비스 프록시를 통해 서비스 호출

    2)     [proxy] WCF런타임을 통해 닷넷 메소드 호출을 XML 메시지로 변경

    3)     [servicehost]  서비스 호스트에 의해 호스팅된 서비스는 바인딩이 지정하는 네트워크 프로토콜의 리스너를 구동

    XML 메시지를 수신

    4)     [listener] 수신된 XML 메시지를 디스패처에게 전달

    5)     [dispatcher] 메시지 내용을 해석하여 적절한 서비스의 메소드를 호출

    *) 이러한 작업은 서비스 호스트, 보다 정확하게 말해 WCF 런타임이 제공하는 스레드 풀의 한 스레드를 이용하게 되므

    로 동시에 여러 클라이언트가 서비스를 호출하더라도 동시 액세스가 가능하다.

    '.NetFramWork > WCF' 카테고리의 다른 글

    WCF 구현  (0) 2022.07.06
    WCF란 무엇인가?  (0) 2022.04.20
    웹서비스란? (XML WebService)  (0) 2022.04.20

    댓글

Designed by Tistory.