IServerChannelSinkProvider インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
リモート処理メッセージが流れるサーバー チャネルのサーバー チャネル シンクを作成します。
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) |
現在のシンクが関連付けられているチャネルのチャネル データを返します。 |