WCF? (Windows Communication Foundation)
- 서비스와 클라이언트 사이에서 SOAP(Simple Object Access Protocol: xml 기반의 메시지를 네트워크 상에서 교환하는 프로토콜) 형식의 메시지를 보내는 시스템을 만드는 런타임과 API 집합
- HTTP, TCP/IP, Named Pipe, MSMQ, P2P등 다양한 프로토콜 지원
- WS-Security, WS-AtomicTransaction, WS-ReliableMessaging등 웹서비스 스펙 지원
WCF의 구성 요소
1. Message: 독립적인 데이터 단위 통신에 사용되는 데이터 구조
2. EndPoint: 서비스를 호출하기 위한 액세스 포인트 (Address, Binding, Contract로 구성)
3. Service: 요청을 처리하기 위한 각각의 로직
End Point
메시지가 전송 또는 수신되는 구문
- Address: 서비스를 액세스 하기 위한 주소
- Binding: 메시지가 전송되는 방법을 설명하는 통신 메커니즘의 사양. 채널 스택에 포함될 채널들에 대한 구성 목록 설정
- Contract: 서비스에 대한 인터페이스. 서비스의 메소드. 관련 데이터 타입들
WCF를 이용해서 어떻게 서버를 만들것인가?
1. 계약
1-1 서비스 계약: 제공하는 서비스의 기능을 정의
1-2 데이터 계약: 서버와 클라이언트 사이에서 교환할 데이터를 추상적으로 설명한 것
2. 바인딩
2-1 바인딩의 종류
- WebHttpBinding: SOAP 메시지 대신 HTTP 요청(GET/POST)을 통해 노출되는 WCF 웹 서비스의 End point를 구성하는데 사용되는 바인딩
- NetTcpBinding: TCP 프로토콜을 사용하며 바이너리 인코딩을 수행한다.
WCF의 장점
1. 다양한 프로토콜 및 서비스 방식을 지원
2. 높은 생산성 및 안정성
3. 쉬운 디버깅
4. 네트워크 프로그래밍 전문가가 아니여도 서버 작업이 가능
5. 프로그래머가 로직 및 구조적 코딩에 집중할 수 있음
6. .net 프레임워크에서 제공하는 라이브러리 사용 가능
WCF의 단점
1. linux에서도 사용가능하지만 windows 상에서의 퍼포먼스를 보장할 수 없다.
출처: 최연승 / 넥슨
http://ndcreplay.nexon.com/NDC2014/sessions/NDC2014_0044.html
추가
https://docs.microsoft.com/ko-kr/dotnet/framework/wcf/?redirectedfrom=MSDN
https://docs.microsoft.com/en-us/aspnet/web-api/overview/older-versions/self-host-a-web-api
https://github.com/jacking75/semina_MobileServer_WCF
'NDC > Server' 카테고리의 다른 글
[NDC 2015] 피파온라인3 서버 구조와 85만 동접 포스트 모템 (0) | 2023.01.05 |
---|---|
[NDC 2014] WCF를 이용하여 쉽게 만드는 모바일 게임서버 (0) | 2022.10.21 |
[NDC 2014] 분산서버 구축의 ABC (0) | 2022.10.19 |
[NDC 2014] Rx와 Functional Reactive Programming으로 고성능 서버 어플리케이션 만들기 (0) | 2021.12.02 |
[NDC2013] 게임 서버 디자인 가이드 (0) | 2021.11.06 |