Udostępnij za pośrednictwem


IServerChannelSinkProvider Interfejs

Definicja

Tworzy ujścia kanału serwera dla kanału serwera, za pomocą którego przepływ komunikatów komunikacji sieciowej.

public interface class IServerChannelSinkProvider
public interface IServerChannelSinkProvider
[System.Runtime.InteropServices.ComVisible(true)]
public interface IServerChannelSinkProvider
type IServerChannelSinkProvider = interface
[<System.Runtime.InteropServices.ComVisible(true)>]
type IServerChannelSinkProvider = interface
Public Interface IServerChannelSinkProvider
Pochodne
Atrybuty

Przykłady

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

[System::Security::Permissions::PermissionSet(System::Security::
   Permissions::SecurityAction::Demand, Name = "FullTrust")]
public ref class ServerSinkProvider: public IServerChannelSinkProvider
{
   // The next provider in the chain.
private:
   IServerChannelSinkProvider^ nextProvider;

public:
   property IServerChannelSinkProvider^ Next 
   {
      virtual IServerChannelSinkProvider^ get()
      {
         return (nextProvider);
      }

      virtual void set( IServerChannelSinkProvider^ value )
      {
         nextProvider = value;
      }
   }

   virtual IServerChannelSink^ CreateSink( IChannelReceiver^ channel )
   {
      Console::WriteLine( "Creating ServerSink" );

      // Create the next sink in the chain.
      IServerChannelSink^ nextSink = nextProvider->CreateSink( channel );

      // Hook our sink up to it.
      return (gcnew ServerSink( nextSink ));
   }

   virtual void GetChannelData( IChannelDataStore^ /*channelData*/ ){}

   // This constructor is required in order to use the provider in file-based configuration.
   // It need not do anything unless you want to use the information in the parameters.
   ServerSinkProvider( IDictionary^ /*properties*/, ICollection^ /*providerData*/ ){}
};
public class ServerSinkProvider : IServerChannelSinkProvider
{

    // The next provider in the chain.
    private IServerChannelSinkProvider nextProvider;

    public IServerChannelSinkProvider Next
    {
        get
        {
            return(nextProvider);
        }
        set
        {
            nextProvider = value;
        }
    }

    public IServerChannelSink CreateSink (IChannelReceiver channel)
    {
        Console.WriteLine("Creating ServerSink");

        // Create the next sink in the chain.
        IServerChannelSink nextSink = nextProvider.CreateSink(channel);

        // Hook our sink up to it.
        return( new ServerSink(nextSink) );
    }

    public void GetChannelData (IChannelDataStore channelData) {}

    // This constructor is required in order to use the provider in file-based configuration.
    // It need not do anything unless you want to use the information in the parameters.
    public ServerSinkProvider (IDictionary properties, ICollection providerData) {}
}

Zapoznaj się z dokumentacją interfejsu IServerChannelSink , aby zapoznać się z przykładem odpowiedniej implementacji ujścia serwera.

Uwagi

Ujścia kanału są połączone z kanałem serwera za pośrednictwem implementacji interfejsu IServerChannelSinkProvider . Wszystkie kanały serwera komunikacji zdalniej udostępniają konstruktory, które przyjmują IServerChannelSinkProvider parametr jako parametr.

Dostawcy ujścia kanału są przechowywani w łańcuchu, a użytkownik jest odpowiedzialny za łączenie wszystkich dostawców ujścia kanału przed przekazaniem zewnętrznego do konstruktora kanału. IServerChannelSinkProvider udostępnia właściwość wywoływaną Next do tego celu.

Jeśli w pliku konfiguracji określono wielu dostawców ujścia kanału, infrastruktura komunikacji wirtualnej połączy je ze sobą w kolejności, w której znajdują się w pliku konfiguracji. Dostawcy ujścia kanału są tworzeni w tym samym czasie co kanał podczas RemotingConfiguration.Configure połączenia.

Po wygenerowaniu IMethodCallMessage .NET Framework przeszukuje listę zarejestrowanych kanałów, aby znaleźć taki, który może przetworzyć wywołanie. Po znalezieniu odpowiedniego kanału ujście kanału jest pobierane z kanału, a IMethodCallMessage element jest przekazywany do ujścia na potrzeby przetwarzania.

Właściwości

Next

Pobiera lub ustawia następnego dostawcę ujścia w łańcuchu dostawcy ujścia kanału.

Metody

CreateSink(IChannelReceiver)

Tworzy łańcuch ujścia.

GetChannelData(IChannelDataStore)

Zwraca dane kanału dla kanału, z którymi jest skojarzony bieżący ujście.

Dotyczy