IClientChannelSink Interfejs

Definicja

Udostępnia wymagane funkcje i właściwości ujścia kanału klienta.

C#
public interface IClientChannelSink : System.Runtime.Remoting.Channels.IChannelSinkBase
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface IClientChannelSink : System.Runtime.Remoting.Channels.IChannelSinkBase
Pochodne
Atrybuty
Implementuje

Przykłady

Poniższy przykład kodu ilustruje implementację interfejsu IClientChannelSink .

C#
using System;
using System.Collections;
using System.IO;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Messaging;

public class ClientSink : BaseChannelSinkWithProperties, IClientChannelSink
{

    // This class inherits from BaseChannelSinkWithPropertes
    // to get an implementation of IChannelSinkBase.

    // The next sink in the chain.
    private IClientChannelSink nextSink;

    public IClientChannelSink NextChannelSink
    {
        get
        {
            return(nextSink);
        }
    }

    public Stream GetRequestStream (IMessage message, ITransportHeaders requestHeaders)
    {
        // Get the request stream from the next sink in the chain.
        return( nextSink.GetRequestStream(message, requestHeaders) );
    }

    public void ProcessMessage (IMessage message,
                                ITransportHeaders requestHeaders,
                                Stream requestStream,
                                out ITransportHeaders responseHeaders,
                                out Stream responseStream)
    {
        // Print the request message properties.
        Console.WriteLine("---- Message from the client ----");
        IDictionary dictionary = message.Properties;
        foreach (Object key in dictionary.Keys)
        {
            Console.WriteLine("{0} = {1}", key, dictionary[key]);
        }
        Console.WriteLine("---------------------------------");

        // Hand off to the next sink in the chain.
        nextSink.ProcessMessage(message, requestHeaders, requestStream, out responseHeaders, out responseStream);
    }

    // For synchronous remoting, it is not necessary to implement this method.
    public void AsyncProcessRequest (IClientChannelSinkStack sinkStack,
                                     IMessage message,
                                     ITransportHeaders requestHeaders,
                                     Stream requestStream)
    {
        throw new NotImplementedException();
    }

    public void AsyncProcessResponse (IClientResponseChannelSinkStack sinkStack,
                                      Object state,
                                      ITransportHeaders responseHeaders,
                                      Stream responseStream)
    {
        throw new NotImplementedException();
    }

    // Constructor
    public ClientSink (IClientChannelSink sink) {
      if (sink == null) throw new ArgumentNullException("sink");
      nextSink = sink;
    }
}

Zapoznaj się z dokumentacją interfejsu IClientChannelSinkProvider , aby zapoznać się z przykładem implementacji odpowiedniego dostawcy ujścia klienta.

Uwagi

Ujścia kanału zapewniają punkt wtyczki, który umożliwia dostęp do podstawowych komunikatów przepływających przez kanał, a także strumienia używanego przez mechanizm transportu do wysyłania komunikatów do obiektu zdalnego. Ujścia kanału są połączone razem w łańcuchu dostawców ujścia kanału i wszystkie komunikaty kanału przepływają przez ten łańcuch ujść przed ich serializacji i transportu.

Właściwości

NextChannelSink

Pobiera następny ujście kanału klienta w łańcuchu ujścia klienta.

Properties

Pobiera słownik, za pomocą którego można uzyskać dostęp do właściwości ujścia.

(Odziedziczone po IChannelSinkBase)

Metody

AsyncProcessRequest(IClientChannelSinkStack, IMessage, ITransportHeaders, Stream)

Żąda asynchronicznego przetwarzania wywołania metody w bieżącym ujściu.

AsyncProcessResponse(IClientResponseChannelSinkStack, Object, ITransportHeaders, Stream)

Żąda asynchronicznego przetwarzania odpowiedzi na wywołanie metody w bieżącym ujściu.

GetRequestStream(IMessage, ITransportHeaders)

Zwraca wartość, Stream na którą ma zostać zserializowany podany komunikat.

ProcessMessage(IMessage, ITransportHeaders, Stream, ITransportHeaders, Stream)

Żąda przetwarzania komunikatów z bieżącego ujścia.

Dotyczy

Produkt Wersje
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Zobacz też