Compartilhar via


IServerChannelSinkProvider Interface

Definição

Cria coletores de canal de servidor para o canal de servidor por meio do qual realizar a comunicação remota do fluxo de mensagens.

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 a seguir ilustra uma implementação dessa 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 obter um exemplo da implementação do coletor de servidor correspondente.

Comentários

Os coletores de canal são conectados a um canal de servidor por meio de implementações da IServerChannelSinkProvider interface. Todos os canais de servidor de comunicação remota fornecem construtores que tomam um IServerChannelSinkProvider parâmetro como um parâmetro.

Os provedores de coletor de canal são armazenados em uma cadeia e o usuário é responsável por encadear todos os provedores de coletor de canal antes de passar o externo para o construtor do canal. IServerChannelSinkProvider fornece uma propriedade chamada Next para essa finalidade.

Quando vários provedores de coletor de canal são especificados em um arquivo de configuração, a infraestrutura de comunicação remota os encadeará na ordem em que forem encontrados no arquivo de configuração. Os provedores de coletor de canal são criados ao mesmo tempo que o canal, durante uma RemotingConfiguration.Configure chamada.

Após a IMethodCallMessage geração, .NET Framework pesquisa na lista de canais registrados para encontrar um que possa processar a chamada. Depois que um canal apropriado for encontrado, o coletor de canal será recuperado do canal e o IMethodCallMessage coletor será encaminhado para o coletor para processamento.

Propriedades

Next

Obtém ou define o próximo provedor de coletor na cadeia de provedores de coletor do canal.

Métodos

CreateSink(IChannelReceiver)

Cria uma cadeia de coletores.

GetChannelData(IChannelDataStore)

Retorna os dados de canal para o canal ao qual o coletor atual está associado.

Aplica-se a