다음을 통해 공유


클라이언트 확장

호출 애플리케이션에서 서비스 모델 계층은 애플리케이션 코드의 메서드 호출을 아웃바운드 메시지로 변환하고, 기본 채널로 푸시하고, 결과를 애플리케이션 코드의 반환 값 및 출력 매개 변수로 변환하고, 결과를 호출자에게 다시 반환하는 작업을 담당합니다. 서비스 모델 확장은 클라이언트 또는 디스패처 기능, 사용자 지정 동작, 메시지 및 매개 변수 가로채기 및 기타 확장성 기능과 관련된 실행 또는 통신 동작 및 기능을 수정하거나 구현합니다.

이 항목에서는 WCF(Windows Communication Foundation) 클라이언트 애플리케이션에서 클래스와 ClientRuntime 클래스를 사용하여 ClientOperation WCF 클라이언트의 기본 실행 동작을 수정하거나 채널 계층에서 메시지를 보내거나 검색하기 전이나 이후에 메시지, 매개 변수 또는 반환 값을 가로채거나 수정하는 방법을 설명합니다. 서비스 런타임을 확장하는 방법에 대한 자세한 내용은 디스패처 확장을 참조하세요. 클라이언트 런타임에 사용자 지정 개체를 수정하고 삽입하는 동작에 대한 자세한 내용은 동작을 사용하여 런타임 구성 및 확장을 참조하세요.

클라이언트

클라이언트에서 WCF 클라이언트 개체 또는 클라이언트 채널은 메서드 호출을 나가는 메시지로 변환하고 들어오는 메시지를 호출 애플리케이션에 반환되는 작업 결과로 변환합니다. 클라이언트 유형에 대한 자세한 내용은 WCF 클라이언트 아키텍처를 참조하세요.

WCF 클라이언트 형식에는 이 엔드포인트 및 작업 수준 기능을 처리하는 런타임 형식이 있습니다. 애플리케이션이 작업을 호출하면 ClientOperation는 아웃바운드 개체를 메시지로 변환하고, 인터셉터를 처리하여 아웃바운드 호출이 대상 계약을 준수하는지 확인합니다. 그런 다음 이 메시지를 ClientRuntime에 전달하며, ClientRuntime는 아웃바운드 채널(이중 서비스의 경우 인바운드 채널도 포함)을 생성 및 관리하고, 헤더 수정과 같은 추가 아웃바운드 메시지 처리를 담당합니다. 양방향의 메시지 인터셉터를 처리하고, 인바운드 이중 호출을 적절한 클라이언트 쪽 개체로 라우팅합니다. ClientOperation ClientRuntime 둘 다 메시지(오류 포함)가 클라이언트에 반환되는 경우 유사한 서비스를 제공합니다.

이러한 두 런타임 클래스는 WCF 클라이언트 개체 및 채널의 처리를 사용자 지정하는 기본 확장입니다. 이 ClientRuntime 클래스를 사용하면 사용자가 계약의 모든 메시지에서 클라이언트 실행을 가로채고 확장할 수 있습니다. 이 ClientOperation 클래스를 사용하면 사용자가 지정된 작업의 모든 메시지에 대한 클라이언트 실행을 가로채고 확장할 수 있습니다.

속성 수정 또는 사용자 지정 삽입은 계약, 엔드포인트 및 작업 동작을 사용하여 수행됩니다. 이러한 유형의 동작을 사용하여 클라이언트 런타임 사용자 지정을 수행하는 방법에 대한 자세한 내용은 동작을 사용하여 런타임 구성 및 확장을 참조하세요.

시나리오

클라이언트 시스템을 확장하는 데는 다음과 같은 여러 가지 이유가 있습니다.

ClientRuntime 클래스 사용

클래스는 ClientRuntime 메시지를 가로채고 클라이언트 동작을 확장하는 확장 개체를 추가할 수 있는 확장성 지점입니다. 인터셉션 개체는 특정 계약의 모든 메시지를 처리하고, 특정 작업에 대한 메시지만 처리하고, 사용자 지정 채널 초기화를 수행하고, 다른 사용자 지정 클라이언트 애플리케이션 동작을 구현할 수 있습니다.

  • 이 속성은 CallbackDispatchRuntime 서비스 시작 콜백 클라이언트에 대한 디스패치 런타임 개체를 반환합니다.

  • 이 속성은 OperationSelector 사용자 지정 작업 선택기 개체를 허용합니다.

  • ChannelInitializers 속성을 사용하면 클라이언트 채널을 검사하거나 수정할 수 있는 채널 이니셜라이저를 추가할 수 있습니다.

  • Operations 속성은 ClientOperation 작업의 메시지에 특별한 기능을 제공하는 사용자 지정 메시지 인터셉터를 추가할 수 있는 객체들의 컬렉션을 가져옵니다.

  • ManualAddressing 속성을 사용하면 애플리케이션에서 일부 자동 주소 지정 헤더를 해제하여 주소 지정을 직접 제어할 수 있습니다.

  • 이 속성은 Via 중간자 및 기타 시나리오를 지원하도록 전송 수준에서 메시지 대상의 값을 설정합니다.

  • 이 속성은 MessageInspectors WCF 클라이언트를 통해 이동하는 모든 메시지에 대한 사용자 지정 메시지 인터셉터를 추가할 수 있는 개체 컬렉션을 IClientMessageInspector 가져옵니다.

