ActivatedClientTypeEntry-Klasse
Enthält Werte für einen Objekttyp, der auf der Clientseite als Typ registriert ist, der auf dem Server aktiviert werden kann.
Namespace: System.Runtime.Remoting
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<ComVisibleAttribute(True)> _
Public Class ActivatedClientTypeEntry
Inherits TypeEntry
'Usage
Dim instance As ActivatedClientTypeEntry
[ComVisibleAttribute(true)]
public class ActivatedClientTypeEntry : TypeEntry
[ComVisibleAttribute(true)]
public ref class ActivatedClientTypeEntry : public TypeEntry
/** @attribute ComVisibleAttribute(true) */
public class ActivatedClientTypeEntry extends TypeEntry
ComVisibleAttribute(true)
public class ActivatedClientTypeEntry extends TypeEntry
Hinweise
Wenn Sie eine Instanz eines vom Client aktivierten Objekts auf dem Client erstellen möchten, müssen Sie seinen Type kennen, und das Objekt muss auf dem Client mithilfe der RegisterActivatedClientType-Methode registriert werden. Der Client muss zuerst mit ChannelServices einen Channel registrieren und anschließend das Objekt durch Aufruf von new aktivieren, um einen Proxy für eine neue Instanz des vom Client aktivierten Objekts abzurufen.
Wenn Sie mit dem Schlüsselwort new einen vom Client aktivierten Objekttyp aktivieren möchten, müssen Sie diesen unter Verwendung der RegisterActivatedClientType-Methode auf dem Client registrieren. Durch Aufruf von RegisterActivatedClientType weisen Sie der Remotinginfrastruktur den Speicherort der Remoteanwendung zu, in dem new diese zu erstellen versucht. Wenn Sie hingegen eine neue Instanz des vom Client aktivierten Objekts unter Verwendung der Activator.CreateInstance-Methode erstellen, müssen Sie den URL der Remoteanwendung als Parameter angeben. Somit ist keine vorherige Registrierung auf dem Client erforderlich. Um für die Activator.CreateInstance-Methode den URL des Servers angeben zu können, auf dem Sie das Objekt erstellen möchten, müssen Sie den URL in einer Instanz der UrlAttribute-Klasse kapseln.
Eine detaillierte Beschreibung vom Client aktivierter Objekte und der Aktivierung von Remoteobjekten finden Sie unter Aktivierung von Remoteobjekten.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie mit einem ActivatedClientTypeEntry ein vom Client aktiviertes Remoteobjekt registriert wird. Das Beispiel enthält drei Teile, einen Client, einen Server und ein Remoteobjekt, das von Client und Server verwendet wird.
Im folgenden Codebeispiel wird ein Client veranschaulicht:
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Public Class MyClient
Public Shared Sub Main()
' Register TCP Channel.
ChannelServices.RegisterChannel(New TcpChannel())
' Create activated client type entry.
Dim myActivatedClientTypeEntry As _
New ActivatedClientTypeEntry(GetType(HelloServer), _
"tcp://localhost:8082")
' Register type on client to activate it on the server.
RemotingConfiguration.RegisterActivatedClientType( _
myActivatedClientTypeEntry)
' Activate a client activated object type.
Dim myHelloServer As New HelloServer("ParameterString")
' Print the object type.
Console.WriteLine("Object type of client activated object: " + _
myActivatedClientTypeEntry.ObjectType.ToString())
' Print the application URL.
Console.WriteLine("Application url where the type is activated: " + _
myActivatedClientTypeEntry.ApplicationUrl)
' Print the string representation of the type entry.
Console.WriteLine( _
"Type name, assembly name and application URL " + _
"of the remote object: " + _
myActivatedClientTypeEntry.ToString())
' Print a blank line.
Console.WriteLine()
' Check that server was located.
If myHelloServer Is Nothing Then
Console.WriteLine("Could not locate server")
Else
Console.WriteLine("Calling remote object")
Console.WriteLine(myHelloServer.HelloMethod("Bill"))
End If
End Sub 'Main
End Class 'MyClient
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class MyClient
{
public static void Main()
{
// Register TCP Channel.
ChannelServices.RegisterChannel(new TcpChannel());
// Create activated client type entry.
ActivatedClientTypeEntry myActivatedClientTypeEntry =
new ActivatedClientTypeEntry(typeof(HelloServer),
"tcp://localhost:8082");
// Register type on client to activate it on the server.
RemotingConfiguration.RegisterActivatedClientType(
myActivatedClientTypeEntry);
// Activate a client activated object type.
HelloServer myHelloServer = new HelloServer("ParameterString");
// Print the object type.
Console.WriteLine(
"Object type of client activated object: " +
myActivatedClientTypeEntry.ObjectType.ToString());
// Print the application URL.
Console.WriteLine(
"Application url where the type is activated: " +
myActivatedClientTypeEntry.ApplicationUrl);
// Print the string representation of the type entry.
Console.WriteLine(
"Type name, assembly name and application URL " +
"of the remote object: " +
myActivatedClientTypeEntry.ToString());
// Print a blank line.
Console.WriteLine();
// Check that server was located.
if (myHelloServer == null)
{
Console.WriteLine("Could not locate server");
}
else
{
Console.WriteLine("Calling remote object");
Console.WriteLine(myHelloServer.HelloMethod("Bill"));
}
}
}
#using <System.Runtime.Remoting.dll>
#using <ActivatedClientTypeEntry_Share.dll>
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
static void main()
{
// Register TCP Channel.
ChannelServices::RegisterChannel( gcnew TcpChannel );
// Create activated client type entry.
ActivatedClientTypeEntry^ activatedClientTypeEntry = gcnew ActivatedClientTypeEntry( HelloServer::typeid, "tcp://localhost:8082" );
// Register type on client to activate it on the server.
RemotingConfiguration::RegisterActivatedClientType( activatedClientTypeEntry );
// Activate a client activated object type.
HelloServer^ helloServer = gcnew HelloServer( "ParameterString" );
// Print the object type.
Console::WriteLine( "Object type of client activated object: {0}", activatedClientTypeEntry->ObjectType->ToString() );
// Print the application URL.
Console::WriteLine( "Application url where the type is activated: {0}", activatedClientTypeEntry->ApplicationUrl->ToString() );
// Print the string representation of the type entry.
Console::WriteLine( "Type and assembly name and application URL of the remote object: {0}", activatedClientTypeEntry->ToString() );
// Print a blank line.
Console::WriteLine();
// Check that server was located.
if ( !helloServer )
{
Console::WriteLine( "Could not locate server" );
}
else
{
Console::WriteLine( "Calling remote object" );
Console::WriteLine( helloServer->HelloMethod( "Bill" ) );
}
}
import System.*;
import System.Runtime.Remoting.*;
import System.Runtime.Remoting.Channels.*;
import System.Runtime.Remoting.Channels.Tcp.*;
public class MyClient
{
public static void main(String[] args)
{
// Register TCP Channel.
ChannelServices.RegisterChannel(new TcpChannel());
// Create activated client type entry.
ActivatedClientTypeEntry myActivatedClientTypeEntry =
new ActivatedClientTypeEntry(HelloServer.class.ToType(),
"tcp://localhost:8082");
// Register type on client to activate it on the server.
RemotingConfiguration.RegisterActivatedClientType(
myActivatedClientTypeEntry);
// Activate a client activated object type.
HelloServer myHelloServer = new HelloServer("ParameterString");
// Print the object type.
Console.WriteLine(("Object type of client activated object: "
+ myActivatedClientTypeEntry.get_ObjectType().ToString()));
// Print the application URL.
Console.WriteLine("Application url where the type is activated: "
+ myActivatedClientTypeEntry.get_ApplicationUrl());
// Print the string representation of the type entry.
Console.WriteLine("Type name, assembly name and application URL "
+ "of the remote object: " + myActivatedClientTypeEntry.ToString());
// Print a blank line.
Console.WriteLine();
// Check that server was located.
if (myHelloServer == null) {
Console.WriteLine("Could not locate server");
}
else {
Console.WriteLine("Calling remote object");
Console.WriteLine(myHelloServer.HelloMethod("Bill"));
}
} //main
} //MyClient
Im folgenden Codebeispiel wird ein Server für diesen Client veranschaulicht:
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Public Class MyServer
Public Shared Sub Main()
ChannelServices.RegisterChannel(New TcpChannel(8082))
RemotingConfiguration.RegisterActivatedServiceType(GetType(HelloServer))
Console.WriteLine("Press enter to stop this process")
Console.ReadLine()
End Sub 'Main
End Class 'MyServer
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class MyServer
{
public static void Main()
{
ChannelServices.RegisterChannel(new TcpChannel(8082));
RemotingConfiguration.RegisterActivatedServiceType(typeof(HelloServer));
Console.WriteLine("Press enter to stop this process");
Console.ReadLine();
}
}
#using <ActivatedClientTypeEntry_Share.dll>
#using <System.Runtime.Remoting.dll>
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
void main()
{
ChannelServices::RegisterChannel( gcnew TcpChannel( 8082 ) );
RemotingConfiguration::RegisterActivatedServiceType( HelloServer::typeid );
Console::WriteLine( "Press enter to stop this process" );
Console::ReadLine();
}
import System.*;
import System.Runtime.Remoting.*;
import System.Runtime.Remoting.Channels.*;
import System.Runtime.Remoting.Channels.Tcp.*;
public class MyServer
{
public static void main(String[] args)
{
ChannelServices.RegisterChannel(new TcpChannel(8082));
RemotingConfiguration.RegisterActivatedServiceType(HelloServer.
class.ToType());
Console.WriteLine("Press enter to stop this process");
Console.ReadLine();
} //main
} //MyServer
Im folgenden Codebeispiel wird das von Client und Server verwendete Remoteobjekt bereitgestellt:
Imports System
Public Class HelloServer
Inherits MarshalByRefObject
Public Sub New(myString As String)
Console.WriteLine("HelloServer activated")
Console.WriteLine("Parameter passed to the constructor is " + myString)
End Sub 'New
Public Function HelloMethod(myName As String) As String
Console.WriteLine("HelloMethod : {0}", myName)
Return "Hi there " + myName
End Function 'HelloMethod
End Class 'HelloServer
using System;
public class HelloServer : MarshalByRefObject
{
public HelloServer(String myString)
{
Console.WriteLine("HelloServer activated");
Console.WriteLine("Parameter passed to the constructor is "+myString);
}
public String HelloMethod(String myName)
{
Console.WriteLine("HelloMethod : {0}",myName);
return "Hi there " + myName;
}
}
using namespace System;
public ref class HelloServer: public MarshalByRefObject
{
public:
HelloServer( String^ myString )
{
Console::WriteLine( "HelloServer activated" );
Console::WriteLine( "Paramater passed to the constructor is {0}", myString );
}
String^ HelloMethod( String^ myName )
{
Console::WriteLine( "HelloMethod : {0}", myName );
return String::Format( "Hi there {0}", myName );
}
};
import System.*;
public class HelloServer extends MarshalByRefObject
{
public HelloServer(String myString)
{
Console.WriteLine("HelloServer activated");
Console.WriteLine("Parameter passed to the constructor is "
+ myString);
} //HelloServer
public String HelloMethod(String myName)
{
Console.WriteLine("HelloMethod : {0}", myName);
return "Hi there " + myName;
} //HelloMethod
} //HelloServer
Vererbungshierarchie
System.Object
System.Runtime.Remoting.TypeEntry
System.Runtime.Remoting.ActivatedClientTypeEntry
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
ActivatedClientTypeEntry-Member
System.Runtime.Remoting-Namespace
RegisterActivatedClientType