TcpServerChannel-Klasse
Implementiert einen Serverchannel für Remoteaufrufe, der das TCP-Protokoll zum Übertragen von Meldungen verwendet.
Namespace: System.Runtime.Remoting.Channels.Tcp
Assembly: System.Runtime.Remoting (in system.runtime.remoting.dll)
Syntax
'Declaration
Public Class TcpServerChannel
Implements IChannelReceiver, IChannel, ISecurableChannel
'Usage
Dim instance As TcpServerChannel
public class TcpServerChannel : IChannelReceiver, IChannel, ISecurableChannel
public ref class TcpServerChannel : IChannelReceiver, IChannel, ISecurableChannel
public class TcpServerChannel implements IChannelReceiver, IChannel,
ISecurableChannel
public class TcpServerChannel implements IChannelReceiver, IChannel,
ISecurableChannel
Hinweise
Channels transportieren Meldungen über Remotinggrenzen hinweg (z. B. zwischen Computern oder Anwendungsdomänen). Die TcpServerChannel-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 Serverseite auszuführen, können Sie eine Implementierung der IServerChannelSinkProvider-Schnittstelle angeben, die alle von der TcpServerChannel-Schnittstelle verarbeiteten Meldungen durchlaufen.
Die TcpServerChannel-Instanz akzeptiert in binärem oder SOAP-Format serialisierte Meldungen.
Ein TcpServerChannel-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 TcpServerChannel-Konstruktor) festgelegt werden können. Eine Liste mit diesen Konfigurationseigenschaften finden Sie unter Konfigurationseigenschaften für Channel und Formatierungsprogramme.
Hinweis
Wenn der Servercomputer unter Windows 95/98/Me ausgeführt wird, kann der TcpServerChannel nicht als sicher angegeben werden.
Beispiel
Im folgenden Codebeispiel wird die Verwendung eines remotefähigen Typs veranschaulicht.
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);
}
};
Im folgenden Codebeispiel wird die Verwendung der TcpServerChannel-Klasse veranschaulicht, um einen remotefähigen Typ verfügbar zu machen.
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Security.Permissions;
public class Server
{
[SecurityPermission(SecurityAction.LinkDemand)]
public static void Main()
{
// Set up a server channel.
TcpServerChannel serverChannel = new TcpServerChannel(9090);
ChannelServices.RegisterChannel(serverChannel);
// Expose an object for remote calls.
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(Remotable), "Remotable.rem", WellKnownObjectMode.Singleton
);
// Show the name and priority of the channel.
Console.WriteLine("Channel Name: {0}", serverChannel.ChannelName);
Console.WriteLine("Channel Priority: {0}", serverChannel.ChannelPriority);
// Show the URIs associated with the channel.
ChannelDataStore data = (ChannelDataStore) serverChannel.ChannelData;
foreach (string uri in data.ChannelUris)
{
Console.WriteLine(uri);
}
// Wait for method calls.
Console.WriteLine("Listening...");
Console.ReadLine();
}
}
#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 server channel.
TcpServerChannel^ serverChannel = gcnew TcpServerChannel( 9090 );
ChannelServices::RegisterChannel( serverChannel );
// Expose an object for remote calls.
RemotingConfiguration::RegisterWellKnownServiceType( Remotable::typeid, "Remotable.rem", WellKnownObjectMode::Singleton );
// Show the name and priority of the channel.
Console::WriteLine( "Channel Name: {0}", serverChannel->ChannelName );
Console::WriteLine( "Channel Priority: {0}", serverChannel->ChannelPriority );
// Show the URIs associated with the channel.
ChannelDataStore^ data = dynamic_cast<ChannelDataStore^>(serverChannel->ChannelData);
System::Collections::IEnumerator^ myEnum = data->ChannelUris->GetEnumerator();
while ( myEnum->MoveNext() )
{
String^ uri = safe_cast<String^>(myEnum->Current);
Console::WriteLine( uri );
}
// Wait for method calls.
Console::WriteLine( "Listening..." );
Console::ReadLine();
}
Vererbungshierarchie
System.Object
System.Runtime.Remoting.Channels.Tcp.TcpServerChannel
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
TcpServerChannel-Member
System.Runtime.Remoting.Channels.Tcp-Namespace