TcpClientChannel-Klasse
Implementiert für Remoteaufrufe einen Clientchannel, der Meldungen mithilfe von TCP überträgt.
Namespace: System.Runtime.Remoting.Channels.Tcp
Assembly: System.Runtime.Remoting (in system.runtime.remoting.dll)
Syntax
'Declaration
Public Class TcpClientChannel
Implements IChannelSender, IChannel, ISecurableChannel
'Usage
Dim instance As TcpClientChannel
public class TcpClientChannel : IChannelSender, IChannel, ISecurableChannel
public ref class TcpClientChannel : IChannelSender, IChannel, ISecurableChannel
public class TcpClientChannel implements IChannelSender, IChannel,
ISecurableChannel
public class TcpClientChannel implements IChannelSender, IChannel,
ISecurableChannel
Hinweise
Channels transportieren Meldungen über Remotinggrenzen hinweg (z. B. zwischen Computern oder Anwendungsdomänen). Die TcpClientChannel-Klasse transportiert Meldungen mithilfe des TCP-Protokolls.
Channels werden von der .NET Framework Remoting-Infrastruktur verwendet, um Remoteaufrufe zu transportieren. Wenn ein Client ein Remoteobjekt aufruft, wird der Aufruf in eine Meldung serialisiert, die von einem Clientchannel gesendet und von einem Serverchannel empfangen wird. Anschließend erfolgt die Deserialisierung und Verarbeitung. Alle zurückgegebenen Werte werden vom Serverchannel gesendet und vom Clientchannel empfangen.
Um eine zusätzliche Verarbeitung von Meldungen auf Clientseite auszuführen, können Sie eine Implementierung der IClientChannelSinkProvider-Schnittstelle angeben, die alle vom TcpClientChannel verarbeiteten Meldungen durchlaufen.
Standardmäßig verwendet die TcpClientChannel-Klasse ein binäres Formatierungsprogramm, um alle Meldungen zu serialisieren.
Ein TcpClientChannel-Objekt verfügt über zugeordnete Konfigurationseigenschaften, die zur Laufzeit entweder in einer Konfigurationsdatei (durch Aufrufen der statischen RemotingConfiguration.Configure-Methode) oder programmgesteuert (durch das Übergeben einer IDictionary-Auflistung an den TcpClientChannel-Konstruktor) festgelegt werden können. Eine Liste dieser Konfigurationseigenschaften finden Sie in der Dokumentation für TcpClientChannel.
Beispiel
Im folgenden Codebeispiel wird die Verwendung der TcpClientChannel-Klasse zum Aufrufen eines Remotetyps veranschaulicht.
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Security.Permissions;
public class Client
{
[SecurityPermission(SecurityAction.LinkDemand)]
public static void Main()
{
// Set up a client channel.
TcpClientChannel clientChannel = new TcpClientChannel();
ChannelServices.RegisterChannel(clientChannel);
// Show the name and priority of the channel.
Console.WriteLine("Channel Name: {0}", clientChannel.ChannelName);
Console.WriteLine("Channel Priority: {0}", clientChannel.ChannelPriority);
// Obtain a proxy for a remote object.
RemotingConfiguration.RegisterWellKnownClientType(
typeof(Remotable), "tcp://localhost:9090/Remotable.rem"
);
// Call a method on the object.
Remotable remoteObject = new Remotable();
Console.WriteLine( remoteObject.GetCount() );
}
}
#using <System.Runtime.Remoting.dll>
#using <System.dll>
#using <Remotable.dll>
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
int main()
{
// Set up a client channel.
TcpClientChannel^ clientChannel = gcnew TcpClientChannel;
ChannelServices::RegisterChannel( clientChannel );
// Show the name and priority of the channel.
Console::WriteLine( "Channel Name: {0}", clientChannel->ChannelName );
Console::WriteLine( "Channel Priority: {0}", clientChannel->ChannelPriority );
// Obtain a proxy for a remote object.
RemotingConfiguration::RegisterWellKnownClientType( Remotable::typeid, "tcp://localhost:9090/Remotable.rem" );
// Call a method on the object.
Remotable ^ remoteObject = gcnew Remotable;
Console::WriteLine( remoteObject->GetCount() );
}
Der Remotetyp, der im oben stehenden Beispiel aufgerufen wird, wird durch folgenden Code definiert.
using System;
using System.Runtime.Remoting;
public class Remotable : MarshalByRefObject
{
private int callCount = 0;
public int GetCount()
{
callCount++;
return(callCount);
}
}
using namespace System;
using namespace System::Runtime::Remoting;
public ref class Remotable: public MarshalByRefObject
{
private:
int callCount;
public:
Remotable()
: callCount( 0 )
{}
int GetCount()
{
callCount++;
return (callCount);
}
};
Vererbungshierarchie
System.Object
System.Runtime.Remoting.Channels.Tcp.TcpClientChannel
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
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
TcpClientChannel-Member
System.Runtime.Remoting.Channels.Tcp-Namespace