본문 바로가기
개발후기-프레임워크

WCF란, WCF사용이유, WCF 특징, WCF 구조

by devscb 2021. 12. 6.
반응형



WCF란


WCF(Windows Communication Foundation)는 서비스 지향 애플리케이션을 구축하기 위해 마이크로 소프트에서 개발한 프레임워크입니다.
WCF는 웹 서비스 및 웹 서비스 클라이언트를 만들 수 있도록 설계되었습니다.
WCF를 사용하면 데이터를 한 서비스 엔드포인트에서 다른 서비스 엔드포인트로 비동기 메시지로 전송할 수 있습니다.


WCF의 특징


- 서비스지향성 : WCF를 사용하면 서비스 지향 응용 프로그램을 만들 수 있습니다.
서비스 지향 아키텍처(SOA, Service-oriented Architecture)는 데이터를 송수신하기 위한 웹 서비스에 대한 의존합니다.

- 정보 처리 상호 운용
WCF는 웹 서비스 상호 운용성을 위한 현대 산업 표준 구현체입니다.

- 다중 메시지 패턴
메시지 교환방식으로 여러 패턴을 제공합니다.
가장 일반적인 패턴은 요청/응답 패턴으로, 하나의 엔드포인트가 제2 엔드포인트로부터 데이터를 요청합니다.
하나의 엔드포인트가 응답에 대한 기대 없이 메시지를 보내는 단방향 메시지와 같은 다른 패턴도 있다.
더 복잡한 패턴은 두 엔드포인트가 인스턴트 메시징 프로그램과 유사하게 연결을 설정하고 데이터를 앞뒤로 전송하는 이중 교환 패턴도 존재합니다.

- 서비스 메타데이터
WCF는 WSDL, XML 스키마, WS-Policy 등 업계 표준에 명시된 포맷을 활용해 서비스 메타데이터 퍼블리싱을 지원합니다.
이 메타데이터는 WCF 서비스에 액세스하기 위한 클라이언트를 자동으로 생성하고 구성하는 데 사용될 수 있습니다다.
메타데이터는 HTTP 및 HTTPS를 통해 게시되거나 웹 서비스 메타데이터 교환 표준을 사용할 수 있습니다.

- 데이터 계약
Visual C# 또는 Visual Basic을 사용하여 서비스를 코딩할 때 데이터를 처리하는 가장 쉬운 방법은
데이터 엔티티에 속하는 속성을 가진 데이터 엔티티를 나타내는 클래스를 만드는 것입니다.
WCF는 이러한 쉬운 방식으로 데이터와 작업하기 위한 포괄적인 시스템을 포함합니다.
데이터를 나타내는 클래스를 작성하면 서비스는 클라이언트가 설계한 데이터 유형을 준수할 수 있는 메타데이터를 자동으로 생성합니다.

- 보안
메시지는 프라이버시를 보호하기 위해 암호화될 수 있으며, 사용자가 메시지를 수신할 수 있도록 허용되기 전에 자신을 인증하도록 요구할 수 있습니다.
보안은 SSL 또는 WS-SecureConversation과 같은 잘 알려진 표준을 사용하여 구현될 수 있습니다.

- 다중 전송 및 인코딩
메시지는 여러 내장 전송 프로토콜 및 인코딩 중 임의의 것으로 전송될 수 있습니다.
가장 일반적인 프로토콜 및 인코딩은 WWW(World Wide Web)에서 사용하기 위해 HTTP(HyperText Transfer Protocol)를 사용하여
텍스트 인코딩된 SOAP 메시지를 보내는 것입니다.
또는 WCF를 사용하면 TCP, 명명된 파이프 또는 MSMQ를 통해 메시지를 보낼 수 있습니다.
이러한 메시지들은 텍스트로서 또는 최적화된 이진 포맷을 사용하여 인코딩될 수 있습니다.
이진 데이터는 MTOM 표준을 사용하여 효율적으로 전송할 수 있습니다.
제공된 전송 또는 인코딩이 필요에 맞지 않으면 사용자 지정 전송 또는 인코딩을 만들 수 있습니다.

