IServerChannelSinkProvider Interface

Definitie

Hiermee maakt u serverkanaalsinks voor het serverkanaal waarmee externe berichten stromen.

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
Afgeleid
Kenmerken

Voorbeelden

In het volgende codevoorbeeld ziet u een implementatie van deze interface.

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

Zie de IServerChannelSink interfacedocumentatie voor een voorbeeld van de bijbehorende implementatie van de server-sink.

Opmerkingen

Kanaalsinks zijn verbonden met een serverkanaal via implementaties van de IServerChannelSinkProvider interface. Alle externe serverkanalen bieden constructors die een IServerChannelSinkProvider parameter gebruiken.

Kanaalsinkproviders worden opgeslagen in een keten en de gebruiker is verantwoordelijk voor het koppelen van alle kanaals sinkproviders voordat de buitenste provider aan de kanaalconstructor wordt doorgegeven. IServerChannelSinkProvider biedt een eigenschap die voor dit doel wordt aangeroepen Next .

Wanneer meerdere kanaals sinkproviders zijn opgegeven in een configuratiebestand, worden deze door de externe infrastructuur aan elkaar gekoppeld in de volgorde waarin ze in het configuratiebestand worden gevonden. De kanaalsinkproviders worden gemaakt op hetzelfde moment als het kanaal, tijdens een RemotingConfiguration.Configure gesprek.

Nadat de IMethodCallMessage is gegenereerd, zoekt .NET Framework door de lijst met geregistreerde kanalen om er een te vinden die de aanroep kan verwerken. Zodra er een geschikt kanaal is gevonden, wordt de kanaalsink opgehaald uit het kanaal en wordt de IMethodCallMessage sink doorgestuurd naar de sink voor verwerking.

Eigenschappen

Name Description
Next

Hiermee haalt u de volgende sinkprovider op in de keten van de kanaalsinkprovider.

Methoden

Name Description
CreateSink(IChannelReceiver)

Hiermee maakt u een sinkketen.

GetChannelData(IChannelDataStore)

Retourneert de kanaalgegevens voor het kanaal waaraan de huidige sink is gekoppeld.

Van toepassing op