Condividi tramite


IServerChannelSinkProvider Interfaccia

Definizione

Crea i sink di canale del server per il canale server attraverso il quale scorrono i messaggi remoti.

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
Derivato
Attributi

Esempio

Nell'esempio di codice seguente viene illustrata un'implementazione di questa interfaccia.

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

Vedere la documentazione dell'interfaccia IServerChannelSink per un esempio dell'implementazione del sink del server corrispondente.

Commenti

I sink di canale sono connessi a un canale server tramite implementazioni dell'interfaccia IServerChannelSinkProvider . Tutti i canali del server di comunicazione remota forniscono costruttori che accettano come IServerChannelSinkProvider parametro.

I provider di sink di canale vengono archiviati in una catena e l'utente è responsabile della concatenazione di tutti i provider di sink di canale prima di passare quello esterno al costruttore del canale. IServerChannelSinkProvider fornisce una proprietà denominata Next per questo scopo.

Quando vengono specificati più provider di sink di canale in un file di configurazione, l'infrastruttura di comunicazione remota li concatena insieme nell'ordine in cui vengono trovati nel file di configurazione. I provider di sink di canale vengono creati contemporaneamente al canale, durante una RemotingConfiguration.Configure chiamata.

Dopo aver generato, .NET Framework esegue la ricerca nell'elenco IMethodCallMessage dei canali registrati per trovare uno che può elaborare la chiamata. Dopo aver trovato un canale appropriato, il sink del canale viene recuperato dal canale e viene IMethodCallMessage inoltrato al sink per l'elaborazione.

Proprietà

Next

Ottiene o imposta il provider di sink successivo nella catena dei provider di sink di canale.

Metodi

CreateSink(IChannelReceiver)

Crea una catena di sink.

GetChannelData(IChannelDataStore)

Restituisce i dati di canale relativi al canale a cui è associato il sink corrente.

Si applica a