IServerChannelSinkProvider Schnittstelle

Definition

Erstellt Serverkanalsenken für den Serverkanal, über den Remotingnachrichten fließen.

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
Abgeleitet
Attribute

Beispiele

Im folgenden Codebeispiel wird eine Implementierung dieser Schnittstelle veranschaulicht.

[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) {}
}

Ein Beispiel für die entsprechende Server-Sink-Implementierung finden Sie in der IServerChannelSink Schnittstellendokumentation.

Hinweise

Kanalsenken werden über Implementierungen der IServerChannelSinkProvider Schnittstelle mit einem Serverkanal verbunden. Alle Remoting-Serverkanäle stellen Konstruktoren bereit, die einen IServerChannelSinkProvider Parameter verwenden.

Kanalsenkenanbieter werden in einer Kette gespeichert, und der Benutzer ist für das Verketten aller Kanalsenkenanbieter verantwortlich, bevor er den äußeren an den Kanalkonstruktor übergibt. IServerChannelSinkProvider stellt eine Eigenschaft bereit, die zu diesem Zweck aufgerufen wird Next .

Wenn mehrere Kanalsenkenanbieter in einer Konfigurationsdatei angegeben werden, verkettet die Remotinginfrastruktur sie in der Reihenfolge, in der sie in der Konfigurationsdatei zu finden sind. Die Kanalsenkenanbieter werden während eines RemotingConfiguration.Configure Anrufs zur gleichen Zeit wie der Kanal erstellt.

Nachdem die IMethodCallMessage generiert wurde, durchsucht .NET Framework die Liste der registrierten Kanäle, um einen zu finden, der den Aufruf verarbeiten kann. Sobald ein entsprechender Kanal gefunden wurde, wird die Kanalspüle aus dem Kanal abgerufen und zur IMethodCallMessage Verarbeitung an die Spüle weitergeleitet.

Eigenschaften

Name Beschreibung
Next

Ruft den nächsten Sinkanbieter in der Kanalsenkenanbieterkette ab oder legt den nächst.

Methoden

Name Beschreibung
CreateSink(IChannelReceiver)

Erstellt eine Senkenkette.

GetChannelData(IChannelDataStore)

Gibt die Kanaldaten für den Kanal zurück, dem die aktuelle Spüle zugeordnet ist.

Gilt für: