語言

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 連接到伺服器通道。 所有遠端伺服器通道都提供以 a IServerChannelSinkProvider 為參數的建構子。

通道匯供應商以鏈狀儲存,使用者負責將所有通道匯流提供者串接在一起,然後再將外層提供者交給通道建構器。 IServerChannelSinkProvider 提供一個為此目的所命名 Next 的性質。

當設定檔中指定多個通道匯流提供者時,遠端基礎設施會依照設定檔中找到的順序將它們串接在一起。 頻道下沉提供者會在通話期間與頻道 RemotingConfiguration.Configure 同時建立。

產生 IMethodCallMessage 後,.NET Framework 會搜尋註冊通道清單,尋找能處理通話的通道。 一旦找到合適的通道,就會從通道中取回通道匯,並 IMethodCallMessage 轉送至匯進行處理。

屬性

名稱 Description
Next

接收或設定通道匯供應商鏈中的下一個匯供應商。

方法

名稱 Description
CreateSink(IChannelReceiver)

形成一個水槽鏈。

GetChannelData(IChannelDataStore)

回傳目前匯與該頻道相關聯的頻道資料。

適用於