IServerChannelSinkProvider Interface

Definição

Cria sinks de canal de servidor para o canal de servidor através dos quais as mensagens remotas fluem.

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
Derivado
Atributos

Exemplos

O exemplo de código seguinte ilustra uma implementação desta 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) {}
}

Consulte a documentação da IServerChannelSink interface para um exemplo da implementação correspondente do servidor sink.

Observações

Os dissipadores de canal estão ligados a um canal servidor através de implementações da IServerChannelSinkProvider interface. Todos os canais de servidor remotos fornecem construtores que tomam a IServerChannelSinkProvider como parâmetro.

Os fornecedores de sumidouro de canal são armazenados numa cadeia, e o utilizador é responsável por encadear todos os fornecedores de sumidouros de canal antes de passar o externo para o construtor do canal. IServerChannelSinkProvider fornece uma propriedade chamada Next para este fim.

Quando vários fornecedores de sumidouros de canal são especificados num ficheiro de configuração, a infraestrutura remota encadea-os na ordem em que são encontrados no ficheiro de configuração. Os fornecedores de dispersão de canal são criados ao mesmo tempo que o canal, durante uma RemotingConfiguration.Configure chamada.

Depois de gerado o IMethodCallMessage, .NET Framework pesquisa na lista de canais registados para encontrar um que possa processar a chamada. Uma vez encontrado um canal apropriado, o sumidouro do canal é recuperado do canal e IMethodCallMessage encaminhado para o sumidouro para processamento.

Propriedades

Name Description
Next

Obtém ou define o próximo fornecedor de sumidouros na cadeia de fornecedores de sumidouros de canal.

Métodos

Name Description
CreateSink(IChannelReceiver)

Cria uma corrente de pia.

GetChannelData(IChannelDataStore)

Devolve os dados do canal do canal ao qual o sumidouro de corrente está associado.

Aplica-se a