Freigeben über


RemotingConfiguration.RegisterActivatedServiceType Methode

Definition

Registriert ein Objekt am Dienstende als ein Objekt Type , das auf Anforderung von einem Client aktiviert werden kann.

Überlädt

Name Beschreibung
RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registriert einen Objekttyp, der im bereitgestellten ActivatedServiceTypeEntry Dienstende als einen Objekttyp registriert wird, der auf Anforderung von einem Client aktiviert werden kann.

RegisterActivatedServiceType(Type)

Registriert einen angegebenen Objekttyp am Dienstende als Typ, der auf Anforderung von einem Client aktiviert werden kann.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registriert einen Objekttyp, der im bereitgestellten ActivatedServiceTypeEntry Dienstende als einen Objekttyp registriert wird, der auf Anforderung von einem Client 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

entry
ActivatedServiceTypeEntry

Konfigurationseinstellungen für den clientaktiven Typ.

Ausnahmen

Mindestens einer der Anrufer im Callstack verfügt nicht über die Berechtigung zum Konfigurieren von Remotingtypen und Kanälen.

Hinweise

Um eine Instanz eines clientaktivierten Objekts auf dem Server zu erstellen, müssen Sie dessen Type Und sie muss mithilfe der RegisterActivatedServiceType Methode auf dem Server registriert werden. Um einen Proxy für eine neue Instanz des clientaktiven Objekts abzurufen, muss der Client zuerst einen Kanal registrieren ChannelServices und dann das Objekt durch Aufrufen new oder Activator.CreateInstanceaktivieren.

Um einen clientaktiven Objekttyp mit dem new Schlüsselwort zu aktivieren, müssen Sie zuerst den Objekttyp am Clientende mithilfe der RegisterActivatedClientType Methode registrieren. Durch Aufrufen der RegisterActivatedClientType Methode erhält die Remotinginfrastruktur den Standort der Remoteanwendung, wo new versucht wird, sie zu erstellen. Wenn Sie andererseits die CreateInstance Methode verwenden, um eine neue Instanz des clientaktiven Objekts zu erstellen, müssen Sie die URL der Remoteanwendung als Parameter angeben, sodass keine vorherige Registrierung am 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.

Weitere Informationen

Gilt für:

RegisterActivatedServiceType(Type)

Registriert einen angegebenen Objekttyp am Dienstende als Typ, der auf Anforderung von einem Client 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

type
Type

Das Type objekt, das registriert werden soll.

Ausnahmen

Mindestens einer der Anrufer im Callstack verfügt nicht über die Berechtigung zum Konfigurieren von Remotingtypen und Kanälen.

Beispiele

Im folgenden Codebeispiel wird die Registrierung eines Objekttyps auf dem Server als Typ veranschaulicht, der vom Client aktiviert werden kann. Den Clientcode, der dem dargestellten 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 ist.

#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 Und sie muss mithilfe der RegisterActivatedServiceType Methode auf dem Server registriert werden. Um einen Proxy für eine neue Instanz des clientaktiven Objekts abzurufen, muss der Client zuerst einen Kanal registrieren ChannelServices und dann das Objekt durch Aufrufen new oder Activator.CreateInstanceaktivieren.

Um einen clientaktiven Objekttyp mit dem new Schlüsselwort zu aktivieren, müssen Sie zuerst den Objekttyp am Clientende mithilfe der RegisterActivatedClientType Methode registrieren. Durch Aufrufen der RegisterActivatedClientType Methode erhält die Remotinginfrastruktur den Standort der Remoteanwendung, wo new versucht wird, sie zu erstellen. Wenn Sie andererseits die CreateInstance Methode verwenden, um eine neue Instanz des clientaktiven Objekts zu erstellen, müssen Sie die URL der Remoteanwendung als Parameter angeben, sodass keine vorherige Registrierung am 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.

Weitere Informationen

Gilt für: