RemotingConfiguration.RegisterActivatedServiceType Methode
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.
Registriert auf der Dienstseite einen Objekt-Type als Typ, der auf Anforderung eines Clients aktiviert werden kann.
Überlädt
RegisterActivatedServiceType(ActivatedServiceTypeEntry) |
Registriert einen im angegebenen ActivatedServiceTypeEntry erfassten Objekttyp auf der Dienstseite als Objekttyp, der auf Anforderung eines Clients aktiviert werden kann. |
RegisterActivatedServiceType(Type) |
Registriert auf der Dienstseite einen angegebenen Objekttyp als Typ, der auf Anforderung eines Clients aktiviert werden kann. |
RegisterActivatedServiceType(ActivatedServiceTypeEntry)
Registriert einen im angegebenen ActivatedServiceTypeEntry erfassten Objekttyp auf der Dienstseite als Objekttyp, der auf Anforderung eines Clients aktiviert werden kann.
public:
static void RegisterActivatedServiceType(System::Runtime::Remoting::ActivatedServiceTypeEntry ^ entry);
public static void RegisterActivatedServiceType (System.Runtime.Remoting.ActivatedServiceTypeEntry entry);
static member RegisterActivatedServiceType : System.Runtime.Remoting.ActivatedServiceTypeEntry -> unit
Public Shared Sub RegisterActivatedServiceType (entry As ActivatedServiceTypeEntry)
Parameter
Konfigurationseinstellungen für den vom Client aktivierten Typ.
Ausnahmen
Mindestens einer der Aufrufer an höherer Position im Aufrufstapel verfügt nicht über die Berechtigung zum Konfigurieren von Remotetypen und Channels.
Hinweise
Um eine Instanz eines clientaktivierten Objekts auf dem Server zu erstellen, müssen Sie dessen Type kennen, und es muss auf dem Serverende mit der RegisterActivatedServiceType -Methode registriert werden. 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 oder Activator.CreateInstanceaufruftnew
.
Um einen clientaktivierbaren Objekttyp mit dem new
Schlüsselwort zu aktivieren, müssen Sie zuerst den Objekttyp auf dem Clientende mithilfe der RegisterActivatedClientType -Methode registrieren. Beim Aufrufen der RegisterActivatedClientType -Methode erhält die Remotinginfrastruktur den Speicherort der Remoteanwendung, an der new
versucht wird, sie zu erstellen. Wenn Sie hingegen die 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 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 finden Sie unter Clientaktivierung.
Weitere Informationen
Gilt für:
RegisterActivatedServiceType(Type)
Registriert auf der Dienstseite einen angegebenen Objekttyp als Typ, der auf Anforderung eines Clients aktiviert werden kann.
public:
static void RegisterActivatedServiceType(Type ^ type);
public static void RegisterActivatedServiceType (Type type);
static member RegisterActivatedServiceType : Type -> unit
Public Shared Sub RegisterActivatedServiceType (type As Type)
Parameter
Ausnahmen
Mindestens einer der Aufrufer an höherer Position im Aufrufstapel verfügt nicht über die Berechtigung zum Konfigurieren von Remotetypen und Channels.
Beispiele
Das folgende Codebeispiel veranschaulicht die Registrierung eines Objekttyps auf dem Server als Typ, der vom Client aktiviert werden kann. Den Clientcode, der dem angezeigten Servercode entspricht, finden Sie im Beispiel für die RegisterActivatedClientType -Methode.
#using <system.dll>
#using <system.runtime.remoting.dll>
#using "service.dll"
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;
int main()
{
ChannelServices::RegisterChannel( gcnew TcpChannel( 8082 ) );
RemotingConfiguration::RegisterActivatedServiceType( HelloServiceClass::typeid );
Console::WriteLine( "Press enter to stop this process." );
Console::ReadLine();
return 0;
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class ServerClass {
public static void Main() {
ChannelServices.RegisterChannel(new TcpChannel(8082));
RemotingConfiguration.RegisterActivatedServiceType(typeof(HelloServiceClass));
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 ServerClass
Public Shared Sub Main()
ChannelServices.RegisterChannel(New TcpChannel(8082))
RemotingConfiguration.RegisterActivatedServiceType(GetType(HelloServiceClass))
Console.WriteLine("Press enter to stop this process.")
Console.ReadLine()
End Sub
End Class
Das folgende Codebeispiel zeigt das dienstobjekt, das im obigen Beispielcode registriert wurde.
#using <system.dll>
using namespace System;
public ref class HelloServiceClass: public MarshalByRefObject
{
private:
static int n_instance;
public:
HelloServiceClass()
{
n_instance++;
Console::WriteLine( "{0} has been created. Instance # = {1}", this->GetType()->Name, n_instance );
}
~HelloServiceClass()
{
Console::WriteLine( "Destroyed instance {0} of HelloServiceClass.", n_instance );
n_instance--;
}
String^ HelloMethod( String^ name )
{
// Reports that the method was called.
Console::WriteLine();
Console::WriteLine( "Called HelloMethod on instance {0} with the '{1}' parameter.", n_instance, name );
// Calculates and returns the result to the client.
return String::Format( "Hi there {0}", name );
}
};
using System;
public class HelloServiceClass : MarshalByRefObject {
static int n_instance;
public HelloServiceClass() {
n_instance++;
Console.WriteLine(this.GetType().Name + " has been created. Instance # = {0}", n_instance);
}
~HelloServiceClass() {
Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", n_instance);
n_instance --;
}
public String HelloMethod(String name) {
// Reports that the method was called.
Console.WriteLine();
Console.WriteLine("Called HelloMethod on instance {0} with the '{1}' parameter.",
n_instance, name);
// Calculates and returns the result to the client.
return "Hi there " + name + ".";
}
}
Public Class HelloServiceClass
Inherits MarshalByRefObject
Private Shared n_instance As Integer
Public Sub New()
n_instance += 1
Console.WriteLine(Me.GetType().Name + " has been created. Instance # = {0}", n_instance)
End Sub
Protected Overrides Sub Finalize()
Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", n_instance)
n_instance -= 1
MyBase.Finalize()
End Sub
Public Function HelloMethod(name As [String]) As [String]
' Reports that the method was called.
Console.WriteLine()
Console.WriteLine("Called HelloMethod on instance {0} with the '{1}' parameter.", n_instance, name)
' Calculates and returns the result to the client.
Return "Hi there " + name + "."
End Function 'HelloMethod
End Class
Hinweise
Um eine Instanz eines clientaktivierten Objekts auf dem Server zu erstellen, müssen Sie dessen Type kennen, und es muss auf dem Serverende mit der RegisterActivatedServiceType -Methode registriert werden. 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 oder Activator.CreateInstanceaufruftnew
.
Um einen clientaktivierbaren Objekttyp mit dem new
Schlüsselwort zu aktivieren, müssen Sie zuerst den Objekttyp auf dem Clientende mithilfe der RegisterActivatedClientType -Methode registrieren. Beim Aufrufen der RegisterActivatedClientType -Methode erhält die Remotinginfrastruktur den Speicherort der Remoteanwendung, an der new
versucht wird, sie zu erstellen. Wenn Sie hingegen die 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 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 finden Sie unter Clientaktivierung.