BinaryServerFormatterSink.ProcessMessage 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
현재 싱크에서 메시지 처리를 요청합니다.
public:
virtual System::Runtime::Remoting::Channels::ServerProcessing ProcessMessage(System::Runtime::Remoting::Channels::IServerChannelSinkStack ^ sinkStack, System::Runtime::Remoting::Messaging::IMessage ^ requestMsg, System::Runtime::Remoting::Channels::ITransportHeaders ^ requestHeaders, System::IO::Stream ^ requestStream, [Runtime::InteropServices::Out] System::Runtime::Remoting::Messaging::IMessage ^ % responseMsg, [Runtime::InteropServices::Out] System::Runtime::Remoting::Channels::ITransportHeaders ^ % responseHeaders, [Runtime::InteropServices::Out] System::IO::Stream ^ % responseStream);
public System.Runtime.Remoting.Channels.ServerProcessing ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack sinkStack, System.Runtime.Remoting.Messaging.IMessage requestMsg, System.Runtime.Remoting.Channels.ITransportHeaders requestHeaders, System.IO.Stream requestStream, out System.Runtime.Remoting.Messaging.IMessage responseMsg, out System.Runtime.Remoting.Channels.ITransportHeaders responseHeaders, out System.IO.Stream responseStream);
abstract member ProcessMessage : System.Runtime.Remoting.Channels.IServerChannelSinkStack * System.Runtime.Remoting.Messaging.IMessage * System.Runtime.Remoting.Channels.ITransportHeaders * System.IO.Stream * IMessage * ITransportHeaders * Stream -> System.Runtime.Remoting.Channels.ServerProcessing
override this.ProcessMessage : System.Runtime.Remoting.Channels.IServerChannelSinkStack * System.Runtime.Remoting.Messaging.IMessage * System.Runtime.Remoting.Channels.ITransportHeaders * System.IO.Stream * IMessage * ITransportHeaders * Stream -> System.Runtime.Remoting.Channels.ServerProcessing
Public Function ProcessMessage (sinkStack As IServerChannelSinkStack, requestMsg As IMessage, requestHeaders As ITransportHeaders, requestStream As Stream, ByRef responseMsg As IMessage, ByRef responseHeaders As ITransportHeaders, ByRef responseStream As Stream) As ServerProcessing
매개 변수
- sinkStack
- IServerChannelSinkStack
현재 싱크를 호출한 채널 싱크 스택입니다.
- requestMsg
- IMessage
요청을 포함하는 메시지입니다.
- requestHeaders
- ITransportHeaders
클라이언트에서 들어오는 메시지에서 검색되는 헤더입니다.
- requestStream
- Stream
처리되고 역직렬화 싱크에 전달되어야 하는 스트림입니다.
- responseHeaders
- ITransportHeaders
이 메서드가 반환되면 클라이언트로 ITransportHeaders 향하는 반환 메시지에 추가할 헤더를 포함하는 헤더가 포함됩니다. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다.
반품
ServerProcessing 메시지를 처리하는 방법에 대한 정보를 제공하는 상태 값입니다.
구현
설명
프록시의 작업은 호출된 메서드 호출을 메시지로 변환하는 것입니다. 인터페이스를 IMessage 구현하는 메시지는 메시지 싱크 개체를 호출하여 ProcessMessage 클라이언트 끝에서 서버 끝으로 전달됩니다. 메시지 싱크는 함께 연결됩니다. 즉, 현재 메시지 싱크가 작업을 완료한 후 모든 메시지 싱크에서 다음 메시지 싱크를 호출 ProcessMessage 해야 합니다. 예를 들어 동기화 관련 메시지 싱크로 인해 잠금을 획득하거나 해제하고 다운스트림 메시지 싱크에 위임할 수 있습니다.
포맷터 채널 싱크가 채널을 통해 전송해야 하는 메시지를 가져오면 메시지를 매개 변수로 전달하여 호출 SyncProcessMessage합니다. 포맷터 싱크는 전송 헤더 배열을 만들고 포맷터 싱크를 호출 GetRequestStream 합니다. 이 호출은 싱크 체인 아래로 전달되며 모든 싱크는 포맷터 싱크로 다시 전달될 요청 스트림을 만들 수 있습니다. 이 호출이 반환되면 메시지가 serialize되고 ProcessMessage 싱크 체인의 첫 번째 체인에서 호출되고 메시지가 채널 싱크에 전달됩니다.
채널 싱크가 메시지를 받은 후 스트림에 데이터를 쓰고, 헤더 배열에 헤더를 추가하고, 싱크 스택에 자신을 추가한 후 호출을 다음 싱크로 전달할 수 있습니다. 호출이 체인의 끝에 있는 전송 싱크에 도달하면 전송 싱크는 헤더와 직렬화된 메시지를 채널을 통해 서버로 보내며, 여기서 프로세스는 반전됩니다.
메시지가 서버 쪽에 도착하면 전송 싱크는 스트림에서 헤더 및 직렬화된 메시지를 검색하고 포맷터 싱크에 도달할 때까지 싱크 체인을 통해 전달합니다. 포맷터 싱크는 메시지를 역직렬화하고 원격 인프라에 전달합니다. 그런 다음 원격 인프라는 메시지를 메서드 호출로 변환하고 서버 개체를 호출합니다.