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 連接到伺服器通道。 所有遠端伺服器通道都提供以 a IServerChannelSinkProvider 為參數的建構子。
通道匯供應商以鏈狀儲存,使用者負責將所有通道匯流提供者串接在一起,然後再將外層提供者交給通道建構器。 IServerChannelSinkProvider 提供一個為此目的所命名 Next 的性質。
當設定檔中指定多個通道匯流提供者時,遠端基礎設施會依照設定檔中找到的順序將它們串接在一起。 頻道下沉提供者會在通話期間與頻道 RemotingConfiguration.Configure 同時建立。
產生 IMethodCallMessage 後,.NET Framework 會搜尋註冊通道清單,尋找能處理通話的通道。 一旦找到合適的通道,就會從通道中取回通道匯,並 IMethodCallMessage 轉送至匯進行處理。
屬性
| 名稱 | Description |
|---|---|
| Next |
接收或設定通道匯供應商鏈中的下一個匯供應商。 |
方法
| 名稱 | Description |
|---|---|
| CreateSink(IChannelReceiver) |
形成一個水槽鏈。 |
| GetChannelData(IChannelDataStore) |
回傳目前匯與該頻道相關聯的頻道資料。 |