-
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