티스토리 뷰
1. WCF
- WCF(Windows Communication Foundation)의 약자로 네트워크 분산 서비스를 구축, 구성 및 배포를 위해 만들어진 플렛폼 및 런타임 시스템으로 서비스(Service), 서비스 호스트(Service Host), 서비스 클라이언트(Service Client)로 구성되어 진다. 2006년에 처음 출시하여 지속적으로 업데이트되고 있다.
2. WCF에서의 중요한 개념
1) 메시지(Message): WCF를 통해서 전송되는 데이터 블럭으로 SOAP XML로 되어 있다.
2) 엔드포인터(EndPoint): 메시지를 송,수신하는데 사용하는 주소, 메시지 세트 정의, 메시지 전송방법등을 정의한다.
3) 주소(Address): 메시지를 수신할 정확한 위치를 URL형태로 진정한다.
4) 바인딩(Binding): 엔드포인터가 사용하게 될 프로토클, 메시지 인코딩 형식, 보안과 관련된 통신방식을 정의한다.
5) 계약(Contracts): 엔드포인터가 클라이언트에 제공하는 기능을 정의하며 인터페이스 이름으로 구성된다.
6) 호스팅(Hosting): 서비스를 운영하는 방식으로 자체호스팅, IIS 호스팅, WAS 호스팅등의 방법이 있다.
7) 메타데이터(Metadata):
8) 클라이언트(Client):
9) 채널(Channel): 클라이언트가 서비스와 통신하는데 사용하는 매체를 말한다.
10) SOAP(Simple Object Access Protocol)로 Header, Body로 구성된 xml 문서다.
11) 이점
- 다른 서비스와 상호 운용이 가능하다.
- ASMX(Active Server Method) 웹 서비스 보다 더 나은 안전성과 보안을 제공한다.
- 접속 설정 및 보안 적용에 코드를 크게 변경할 필요가 없다.
- 구성 파일의 변경으로 접속 설정을 통합할 수 있다.
- AJAX를 통합하며 JSON을 지원한다.
12) 단점
- 요구사항에 맞는 서비스 설계가 어렵다.
13) WCF에 결합된 기술
3. WCF 와 WEB Service 의 차이점
구분 | WCF | Windows Web Service |
호스팅(Hosting) | IIS, Windows activation service, Self-hosting, Windows Service 모두 지원한다. | IIS에서만 지원한다. |
프로그램작성(Programming) | [ServiceContract] 속성을 추가한다. | [WebService] 속성을 추가한다. |
모델(Model) | [OperationContract]를 사용한다. | [WebMethod]를 사용한다. |
운영(Operation) | One-Way, Request-Response, Duplex | One-Way, Request-Response, Duplex |
XML | System.Runtime.Serialization 사용 | System.Xml.serialization 사용 |
해석(Encoding) | XML1.0, MTOM, Binary, Custom | XML1.90, MTOM, DIME, Custom |
전송(Transports) | HTTP, TCP, Named pipes, MSMQ, P2P, Custom | HTTP, TCP, Custom |
프로토클(Protocols) | Security, Reliable messaging, Transactions | Security |
4. WCF 구성
WCF를 구성하는 각 계층은 아래 그림과 같이 구성되어 있다.
1) 계약(Contracts) 계층
계약(Contracts)계층은 서비스에서 전달할 정보에 대한 정의와 어떤 서비스를 제공할지를 선언한다.
- Data Contracts: 서비스 제공자가 송, 수신할 데이터 타입과 변수를 선언한다.
- Message Contract: 서비스의 송,수신되는 SOAP 메시지를 통제한다.
- Service Contract: 서비스의 엔드포인터(Endpoint)가 무엇을 제공하고 통신하는지를 선언한다.
- Policy and Binding: 프로토콜과 같이 통신에 사용할 정책들에 대하여 선언한다.
2) 서비스 실행(Service Runtime) 계층
서비스 런타임 계층은 서비스 운영 또는 서비스 런타임 중에 발생하는 서비스의 동작을 선언하고 관리한다.
- Throttling Behavior: 동시에 처리할 수 있는 메시지의 수를 정의한다.
- Error Behavior: 서비스 런타임 중에 오류가 발생할 경우 수행할 작업을 정의한다.
- Metadata Behavior: 메타 데이터가 외부에 노출되는지 여부를 정의한다.
- Instance Behavior: 메시지를 처리할 수 있는 인스턴스의 수를 정의한다.
- Message Inspection: 서비스 제공자가 메시지의 전체 또는 일부를 검사할 수 있도록 한다.
- Transaction Behavior: 서비스가 런타임중에 실폐할 경우 드랜잭션을 롤백할 수 있는 기능을 제공한다.
- Dispatch Behavior: 메시지를 처리하고 처리하는 방법을 결정한다.
- Concurrency Behavior: 서비스또는 서비스의 인스턴스가 병렬로 처리하는 기능을 제공한다.
- Parameter Filtering: 메시지의 해더에 따라 사전 설정작업을 실행한다.
3) 메시지(Messaging) 계층
메시징 계층은 서비스 통신중에 사용할 수 있는 형식과 데이터 교환 패턴을 정의한다.
- WS Security Channel: WS 보안 형태의 메시지 전달을 가능하게 한다.
- WS Reliable Message Channel: WS 신뢰성 메시지 규격의 메시지 전달을 가능하게 한다.
- Encoders: Binary/MTOM/Text/XML: 메시지를 어떤 형태로 해석하는지를 정의한다.
- HTTP Channel: HTTP 프로토클을 통해서 메시지가 전달되도록 정의한다.
- TCP Channel: TCP 프로토클을 통해서 메시지가 전달되도록 정의한다.
- Transaction Flow Channel: 전송된 메시지 패턴을 관리한다.
- NamedPipe Channel: 프로세스간 통신을 가능하게 한다.
- MSMQ Channel: MSMQ를 가능하게 한다.
4) 활성화 및 호스팅(Activation and hosting) 계층
서비스 활성화를 어떤 형태로 할지를 결정한다.
- IIS: Internet Information Service를 사용하여 COM+를 등록하고 HTTP 프로토클을 사용한다.
- Windows Activation Service: Windows WAS이며IIS와 같이 제공되며 HTTP, HTTP 기반 통신이 가능하다.
- .EXE: 실행파일을 실행하여 서비스로 프로토클 선택과 자체 주소 체계를 설정하는데 있어 유연성을 제공한다.
- Windows Service: Windows Service에 등록하여 호스팅을 제공한다.
'C# Language > C# NetCore' 카테고리의 다른 글
Open SSL 사용 방법 (0) | 2021.08.09 |
---|---|
[PLC] PLC 연계 프로그램 (0) | 2019.12.18 |
[NetCore] IIS를 사용하여 배포하기 (2) | 2019.11.28 |
[WCF] 5. 자체호스팅(Self Hosting) (0) | 2019.10.10 |