- 신뢰할 수 있고 대기 중인 메시지
WCF는 WS-Reliable Messaging을 통해 구현되고 MSMQ를 사용하여 신뢰할 수 있는 세션을 사용하여 신뢰할 수 있는 메시지 교환을 지원합니다.

- 트랜잭션
WCF는 WS-Atomic Transactions, System.Transactions namespace, Microsoft Distributed Transaction Coordinator의 세 가지 트랜잭션 모델 중 하나를 사용하여 트랜잭션을 지원합니다.

- AJAX 및 REST 지원
WCF는 SOAP envelope에 포함되지 않은 평범한 XML 데이터를 처리하도록 구성될 수 있습니다.
WCF는 또한 ATOM(대중적인 RSS 표준)과 같은 특정 XML 포맷과 JSON(Java Script Object Notation)과 같은 비XML 포맷을 지원하기 위해 확장될 수 있다.

- 확장 가능성
WCF 아키텍처에는 여러 확장성 포인트가 있습니다.
추가 기능이 필요한 경우 서비스의 동작을 사용자 정의할 수 있는 여러 항목 포인트가 있습니다.


WCF 구현체 구조


WCF를 개발한 구현체의 구조는 아래와 같습니다.
 


개발자는 위 구조에서 Host에서 처리할 서비스를 작성하고,
Client에서는 메소드 호출을 하여 Host의 서비스를 사용하면 됩니다.
따로 connection 관리등을 신경쓰지 않고, 클라이언트 코드를 작성하듯히 메소드호출을 해주면 됩니다.
상세한 코드 내용에 대해서는 추후 내용을 준비하여 블로그에 게시해보겠습니다.

Host와 Client은 엔드포인트(EndPoint)라고 하는 통로를 통해 통신하게 됩니다.
엔드포인트(EndPoint)는 ABC로 구성되어 있습니다.
A는 Address, B는 Binding, C는 Contract로
Address(주소)는 어디에 접속할지이며, Uri, 메시지 헤더 등입니다.
Binding(바인딩)은 어떻게 접속할지를 지정하는 것입니다. (TCP 또는 HTTP 를 쓸지, 메시지에 사용할 인코딩 등)
Contract(컨트랙트, 계약)는 접속에서 무엇을 할지를 설정하는 것입니다.(메시지 형식, 클라이언트가 호출할 수 있는 작업 등)

총평


대세는 rest 이지만, 아직까지 WCF를 쓰는곳도 존재하며, 심지어 신규프로젝트를 하는데도 WCF를 사용하는 곳이 있습니다.
마이크로소프트에서는 WCF에서는 쉽게 프로그래밍할 수 있다고 하지만, 저는 rest부터 접해와서 WCF가 너무 복잡하다고 생각합니다.
C로 socket 프로그래밍도 경험해보았는데, 기초적인지 단순해서인지 오히려 이쪽이 더 쉽다고 느껴질 정도였습니다.
하지만 C socket프로그래밍은 단순한 부분만 개발을 해봐서 대규모 분산 처리 시스템에서는 WCF가 부하 관리, 보안 등을 따로 신경쓰지 않아도 잘 처리해주지 않나 싶습니다.
그럼에도 신규프로젝트를 한다면 WCF는 사용하고 싶지 않습니다.
혹시 WCF에 대해 찾아보시는 분이 많다면 좀 더 깊이있게 블로그에서 다뤄보겠습니다.



WCF란, WCF사용이유, WCF 특징, WCF 구조
#Csharp,#c샵,#microsoft,#wcf,#endpoint,#windows,#communication,#foundation,#마이크로소프트,#vba,#.net,#닷넷

https://devscb.com/post/73

 

What is WCF, reasons for using WCF, WCF characteristics, WCF structure

What is WCF?Windows Communication Foundation (WCF) is a framework developed by Microsoft for building service-oriented applications.WCF is designed to help you create web services and web service cli

devscb.com

 

728x90
반응형

댓글