Microsoft Corporation
February 2006
주 이 주제는 프리 릴리스 자료이며, 향후 제품 출시 시에 변경될 수도 있습니다.
지금까지 소개된 Vista 개발자 에피소드는 다음과 같습니다.
WCF(Windows Communication Foundation)는 서비스 지향의 응용 프로그램을 구축 및 실행하기 위한
프레임워크입니다. WCF는 기존의 Microsoft 접속 기술을 통합 및 확장한 것이며, 기반이 되는 통신 프로토콜에 의존하지 않는
단일의 프로그래밍 모델을 제공합니다. WCF 응용 프로그램에서는 오픈 스탠더드와 오픈 프로토콜 사용으로 다른 기술과의 상호 운용
가능합니다. WCF는 WinFX 런타임의 핵심 구성요소이며, Windows Vista, Windows XP와 Windows Server
2003 에서도 사용 가능합니다.
Windows Communication Foundation 의 자세한 내용은 Windows Communication
Foundation(http://windowscommunication.net/)
사이트 (영어) 및 Web Services and Other Distributed Technologies Developer Center(http://msdn.microsoft.com/webservices/)
사이트 (영어)를 참조해 주세요.
특징과 이점
WCF(Windows Communication Foundation)의 주된 이점은 서비스 지향 아키텍처 (SOA) 지원, 메시징 모델의
유연한 지원, 통합화 된 프로그래밍 모델, 프로토콜 중립성, 신뢰성 향상, 표준 베이스의 상호 운용성, 통합된 보안과 메시징 서비스 및
확장성이 높은 유연한 아키텍처입니다.
서비스 지향 아키텍쳐 (SOA)
WCF(Windows Communication Foundation)는 서비스 지향의 아키텍처 및 프로그래밍에 근거합니다. 서비스 지향은
구성요소 소프트웨어, 메시지 지향 미들웨어 및 분산형 오브젝트 컴퓨팅으로부터 얻을 수 있는 정보를 적용한 객체 지향을 보완하는 중요한
역할을 합니다. 객체 지향 개발에서는 상호의존 클래스로부터 구축된 응용 프로그램을 중시하는 반면, 서비스 지향의 개발에서는 자율적인
서비스 세트에서 구축되는 시스템을 중시합니다. 각 서비스의 내부 구현은 객체 지향이 가능합니다.
WCF로 구축된 클라이언트와 서버의 응용 프로그램은 WinFX가 공급하는 클래스와 개발자가 작성하는 클래스로 구성됩니다. 복잡한
응용 프로그램의 경우, 구성요소 아키텍처라 불리는 중간 레벨의 조직이 적용되는 경우도 있습니다.
배포 되는 상호작용 형태 서비스는 시스템으로 불립니다. SOA의 상호작용은 소 결합 이지만, 모든 통신이 공개된 계약 과 정책,
표준화 된 프로토콜 및 스키마화 된 정보에 근거하며 계약에는 공개된 인터페이스, 운용 및 대응 메시지가 기술되어 있습니다.
통합화 된 프로그래밍 모델
WCF(Windows Communication Foundation)는 차세대의 접속 기술이며, 기존의 접속 기술의 특성을 최적으로 조합해
확장하는 것으로, 통합된 개발 및 런타임 경험을 실현합니다. 단일한 API 와 일관성이 있는 간단한 프로그래밍 모델을 제공하기 위해
다음의 기술을 지원합니다.
- 효율적인 원격 프로시저 호출 (RPC) 기능을 위한 DCOM 및 .NET 리모팅 지원.
- 간단한 구성 및 상호 운용이 가능한 Web 서비스를 위한 ASP.NET Web 서비스 (ASMX) 지원.
- 동기, 분산 트랜잭션, 기본 보안 및 분산형 COM+ 서비스를 위한 .NET Framework Enterprise
Services 지원.
- 개방적인 Web Service 표준 (총칭은 WS-* 사양)을 위한 Web Services Enhancements
(WSE) 지원. 보안 신뢰성이 높은 메시징 및 분산 트랜잭션의 사양이 포함됩니다.
- System.Messaging 네임 스페이스 기술과 호환성이 있는 메시지 큐잉.
메시징 모델에 대한 유연한 지원
종래의 Web 서비스는 요청/응답의 메시지 교환 패턴을 전제로 하고 있습니다. 이 경우, 클라이언트가 요청 메시지를 발행하여,
서비스는 답신 메시지로 응답합니다. 이 패턴은 HTTP 가 송신에 대한 보장이 없는 상태 비저장(Stateless) 프로토콜로 특히
HTTP에 적절합니다. 대조적으로 WCF(Windows Communication Foundation)에서는 다양한 메시지 솔루션을 사용할 수
있습니다.
다음의 두가지 주요한 통신 상태 모델이 지원 됩니다.
- 상태 비저장 (Stateless) 모델- 지 수신이 거의가 보장되지 않습니다. 상태 비저장
모델은 현재의 Web 서비스에 상당하는 것으로, 상대적으로 중요하지 않은 정보를 한방향으로 브로드캐스트 할 때 편리합니다.
- 상태 저장 (Stateful) 모델 - 두 개의 서비스 오브젝트간에 통신 세션을 작성합니다.
상태 저장 모델은 세션 상태를 사용하여, 향상된 메시지 기능을 인터넷 경유로 제공 합니다. 이러한 기능에는 콜백 메소드, 이벤트,
광범위한 분산 트랜잭션 및 엔터프라이즈 응용 프로그램에 필요한 신뢰성이나 지속성 보장 등이 포함됩니다.
다음의 세가지 기본적인 메시지 교환 패턴이 지원 됩니다:
- 데이터 그램 - 일방향 통신으로 응답은 없습니다
- 요청/응답 - 신으로 응답이 있습니다.
- 쌍방향 - 쌍방향 통신입니다.
주 요청/응답 및 쌍방향의 메시지는 동기 또는 비동기에 송신할 수 있습니다. 각 노드는
클라이언트, 서비스 또는 그 양쪽 모두의 역할을 완수할 수 있습니다.
주 WCF(Windows Communication Foundation) 는 다양한 전송과 메시징 프로토콜을 제공하여, 사용자 지정 전송과
사용자 지정 프로토콜을 지원 합니다. 비교적 복잡한 메시징 솔루션은 이러한 기본 기능에 추가해 구축할 수 있습니다.
프로토콜의 중립성과 유연성
WCF(Windows Communication Foundation) 는 정의된 통신바인딩 (바인딩과는 통신 프로토콜을 포함한 일련의 통신
특성입니다)으로 광범위한 공통 사용 시나리오를 제공합니다. 다만, 프로토콜에 의존하지 않는 WCF 설계는 다음과 같은 유연성이 있습니다:
- 서비스와 클라이언트간에 교환되는 메시지는 메시지의 교환에 사용되는 프로토콜에 의존하지 않는 계약으로 정의됩니다.
- 단일의 서비스가 복수의 프로토콜을 동시에 지원 할 수 있습니다.
- 플러그 가능한 통신 인프라에 의해 사용자 지정 프로토콜은 간단한 방법으로 정의하여 사용할 수 있습니다.
프로토콜은 필수 코드와 구성 파일의 양쪽 모두로부터 선택할 수 있습니다. 일반적으로 개발자는 기정의 프로토콜이나 최소 요건 등의
응용 프로그램의 논리를 구현, 서비스 관리자는 실제로 사용하는 프로토콜 등의 상세한 구성을 배포시에 지정합니다. 이러한 배포시의 정책은
재코딩이나 재컴파일이 필요 없기 때문에, 관리자는 서비스 또는 클라이언트 배포를 조정할 수 있습니다.
신뢰성
다음과 같은 이유로 WCF(Windows Communication Foundation)로 구축된 솔루션의 신뢰성과 견고성이 보장됩니다:
- SOA 는 소 결합으로 자율적인 클라이언트와 서비스를 필요로 하여 유닛의 독립성이 향상되어 서비스의 손실이나 파괴로 솔루션
전체가 영향을 받지 않습니다.
- 메시지 송신은 WS-Reliable Messaging 프로토콜을 사용하고, 전송 레벨 또는 메시지 레벨로 보장되어,
메시지가 일관된 패턴 (정확한 순서로 1 회만 송신 등)의 송신을 보장합니다.
- 한층 더 향상된 MSMQ를 이용한 메시지 큐잉이 지원 됩니다.
- 강력한 도구를 사용해 중대한 장해 발생시, 응용 프로그램의 내부의 예외와 메시지 외부의 장해를 간결하고 일관된 방법으로
처리합니다.
- 분산 트랜잭션 지원으로 동작의 일관성이 강화되어 프로세스의 결합이 완만하고, 솔루션의 신뢰성이 향상합니다.
- 가장 중요한 점은 WCF 에 의해 각 조직 또는 프로젝트는 독자적인 메시징 인프라를 개발할 필요가 없기 때문에, 전문
분야의 코드 개발에 전념할 수 있습니다.
확장성
WCF(Windows Communication Foundation)는 다음과 같이 확장성을 지원 합니다:
- WCF는 충분한 확장성을 갖춘 오브젝트 모델을 제공하여, 제품 사용자를 지정하여 특정 고객 요구에 맞출 수 있습니다.
- 구성 가능한 프로토콜 채널을 사용하고, 기존의 프로토콜의 편성이나 스택으로 시나리오 요건을 채울 수 있습니다.
- 플러그 가능한 확장 클래스를 지원 하도록 설계된 아키텍처로 프로토콜, 전송, 동작, 바인딩, 직렬변환기(serializer),
메시지 검열자 및 검증 컨트롤을 사용자 지정 할 수 있습니다. 이러한 확장 타입에 대한 자세한 내용은 「Windows SDK」의
「Extending Windows Communication Foundation」를 참조해 주세요.
개발자의 관점에서는 이러한 확장 기능은 간단하고 강력합니다.
통합과 상호 운용성
WCF(Windows Communication Foundation)는 다른 Web 서비스 및 기존의 Microsoft 메시지 기술의 높은
호환성을 보장합니다. 많은 경우, 상호 운용성은 대규모 조직 전체 솔루션의 주요한 문제가 됩니다 (엔터프라이즈 응용 프로그램 통합
(EAI) 및 비즈니스 투 비즈니스 통합 등). 메시징 상호 운용성의 문제는 다음의 두 가지 카테고리로 분류됩니다:
- 다른 메시징 플랫폼의 경우 (operating system와 프로그램 언어가 다를 가능성이 있습니다)
- 다른 Microsoft 서비스와 메시지 기술의 경우
메시징의 관점에서는 WCF는 플랫폼에 의존하지 않습니다. WCF 는 오픈 WS-* 표준을 사용해 메시지의 전송, 포맷, 해석을
실행하기 때문에, 같은 표준을 사용하는 다른 메시징 시스템과의 상호 운용이 가능합니다. 특히, WCF 서비스는 WS-I Basic
Profile (BP)에 근거한 와이어 프로토콜을 사용해 통신하는 시스템과 상호 운용합니다 (Web Services
Interoperability Organization (WS?I)는 상호 운용 가능한 메시징 표준의 개발과 촉진에 임하는 Web 서비스
리더로부터 완성되는 컨소시엄입니다). 예를 들어, WCF 는 기존의 ASP.NET Web 서비스 (ASMX)와 상호 운용합니다. 신뢰성,
보안 및 트랜잭션용의 WS-* 표준도 지원 되어 Web Services Enhancements for .NET Framework
(WSE) 3.0 과의 상호 운용이 가능합니다.
다음의 그림은 Web 서비스 스택으로, 각 레벨에서 지원되는 주요한 표준의 목록입니다.
또 Microsoft 는 WCF(Windows Communication Foundation)와 기존의 Microsoft 기술과의 호환성을
보장하는 것으로써, 분산 시스템의 구축을 가능하게 합니다 (엔터프라이즈 서비스, COM+ 서비스 및 메시지 큐잉 등). 이러한 기존의
기술을 사용해 구축된 응용 프로그램에서는 Web 서비스의 기능성을 간단하게 공개할 수 있습니다. WCF(Windows
Communication Foundation)는 표준의 Web 서비스 프로파일을 사용하고, 이러한 응용 프로그램과 통신할 수 있습니다. 대부분의 경우 .NET 리모팅, ASP.NET Web 서비스 및 .NET Framework Enterprise Services로
WCF(Windows Communication Foundation)를 네이티브로 사용하는 기존의 응용 프로그램의 이행은 간단하고 경제적입니다. 특정의 통합
방법에 대한 자세한 내용은 MSDN 온라인에 공개되어 있습니다.
일반적인 응용 프로그램 개발의 관점에서 WCF(Windows Communication Foundation)는 다른 관리 기술과 중단 없이
통합되고, .NET 의 상호 운용으로 비관리형 기술과도 통합됩니다.
통합화 된 보안 및 메시징 서비스
보안은 가장 중요한 검토 사항입니다. 메시지의 식별 정보, 기밀성, 보존성, 인증, 승인, 및 감사는, 전송 레벨 또는 메시지
레벨의 보안 기구에 의해 제공됩니다.
| 보안 레벨 |
예 |
설명 |
| 전송 |
HTTPS, SSL over TCP |
통신 스트림의 암호화에 의해 메시지 전체를 보호하는
point-to-point 보안. 전송 레벨 보안 스킴은 폭넓게 배포 되어 메시지 레벨 보안보다 효율적입니다. |
| 메시지 |
WS-Security 사양 패밀리 |
메시지의 컨텐츠 또는 그 일부가 암호화되는 엔드 투 엔드 보안. 메시지
레벨 보안 스킴은 전송 및 메시지 교환 패턴에 의존하지 않습니다. 처리가 저속화되는 경우가 있지만, 유연성과 확장성이
비약적으로 향상되어, 다양한 인증 스킴을 사용할 수 있습니다. |
WCF(Windows Communication Foundation)는 서비스를 구성해 보안 자격 정보를 복수의 기관에서 취득할 수 있는 점으로,
기본 레벨의 페더레이션을 제공합니다. 다양한 식별 정보와 승인 스킴을 사용하는 경우도 있습니다. 다른 분야의 보안 (인증, 감사, 부인
불능 및 자원 보호 등)은 .NET Framework 또는 Windows 운영 체제에 의해 제공됩니다.
기본적인 송신과 보안 및
다음의 광범위하고 향상된 메시지 서비스를 제공합니다.
- 메타데이터 - WS-Policy, WS- Policy Attachments 및 WS-
Metadata Exchange 프로토콜 (Web 서비스를 기술하는 WSDL 에 추가)이 지원 되어 서비스 메타 데이터를 동적으로
전달합니다.
- 메시지 큐잉 - WCF는 기반이 되는 전송으로서 MSMQ를 사용해, 메시지 큐잉 기능을
제공합니다. 기존의 메시지 큐잉 솔루션과의 통합 및 새로운 비동기 큐의 작성의 양쪽 모두가 지원 됩니다.
- 트랜잭션 - WS-Atomic Transaction 및 WS-Coordination
프로토콜이 지원 됩니다. 여기에는 System.Transactions 네임 스페이스가 사용됩니다. 이 서비스를 사용하면 두 개
이상의 노드가 사용 가능합니다. WS-* 프로토콜에 의한 분산 트랜잭션을 사용해 상호 운용을 실현하는 경우도 있습니다.
- 컨텐츠 베이스 루팅 - 루팅은 WS-Addressing 프로토콜과 사용자 지정 WCF 라우터
지원으로 사용 가능합니다. 루팅은 WCF 필터링 기능으로 컨텐츠 필터링에 의해 개선할 수 있습니다.
다른 서비스 (서비스 관리, 프로세스 오케스트레이션 및 메시지 이벤트 등)는 WCF(Windows Communication
Foundation) 에서는 직접 지원 되지 않습니다. 이러한 서비스는 Windows operating system나 다른 제품
(Microsoft BizTalk Server)에 의해 지원 됩니다. 또는 앞에서 말한 확장성 기구를 사용해 추가하는 것이 가능합니다.
참고: 「Top Ten Development
Opportunities」
기술된 내용은 극히 일부입니다. 자세한 내용은 도움말 파일 (다운로드)에서
볼 수 있습니다. 다음은 「Top Ten Development Opportunities」개요를 소개합니다.
Windows Vista는 다음의 세 가지의 주요한 개념을 중시합니다:
- 기본 처리 간소화
- 강력한 고객 접속형 시스템 구축
- 새로울 가능성 개척
기술 관점에서 이 세 가지 개념에 Windows Vista는 다섯 가지를 기반으로 합니다:
- 기초 부분
- 프레젠테이션
- 커뮤니케이션
- 데이터
- 생산성과 툴
다음 표는「Top Ten Development Opportunities」 목록입니다.
| 구분 |
기술 |
| Windows Vista 스타일 가이드 라인의 준수 |
데이터: 검색, 정리, 공유 |
| 사용자 경험의 고품질화 |
WPF(Windows Presentation Foundation) |
| 사용자에 의한 시각화, 정리 및 검색의 실현 |
데이터: 검색, 정리, 공유 |
| 안전한 실행 |
사용자 계정 제어 |
| 신뢰성 및 관리성에 관한 설계 |
Restart Manager |
| 고객 피드백 루프의 확립 |
FP(Windows Feedback Platform) |
| 접속형 시스템의 구축 |
WCF(Windows Communication Foundation) 및 피어 투 피어의 강화 |
| RSS 를 사용한 사용자에의 데이터의 제공 |
Web 피드 API |
| 문서 데이터에의 접근 |
XML Paper Specification (XPS) |
| 모빌리티의 구축 |
펜과 잉크의 API |