Поделиться через


IServerChannelSinkProvider Интерфейс

Определение

Создает приемники каналов сервера для канала сервера, через который передаются удаленные сообщения.

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
Производный
Атрибуты

Примеры

В следующем примере кода показана реализация этого интерфейса.

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

IServerChannelSink Пример реализации соответствующего приемника сервера см. в документации по интерфейсу.

Комментарии

Приемники каналов подключаются к каналу сервера через реализации IServerChannelSinkProvider интерфейса . Все каналы сервера удаленного взаимодействия предоставляют конструкторы, которые принимают в IServerChannelSinkProvider качестве параметра .

Поставщики приемников каналов хранятся в цепочке, и пользователь несет ответственность за объединение всех поставщиков приемников каналов перед передачей внешнего поставщика в конструктор каналов. IServerChannelSinkProvider предоставляет свойство с именем Next для этой цели.

Если в файле конфигурации указано несколько поставщиков приемников каналов, инфраструктура удаленного взаимодействия будет связывать их в том порядке, в который они находятся в файле конфигурации. Поставщики приемников каналов создаются одновременно с каналом RemotingConfiguration.Configure во время вызова.

IMethodCallMessage После создания платформа .NET Framework выполняет поиск по списку зарегистрированных каналов, чтобы найти тот, который может обработать вызов. После того как соответствующий канал будет найден, приемник канала извлекается из канала и IMethodCallMessage перенаправится в приемник для обработки.

Свойства

Next

Возвращает или задает следующего провайдера приемников в цепи поставщика приемника канала.

Методы

CreateSink(IChannelReceiver)

Создает цепочку приемников.

GetChannelData(IChannelDataStore)

Возвращает данные канала для канала, с которым связан текущий приемник.

Применяется к