IClientChannelSinkProvider-Schnittstelle
Erstellt Clientchannelempfänger für den Clientchannel, über den Remotemeldungen übertragen werden.
Namespace: System.Runtime.Remoting.Channels
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<ComVisibleAttribute(True)> _
Public Interface IClientChannelSinkProvider
'Usage
Dim instance As IClientChannelSinkProvider
[ComVisibleAttribute(true)]
public interface IClientChannelSinkProvider
[ComVisibleAttribute(true)]
public interface class IClientChannelSinkProvider
/** @attribute ComVisibleAttribute(true) */
public interface IClientChannelSinkProvider
ComVisibleAttribute(true)
public interface IClientChannelSinkProvider
Hinweise
Channelsenken sind über Implementierungen der IClientChannelSinkProvider-Schnittstelle mit einem Clientchannel verbunden. Sämtliche Remoteclientchannel stellen Konstruktoren bereit, die IClientChannelSinkProvider als Parameter annehmen.
Da Channelsenkenanbieter in einer Kette gespeichert werden, müssen sämtliche Channelsenkenanbieter verkettet werden, bevor der außen befindliche an den Channelkonstruktor übergeben wird. IClientChannelSinkProvider stellt für diesen Zweck die Next-Eigenschaft bereit.
Wenn in einer Konfigurationsdatei mehrere Channelempfängerprovider angegeben sind, werden diese von der Remotinginfrastruktur in der Reihenfolge verkettet, in der sie in der Konfigurationsdatei gefunden werden. Die Channelsenkenanbieter werden erstellt, wenn der Channel während des Aufrufs von RemotingConfiguration.Configure erstellt wird.
Beispiel
Im folgenden Codebeispiel wird eine Implementierung dieser Schnittstelle veranschaulicht.
public class ClientSinkProvider : IClientChannelSinkProvider
{
// The next provider in the chain.
private IClientChannelSinkProvider nextProvider;
public IClientChannelSinkProvider Next
{
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
get
{
return(nextProvider);
}
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
set
{
nextProvider = value;
}
}
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
public IClientChannelSink CreateSink (IChannelSender channel, String url, Object remoteChannelData)
{
Console.WriteLine("Creating ClientSink for {0}", url);
// Create the next sink in the chain.
IClientChannelSink nextSink = nextProvider.CreateSink(channel, url, remoteChannelData);
// Hook our sink up to it.
return( new ClientSink(nextSink) );
}
// 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 ClientSinkProvider (IDictionary properties, ICollection providerData) {}
}
[System::Security::Permissions::PermissionSet(System::Security::
Permissions::SecurityAction::Demand, Name = "FullTrust")]
public ref class ClientSinkProvider: public IClientChannelSinkProvider
{
private:
// The next provider in the chain.
IClientChannelSinkProvider^ nextProvider;
public:
property IClientChannelSinkProvider^ Next
{
virtual IClientChannelSinkProvider^ get()
{
return (nextProvider);
}
virtual void set( IClientChannelSinkProvider^ value )
{
nextProvider = value;
}
}
virtual IClientChannelSink^ CreateSink( IChannelSender^ channel, String^ url, Object^ remoteChannelData )
{
Console::WriteLine( "Creating ClientSink for {0}", url );
// Create the next sink in the chain.
IClientChannelSink^ nextSink = nextProvider->CreateSink( channel, url, remoteChannelData );
// Hook our sink up to it.
return (gcnew ClientSink( nextSink ));
}
// 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.
ClientSinkProvider( IDictionary^ /*properties*/, ICollection^ /*providerData*/ ){}
};
/** @attribute SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)
*/
public class ClientSinkProvider implements IClientChannelSinkProvider
{
// The next provider in the chain.
private IClientChannelSinkProvider nextProvider;
/** @property
*/
public IClientChannelSinkProvider get_Next()
{
return nextProvider;
}//get_Next
/** @property
*/
public void set_Next(IClientChannelSinkProvider value)
{
nextProvider = value;
}//set_Next
public IClientChannelSink CreateSink(IChannelSender channel, String url,
Object remoteChannelData)
{
Console.WriteLine("Creating ClientSink for {0}", url);
// Create the next sink in the chain.
IClientChannelSink nextSink = nextProvider.CreateSink(channel, url,
remoteChannelData);
// Hook our sink up to it.
return new ClientSink(nextSink);
} //CreateSink
// 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 ClientSinkProvider(IDictionary properties, ICollection providerData)
{
} //ClientSinkProvider
} //ClientSinkProvider
Ein Beispiel für die entsprechende Implementierung einer Clientsenke finden Sie in der Dokumentation der IClientChannelSink-Schnittstelle.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
IClientChannelSinkProvider-Member
System.Runtime.Remoting.Channels-Namespace