RemotingConfiguration.RegisterActivatedServiceType Metod

Definition

Registrerar ett objekt Type i tjänstslutet som ett objekt som kan aktiveras vid begäran från en klient.

Överlagringar

Name Description
RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registrerar en objekttyp som registrerats i tjänstslutet ActivatedServiceTypeEntry som en som kan aktiveras på begäran från en klient.

RegisterActivatedServiceType(Type)

Registrerar en angiven objekttyp i tjänstslutet som en typ som kan aktiveras vid begäran från en klient.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registrerar en objekttyp som registrerats i tjänstslutet ActivatedServiceTypeEntry som en som kan aktiveras på begäran från en klient.

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)

Parametrar

entry
ActivatedServiceTypeEntry

Konfigurationsinställningar för den klientaktiverade typen.

Undantag

Minst en av anroparna högre i anropsstacken har inte behörighet att konfigurera fjärrkommunikationstyper och kanaler.

Kommentarer

Om du vill skapa en instans av ett klientaktiverat objekt på servern måste du känna till det Type och det måste vara registrerat på serverslutet RegisterActivatedServiceType med hjälp av metoden . För att hämta en proxy för en ny instans av det klientaktiverade objektet måste klienten först registrera en kanal med ChannelServices och sedan aktivera objektet genom att anropa new eller Activator.CreateInstance.

Om du vill aktivera en klientaktiverad objekttyp med nyckelordet new måste du först registrera objekttypen i klientdelen med hjälp av RegisterActivatedClientType metoden . RegisterActivatedClientType Att anropa metoden ger fjärrkommunikationsinfrastrukturen platsen för fjärrprogrammet, där new försök görs att skapa den. Om du å andra sidan använder CreateInstance metoden för att skapa en ny instans av det klientaktiverade objektet måste du ange fjärrprogrammets URL som en parameter, så det krävs ingen tidigare registrering i klientdelen. Om du vill ange CreateInstance metoden med URL:en för den server där du vill skapa objektet måste du kapsla in URL:en i en instans av UrlAttribute klassen.

En detaljerad beskrivning av klientaktiverade objekt finns i Klientaktivering.

Se även

Gäller för

RegisterActivatedServiceType(Type)

Registrerar en angiven objekttyp i tjänstslutet som en typ som kan aktiveras vid begäran från en klient.

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

Parametrar

type
Type

Objektet Type som ska registreras.

Undantag

Minst en av anroparna högre i anropsstacken har inte behörighet att konfigurera fjärrkommunikationstyper och kanaler.

Exempel

I följande kodexempel visas registrering av en objekttyp på servern som en typ som kan aktiveras av klienten. För klientkoden som motsvarar den presenterade serverkoden, se exemplet för RegisterActivatedClientType metoden.

#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

I följande kodexempel visas tjänstobjektet som registrerats i exempelkoden ovan.

#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

Kommentarer

Om du vill skapa en instans av ett klientaktiverat objekt på servern måste du känna till det Type och det måste vara registrerat på serverslutet RegisterActivatedServiceType med hjälp av metoden . För att hämta en proxy för en ny instans av det klientaktiverade objektet måste klienten först registrera en kanal med ChannelServices och sedan aktivera objektet genom att anropa new eller Activator.CreateInstance.

Om du vill aktivera en klientaktiverad objekttyp med nyckelordet new måste du först registrera objekttypen i klientdelen med hjälp av RegisterActivatedClientType metoden . RegisterActivatedClientType Att anropa metoden ger fjärrkommunikationsinfrastrukturen platsen för fjärrprogrammet, där new försök görs att skapa den. Om du å andra sidan använder CreateInstance metoden för att skapa en ny instans av det klientaktiverade objektet måste du ange fjärrprogrammets URL som en parameter, så det krävs ingen tidigare registrering i klientdelen. Om du vill ange CreateInstance metoden med URL:en för den server där du vill skapa objektet måste du kapsla in URL:en i en instans av UrlAttribute klassen.

En detaljerad beskrivning av klientaktiverade objekt finns i Klientaktivering.

Se även

Gäller för