次の方法で共有


IClientChannelSinkProvider インターフェイス

リモート処理メッセージが流れているクライアント チャネルのクライアント チャネル シンクを作成します。

この型のすべてのメンバの一覧については、IClientChannelSinkProvider メンバ を参照してください。

Public Interface IClientChannelSinkProvider
[C#]
public interface IClientChannelSinkProvider
[C++]
public __gc __interface IClientChannelSinkProvider
[JScript]
public interface IClientChannelSinkProvider

IClientChannelSinkProvider を実装するクラス

クラス 説明
BinaryClientFormatterSinkProvider バイナリ クライアント フォーマッタ シンク プロバイダの実装を提供します。
SoapClientFormatterSinkProvider クライアント フォーマッタ シンク プロバイダの実装を提供します。

解説

チャネル シンクは、 IClientChannelSinkProvider インターフェイスの実装を通じてクライアント チャネルに接続されます。すべてのリモート処理クライアント チャンネルは、パラメータとして IClientChannelSinkProvider を取得するコンストラクタを提供します。

チャネル シンク プロバイダはチェインに格納されます。外部のチャネル シンク プロバイダをチャネル コンストラクタに渡す場合は、その前にすべてのチャネル シンク プロバイダを 1 つのチェインにまとめます。この処理を実行できるようにするために、 IClientChannelSinkProviderNext というプロパティを提供します。

複数のチャネル シンク プロバイダが構成ファイルで指定されている場合、リモート処理インフラストラクチャは、構成ファイルに出現する順序でそれらのプロバイダをチェインに含めます。 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 名前空間