또한 계약 정보를 검색하는 다른 여러 속성이 있습니다.

WCF 클라이언트가 이중 WCF 클라이언트인 경우 다음 속성은 콜백 WCF 클라이언트 정보도 검색합니다.

전체 WCF 클라이언트에서 WCF 클라이언트 실행을 확장하려면 클래스에서 ClientRuntime 사용할 수 있는 속성을 검토하여 속성을 수정하거나 인터페이스를 구현하고 속성에 추가하면 원하는 기능이 만들어지는지 확인합니다. 빌드할 특정 확장을 선택한 후에는 호출 시 클래스에 대한 액세스를 제공하는 클라이언트 동작을 구현하여 적절한 ClientRuntime 속성에 ClientRuntime 확장을 삽입합니다.

작업 동작(IOperationBehavior을 구현하는 개체), 계약 동작(IContractBehavior을 구현하는 개체), 또는 엔드포인트 동작(IEndpointBehavior을 구현하는 개체)을 사용하여 컬렉션에 사용자 지정 확장 개체를 삽입할 수 있습니다. 설치 동작 개체는 프로그래밍 방식으로, 선언적으로(사용자 지정 특성을 구현하여) 또는 애플리케이션 구성 파일을 사용하여 동작을 삽입할 수 있도록 사용자 지정 BehaviorExtensionElement 개체를 구현하여 적절한 동작 컬렉션에 추가됩니다. 자세한 내용은 동작 사용하여 런타임 구성 및 확장참조하세요.

WCF 클라이언트에서 가로채기를 보여 주는 예제는 방법: 클라이언트에서 메시지 검사 또는 수정을 참조하세요.

ClientOperation 클래스 사용

클래스는 ClientOperation 하나의 서비스 작업으로만 범위가 지정된 사용자 지정 확장에 대한 클라이언트 런타임 수정 및 삽입 지점의 위치입니다. (계약의 모든 메시지에 대한 클라이언트 런타임 동작을 수정하려면 클래스를 ClientRuntime 사용합니다.)

Operations 속성을 사용하여 특정 서비스 작업을 나타내는 개체를 ClientOperation에서 찾습니다. 다음 속성을 사용하면 사용자 지정 개체를 WCF 클라이언트 시스템에 삽입할 수 있습니다.

다음 속성을 사용하면 포맷터 및 사용자 지정 매개 변수 검사기와 상호 작용하여 시스템을 수정할 수 있습니다.

  • SerializeRequest 속성을 사용하여 아웃바운드 메시지의 serialization을 제어합니다.

  • DeserializeReply 속성을 사용하여 들어오는 메시지의 역직렬화를 제어합니다.

  • Action 이 속성을 사용하여 요청 메시지의 WS-Addressing 동작을 제어합니다.

  • BeginMethodEndMethod를 사용하여 비동기 작업과 관련된 WCF 클라이언트 메서드를 지정합니다.

  • FaultContractInfos 속성을 사용하여 SOAP 오류에 세부 정보 형식으로 표시할 수 있는 형식이 포함된 컬렉션을 가져옵니다.

  • IsInitiating IsTerminating 및 속성을 사용하여 작업이 호출될 때 세션이 시작되었는지 아니면 삭제되는지를 각각 제어합니다.

  • IsOneWay 속성을 사용하여 작업이 단방향 작업인지 여부를 제어합니다.

  • Parent 속성을 사용하여 포함하는 ClientRuntime 개체를 가져오려면

  • Name 속성을 사용하여 작업의 이름을 가져옵니다.

  • SyncMethod 속성을 사용하여 작업에 매핑되는 메서드를 제어합니다.

하나의 서비스 작업에서만 WCF 클라이언트 실행을 확장하려면 클래스에서 ClientOperation 사용할 수 있는 속성을 검토하여 속성을 수정하거나 인터페이스를 구현하고 속성에 추가하면 원하는 기능이 만들어지는지 확인합니다. 빌드할 특정 확장을 선택한 후에는 호출 시 클래스에 대한 액세스를 제공하는 클라이언트 동작을 구현하여 적절한 ClientOperation 속성에 ClientOperation 확장을 삽입합니다. 그런 다음 해당 동작 내에서 요구 사항에 맞게 속성을 수정 ClientRuntime 할 수 있습니다.

일반적으로 작업 행동(IOperationBehavior 인터페이스를 구현하는 오브젝트)을 구현하는 것으로 충분하지만, 엔드포인트 행동 및 계약 행동을 사용하여 특정 작업에 대해 OperationDescription 동작을 연결하여 동일한 작업을 수행할 수도 있습니다. 자세한 내용은 동작 사용하여 런타임 구성 및 확장참조하세요.

구성에서 사용자 지정 동작을 사용하려면 사용자 지정 동작 구성 섹션 처리기를 사용하여 동작을 설치합니다. 사용자 지정 특성을 만들어 동작을 설치할 수도 있습니다.

WCF 클라이언트에서 가로채기를 보여 주는 예제는 방법: 매개 변수 검사 또는 수정을 참조하세요.

참고하십시오