Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

IServerChannelSinkProvider-Schnittstelle

Aktualisiert: November 2007

Erstellt Serverchannelempfänger für den Serverchannel, über den Remotemeldungen übertragen werden.

Namespace:  System.Runtime.Remoting.Channels
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public interface IServerChannelSinkProvider
/** @attribute ComVisibleAttribute(true) */
public interface IServerChannelSinkProvider
public interface IServerChannelSinkProvider

Channelsenken sind über Implementierungen der IServerChannelSinkProvider-Schnittstelle mit einem Serverchannel verbunden. Sämtliche Remoteserverchannel stellen Konstruktoren bereit, die IServerChannelSinkProvider 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. IServerChannelSinkProvider 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 während eines Aufrufs von RemotingConfiguration.Configure gleichzeitig mit dem Channel erstellt.

Nach dem Generieren von IMethodCallMessage sucht .NET Framework in der Liste registrierter Channel einen Channel, der den Aufruf verarbeiten kann. Wenn ein entsprechender Channel gefunden wurde, wird die Channelsenke aus dem Channel abgerufen, und die IMethodCallMessage wird zur Verarbeitung an die Senke weitergeleitet.

Im folgenden Codebeispiel wird eine Implementierung dieser Schnittstelle veranschaulicht.

public class ServerSinkProvider : IServerChannelSinkProvider
{

    // The next provider in the chain.
    private IServerChannelSinkProvider nextProvider;

    public IServerChannelSinkProvider 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 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) );
    }

    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
    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) {}

}


/** @attribute SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)
*/
public class ServerSinkProvider implements IServerChannelSinkProvider
{
    // The next provider in the chain.
    private IServerChannelSinkProvider nextProvider;

    /** @property 
     */
    public IServerChannelSinkProvider get_Next()
    {
        return nextProvider;
    }//get_Next

    /** @property 
     */
    public void set_Next(IServerChannelSinkProvider value)
    {
        nextProvider = value;
    }//set_Next

    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);
    } //CreateSink

    public void GetChannelData(IChannelDataStore channelData)
    {
    } //GetChannelData

    // 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)
    {
    } //ServerSinkProvider 
} //ServerSinkProvider


Ein Beispiel für die entsprechende Implementierung einer Serversenke finden Sie in der Dokumentation der IServerChannelSink-Schnittstelle.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0, 1.1, 1.0
Anzeigen: