IClientChannelSinkProvider インターフェイス
リモート処理メッセージが流れているクライアント チャネルのクライアント チャネル シンクを作成します。
この型のすべてのメンバの一覧については、IClientChannelSinkProvider メンバ を参照してください。
Public Interface IClientChannelSinkProvider
[C#]
public interface IClientChannelSinkProvider
[C++]
public __gc __interface IClientChannelSinkProvider
[JScript]
public interface IClientChannelSinkProvider
IClientChannelSinkProvider を実装するクラス
クラス | 説明 |
---|---|
BinaryClientFormatterSinkProvider | バイナリ クライアント フォーマッタ シンク プロバイダの実装を提供します。 |
SoapClientFormatterSinkProvider | クライアント フォーマッタ シンク プロバイダの実装を提供します。 |
解説
チャネル シンクは、 IClientChannelSinkProvider インターフェイスの実装を通じてクライアント チャネルに接続されます。すべてのリモート処理クライアント チャンネルは、パラメータとして IClientChannelSinkProvider を取得するコンストラクタを提供します。
チャネル シンク プロバイダはチェインに格納されます。外部のチャネル シンク プロバイダをチャネル コンストラクタに渡す場合は、その前にすべてのチャネル シンク プロバイダを 1 つのチェインにまとめます。この処理を実行できるようにするために、 IClientChannelSinkProvider は Next というプロパティを提供します。
複数のチャネル シンク プロバイダが構成ファイルで指定されている場合、リモート処理インフラストラクチャは、構成ファイルに出現する順序でそれらのプロバイダをチェインに含めます。 RemotingConfiguration.Configure の呼び出し中にチャネルが作成されるとき、チャネル シンク プロバイダは作成されます。
使用例
Public Class MyServerProcessingLogClientChannelSinkProviderData
Implements IClientChannelSinkProvider
Private myClientChannelSinkProviderNext As IClientChannelSinkProvider = Nothing
Public Sub New()
End Sub 'New
Public Sub New(ByVal myIDictionaryProperties As IDictionary, ByVal _
myICollectionProviderData As ICollection)
End Sub 'New
Public Function CreateSink(ByVal myChannelSenderData As IChannelSender, ByVal url As String, _
ByVal myRemoteChannelData As Object) As IClientChannelSink Implements _
IClientChannelSinkProvider.CreateSink
Dim myClientChannelSinkNextSink As IClientChannelSink = Nothing
If Not (myClientChannelSinkProviderNext Is Nothing) Then
myClientChannelSinkNextSink = myClientChannelSinkProviderNext.CreateSink _
(myChannelSenderData, url, myRemoteChannelData)
If myClientChannelSinkNextSink Is Nothing Then
Return Nothing
End If
End If
Return New MyLoggingClientChannelSink(myClientChannelSinkNextSink)
End Function 'CreateSink
Public Property [Next]() As IClientChannelSinkProvider Implements IClientChannelSinkProvider.Next
Get
Return myClientChannelSinkProviderNext
End Get
Set(ByVal Value As IClientChannelSinkProvider)
myClientChannelSinkProviderNext = Value
End Set
End Property
End Class 'MyServerProcessingLogClientChannelSinkProviderData
[C#]
public class MyServerProcessingLogClientChannelSinkProviderData : IClientChannelSinkProvider
{
private IClientChannelSinkProvider myClientChannelSinkProviderNext = null;
public MyServerProcessingLogClientChannelSinkProviderData()
{
}
public MyServerProcessingLogClientChannelSinkProviderData(IDictionary myIDictionaryProperties,
ICollection myICollectionProviderData)
{
}
public IClientChannelSink CreateSink(IChannelSender myChannelSenderData, String url,
Object myRemoteChannelData)
{
IClientChannelSink myClientChannelSinkNextSink = null;
if (myClientChannelSinkProviderNext != null)
{
myClientChannelSinkNextSink =
myClientChannelSinkProviderNext.CreateSink(myChannelSenderData, url, myRemoteChannelData);
if (myClientChannelSinkNextSink == null)
return null;
}
return new MyLoggingClientChannelSink(myClientChannelSinkNextSink);
}
public IClientChannelSinkProvider Next
{
get
{
return myClientChannelSinkProviderNext;
}
set
{
myClientChannelSinkProviderNext = value;
}
}
}
[C++]
public __gc class MyServerProcessingLogClientChannelSinkProviderData : public IClientChannelSinkProvider
{
private:
IClientChannelSinkProvider* myClientChannelSinkProviderNext;
public:
MyServerProcessingLogClientChannelSinkProviderData()
{
myClientChannelSinkProviderNext = 0;
}
MyServerProcessingLogClientChannelSinkProviderData(IDictionary* myIDictionaryProperties,
ICollection* myICollectionProviderData)
{
}
IClientChannelSink* CreateSink(IChannelSender* myChannelSenderData, String* url,
Object* myRemoteChannelData)
{
IClientChannelSink* myClientChannelSinkNextSink = 0;
if (myClientChannelSinkProviderNext != 0)
{
myClientChannelSinkNextSink =
myClientChannelSinkProviderNext->CreateSink(myChannelSenderData, url, myRemoteChannelData);
if (myClientChannelSinkNextSink == 0)
return 0;
}
return new MyLoggingClientChannelSink(myClientChannelSinkNextSink);
}
__property IClientChannelSinkProvider* get_Next()
{
return myClientChannelSinkProviderNext;
}
__property void set_Next( IClientChannelSinkProvider* value )
{
myClientChannelSinkProviderNext = value;
}
};
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Runtime.Remoting.Channels
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: Mscorlib (Mscorlib.dll 内)
参照
IClientChannelSinkProvider メンバ | System.Runtime.Remoting.Channels 名前空間