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)

現在のシンクが関連付けられているチャネルのチャネル データを返します。

適用対象