IServerChannelSinkProvider Interface
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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. |