Freigeben über


IServerChannelSinkProvider Schnittstelle

Definition

Erstellt Serverchannelsenken für den Serverchannel, über den Remotemeldungen übertragen werden.

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

Das folgende Codebeispiel veranschaulicht eine Implementierung dieser Schnittstelle.

[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 IServerChannelSink entsprechende Serversenkeimplementierung finden Sie in der Schnittstellendokumentation.

Hinweise

Kanalsenken sind über Implementierungen der IServerChannelSinkProvider Schnittstelle mit einem Serverkanal verbunden. Alle Remotingserverkanäle stellen Konstruktoren bereit, die einen IServerChannelSinkProvider als 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 für diesen Zweck aufgerufen wird Next .

Wenn mehrere Kanalsenkenanbieter in einer Konfigurationsdatei angegeben werden, verkettet die Remotinginfrastruktur diese in der Reihenfolge, in der sie in der Konfigurationsdatei gefunden werden. Die Kanalsenkenanbieter werden während eines RemotingConfiguration.Configure Anrufs gleichzeitig mit dem Kanal erstellt.

Nachdem der 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 Kanalsenke aus dem Kanal abgerufen und zur IMethodCallMessage Verarbeitung an die Senke weitergeleitet.

Eigenschaften

Next

Ruft den nächsten Senkenprovider in der Kette der Channelsenkenprovider ab oder legt diesen fest.

Methoden

CreateSink(IChannelReceiver)

Erstellt eine Senkenkette.

GetChannelData(IChannelDataStore)

Gibt die Channeldaten für den Channel zurück, dem die aktuelle Senke zugeordnet ist.

Gilt für: