ActivatedClientTypeEntry Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Enthält Werte für einen Objekttyp, der auf der Clientseite als Typ registriert ist, der auf dem Server aktiviert werden kann.
public ref class ActivatedClientTypeEntry : System::Runtime::Remoting::TypeEntry
public class ActivatedClientTypeEntry : System.Runtime.Remoting.TypeEntry
[System.Runtime.InteropServices.ComVisible(true)]
public class ActivatedClientTypeEntry : System.Runtime.Remoting.TypeEntry
type ActivatedClientTypeEntry = class
inherit TypeEntry
[<System.Runtime.InteropServices.ComVisible(true)>]
type ActivatedClientTypeEntry = class
inherit TypeEntry
Public Class ActivatedClientTypeEntry
Inherits TypeEntry
- Vererbung
- Attribute
Beispiele
Das folgende Codebeispiel zeigt, wie sie ein ActivatedClientTypeEntry verwenden, um ein vom Client aktiviertes Remoteobjekt zu registrieren. Das Beispiel enthält drei Teile: einen Client, einen Server und ein Remoteobjekt, das vom Client und Server verwendet wird.
Das folgende Codebeispiel zeigt einen Client:
#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" ) );
}
}
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"));
}
}
}
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
End Class
Das folgende Codebeispiel zeigt einen Server für diesen Client:
#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();
}
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();
}
}
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
End Class
Im folgenden Codebeispiel wird das Remoteobjekt bereitgestellt, das vom Client und dem Server verwendet wird:
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 );
}
};
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;
}
}
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
Public Function HelloMethod(myName As String) As String
Console.WriteLine("HelloMethod : {0}", myName)
Return "Hi there " + myName
End Function 'HelloMethod
End Class
Hinweise
Um eine Instanz eines clientaktivierten Objekts auf dem Client zu erstellen, müssen Sie dessen Type kennen, und es muss mit der RegisterActivatedClientType -Methode auf dem Client registriert sein. Um einen Proxy für eine neue Instanz des vom Client aktivierten Objekts abzurufen, muss der Client zuerst einen Kanal bei ChannelServices registrieren und dann das -Objekt aktivieren, indem er aufruft new
.
Um einen vom Client aktivierten Objekttyp mit dem new
Schlüsselwort zu aktivieren, müssen Sie zuerst den Objekttyp auf dem Client mithilfe der RegisterActivatedClientType -Methode registrieren. Durch den Aufruf RegisterActivatedClientType geben Sie der Remotinginfrastruktur den Speicherort der Remoteanwendung, an der new
versucht wird, sie zu erstellen. Wenn Sie hingegen die Activator.CreateInstance -Methode verwenden, um eine neue Instanz des clientaktivierten Objekts zu erstellen, müssen Sie die URL der Remoteanwendung als Parameter angeben, sodass keine vorherige Registrierung auf dem Clientende erforderlich ist. Um die Activator.CreateInstance -Methode mit der URL des Servers anzugeben, auf dem Sie das -Objekt erstellen möchten, müssen Sie die URL in einer Instanz der UrlAttribute -Klasse kapseln.
Eine ausführliche Beschreibung der vom Client aktivierten Objekte und der Remoteobjektaktivierung finden Sie unter Aktivierung von Remoteobjekten.
Konstruktoren
ActivatedClientTypeEntry(String, String, String) |
Initialisiert eine neue Instanz der ActivatedClientTypeEntry-Klasse mit dem angegebenen Typnamen, Assemblynamen und Anwendungs-URL. |
ActivatedClientTypeEntry(Type, String) |
Initialisiert eine neue Instanz der ActivatedClientTypeEntry-Klasse mit dem angegebenen Type und dem angegebenen Anwendungs-URL. |
Eigenschaften
ApplicationUrl |
Ruft die URL der Anwendung ab, in der der Typ aktiviert werden soll. |
AssemblyName |
Ruft den Assemblynamen des Objekttyps ab, der als remote aktivierter Typ konfiguriert ist. (Geerbt von TypeEntry) |
ContextAttributes |
Ruft die Kontextattribute für den vom Client aktivierten Typ ab oder legt diese fest. |
ObjectType |
Ruft den Type des vom Client aktivierten Typs ab. |
TypeName |
Ruft den vollständigen Typnamen des Objekttyps ab, der als remote aktivierter Typ konfiguriert ist. (Geerbt von TypeEntry) |
Methoden
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt den Typnamen, Assemblynamen und Anwendungs-URL des vom Client aktivierten Typs als String zurück. |