WCF(Windows Communication Foundation) 애플리케이션 모델은 분산 애플리케이션의 통신 요구 사항의 큰 부분을 해결하도록 설계되었습니다. 그러나 기본 애플리케이션 모델 및 시스템 제공 구현이 지원하지 않는 시나리오는 항상 있습니다. WCF 확장성 모델은 전체 애플리케이션 모델을 대체하는 시점까지 모든 수준에서 시스템 동작을 수정할 수 있도록 하여 사용자 지정 시나리오를 지원하기 위한 것입니다. 이 항목에서는 확장의 다양한 영역을 간략하게 설명하고 각각에 대한 자세한 정보를 가리킵니다.
확장할 영역
다음을 확장할 수 있습니다.
애플리케이션 런타임입니다. 이렇게 하면 애플리케이션에 대한 메시지 디스패치 및 처리가 확장됩니다. 이 영역에는 보안 시스템, 메타데이터 시스템, serialization 시스템, 애플리케이션을 기본 채널 시스템과 연결하는 바인딩 및 바인딩 요소 확장도 포함됩니다.
채널 및 채널 런타임입니다. 이렇게 하면 메시지 수준에서 작동하는 시스템을 확장하여 프로토콜, 전송 및 인코딩 지원을 제공합니다.
호스트 런타임입니다. 그러면 호스팅 애플리케이션 도메인의 관계가 채널 및 애플리케이션 런타임으로 확장됩니다.
애플리케이션 런타임 확장
WCF 애플리케이션에서는 해당 채널로 향하는 메시지와 애플리케이션 자체를 대상으로 하는 메시지 간에 차이가 있습니다. 채널 메시지는 보안 대화 설정 또는 신뢰할 수 있는 세션 설정과 같은 일부 채널 관련 기능을 지원합니다. 이러한 메시지는 애플리케이션 런타임에서 사용할 수 없습니다. 애플리케이션 계층을 포함하기 전에 처리됩니다.
애플리케이션 메시지에는 사용자 또는 고객이 만든 클라이언트 또는 서비스 작업을 대상으로 하는 데이터가 포함됩니다. 이러한 메시지는 필요에 따라 메시지 또는 개체 형식으로 애플리케이션 수준 확장 시스템에서 사용할 수 있습니다.
모든 메시지는 채널 시스템을 통과합니다. 애플리케이션 메시지만 채널 시스템에서 애플리케이션으로 전달됩니다. 새 채널 수준 기능을 만들려면 채널 시스템을 확장해야 합니다. 새 애플리케이션 수준 기능을 만들려면 서비스 또는 클라이언트 런타임(디스패처 및 채널 팩터리 각각)을 확장해야 합니다. 애플리케이션 런타임 확장에 대한 자세한 내용은 ServiceHost 및 서비스 모델 계층 확장을 참조하세요.
보안 확장
토큰 및 자격 증명과 같은 사용자 지정 보안 메커니즘을 빌드하려면 보안 시스템을 확장해야 합니다. 자세한 내용은 보안 확장을 참조하세요.
메타데이터 확장
메타데이터를 기본값과 다르게 노출하려면 메타데이터 시스템을 확장해야 합니다. 자세한 내용은 메타데이터 시스템 확장을 참조하세요.
직렬화 확장
사용자 지정 인코더를 빌드하거나, 데이터 서로게이트를 제공하거나, 전송된 데이터의 사용자 지정과 관련된 기타 작업을 제공하려면 serialization 시스템을 확장해야 합니다. 자세한 내용은 인코더 및 직렬 변환기 확장을 참조하세요.
바인딩 확장
전송 또는 프로토콜 채널을 애플리케이션 계층과 연결하려면 바인딩 시스템을 확장해야 합니다. 자세한 내용은 바인딩 확장을 참조하세요.
채널 시스템 확장
사용자 지정 전송 또는 프로토콜 기능을 지원하는 채널을 만들려면 채널 계층 확장을 참조하세요.
서비스 호스팅 시스템 확장
서비스 전체 애플리케이션 모델을 수정하려면 클래스를 확장 System.ServiceModel.ServiceHostBase 해야 합니다. 자세한 내용은 ServiceHost 및 서비스 모델 계층 확장을 참조하세요.
호스팅 애플리케이션 도메인과 서비스 호스트 간의 관계를 수정하려면 클래스를 System.ServiceModel.Activation.ServiceHostFactory 확장해야 합니다. 자세한 내용은 ServiceHostFactory를 사용하여 호스팅 확장을 참조하세요.