RemotingConfiguration.RegisterActivatedServiceType Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
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
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.