RemotingConfiguration.RegisterActivatedServiceType Methode

Definitie

Registreert een object aan het service-einde als een object Type dat kan worden geactiveerd op aanvraag van een client.

Overloads

Name Description
RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registreert een objecttype dat is vastgelegd in de opgegeven ActivatedServiceTypeEntry service-end als een objecttype dat kan worden geactiveerd op aanvraag van een client.

RegisterActivatedServiceType(Type)

Registreert een opgegeven objecttype aan het service-einde als een type dat kan worden geactiveerd op aanvraag van een client.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registreert een objecttype dat is vastgelegd in de opgegeven ActivatedServiceTypeEntry service-end als een objecttype dat kan worden geactiveerd op aanvraag van een client.

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)

Parameters

entry
ActivatedServiceTypeEntry

Configuratie-instellingen voor het door de client geactiveerde type.

Uitzonderingen

Ten minste één van de bellers hoger in de callstack is niet gemachtigd om externe typen en kanalen te configureren.

Opmerkingen

Als u een exemplaar van een door de client geactiveerd object op de server wilt maken, moet u weten wat Type het object is en moet het op de server zijn geregistreerd met behulp van de RegisterActivatedServiceType methode. Als u een proxy wilt verkrijgen voor een nieuw exemplaar van het door de client geactiveerde object, moet de client eerst een kanaal registreren bij ChannelServices en vervolgens het object activeren door aan te roepen new of Activator.CreateInstance.

Als u een door de client geactiveerd objecttype wilt activeren met het new trefwoord, moet u eerst het objecttype op de clientzijde registreren met behulp van de RegisterActivatedClientType methode. Het aanroepen van de RegisterActivatedClientType methode geeft de externe infrastructuur de locatie van de externe toepassing, waar new wordt geprobeerd deze te maken. Als u daarentegen de CreateInstance methode gebruikt om een nieuw exemplaar van het door de client geactiveerde object te maken, moet u de URL van de externe toepassing opgeven als parameter, zodat er geen voorafgaande registratie op het clienteindeinde nodig is. Als u de CreateInstance methode wilt opgeven met de URL van de server waarop u het object wilt maken, moet u de URL in een exemplaar van de UrlAttribute klasse inkapselen.

Zie Clientactivering voor een gedetailleerde beschrijving van door de client geactiveerde objecten.

Zie ook

Van toepassing op

RegisterActivatedServiceType(Type)

Registreert een opgegeven objecttype aan het service-einde als een type dat kan worden geactiveerd op aanvraag van een client.

public:
 static void RegisterActivatedServiceType(Type ^ type);
public static void RegisterActivatedServiceType(Type type);
static member RegisterActivatedServiceType : Type -> unit
Public Shared Sub RegisterActivatedServiceType (type As Type)

Parameters

type
Type

Het Type object dat moet worden geregistreerd.

Uitzonderingen

Ten minste één van de bellers hoger in de callstack is niet gemachtigd om externe typen en kanalen te configureren.

Voorbeelden

In het volgende codevoorbeeld ziet u de registratie van een objecttype op de server als een type dat door de client kan worden geactiveerd. Zie het voorbeeld voor de methode voor de clientcode die overeenkomt met de RegisterActivatedClientType gepresenteerde servercode.

#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

In het volgende codevoorbeeld ziet u het serviceobject dat is geregistreerd in de bovenstaande voorbeeldcode.

#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

Opmerkingen

Als u een exemplaar van een door de client geactiveerd object op de server wilt maken, moet u weten wat Type het object is en moet het op de server zijn geregistreerd met behulp van de RegisterActivatedServiceType methode. Als u een proxy wilt verkrijgen voor een nieuw exemplaar van het door de client geactiveerde object, moet de client eerst een kanaal registreren bij ChannelServices en vervolgens het object activeren door aan te roepen new of Activator.CreateInstance.

Als u een door de client geactiveerd objecttype wilt activeren met het new trefwoord, moet u eerst het objecttype op de clientzijde registreren met behulp van de RegisterActivatedClientType methode. Het aanroepen van de RegisterActivatedClientType methode geeft de externe infrastructuur de locatie van de externe toepassing, waar new wordt geprobeerd deze te maken. Als u daarentegen de CreateInstance methode gebruikt om een nieuw exemplaar van het door de client geactiveerde object te maken, moet u de URL van de externe toepassing opgeven als parameter, zodat er geen voorafgaande registratie op het clienteindeinde nodig is. Als u de CreateInstance methode wilt opgeven met de URL van de server waarop u het object wilt maken, moet u de URL in een exemplaar van de UrlAttribute klasse inkapselen.

Zie Clientactivering voor een gedetailleerde beschrijving van door de client geactiveerde objecten.

Zie ook

Van toepassing op