RemotingConfiguration.RegisterActivatedServiceType Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zaregistruje objekt na konci služby jako objekt Type , který lze aktivovat na žádost klienta.
Přetížení
RegisterActivatedServiceType(ActivatedServiceTypeEntry) |
Zaregistruje typ objektu zaznamenaný v zadaném ActivatedServiceTypeEntry na straně služby jako objekt, který lze aktivovat na žádost klienta. |
RegisterActivatedServiceType(Type) |
Zaregistruje zadaný typ objektu na konci služby jako typ, který lze aktivovat na žádost klienta. |
RegisterActivatedServiceType(ActivatedServiceTypeEntry)
Zaregistruje typ objektu zaznamenaný v zadaném ActivatedServiceTypeEntry na straně služby jako objekt, který lze aktivovat na žádost klienta.
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)
Parametry
Nastavení konfigurace pro typ aktivovaný klientem.
Výjimky
Alespoň jeden z volajících, kteří jsou výše v nástroji calltack, nemá oprávnění ke konfiguraci typů a kanálů vzdálené komunikace.
Poznámky
Chcete-li vytvořit instanci objektu aktivovaného klientem na serveru, musíte znát jeho Type a musí být zaregistrována na straně serveru pomocí RegisterActivatedServiceType metody . Pokud chcete získat proxy pro novou instanci objektu aktivovaného klientem, musí klient nejprve zaregistrovat kanál pomocí ChannelServices a pak aktivovat objekt voláním new
nebo Activator.CreateInstance.
Chcete-li aktivovat typ objektu aktivovaný klientem pomocí klíčového new
slova, musíte nejprve zaregistrovat typ objektu na straně klienta pomocí RegisterActivatedClientType metody . Volání metody RegisterActivatedClientType poskytne infrastruktuře vzdálené komunikace umístění vzdálené aplikace, kde new
se pokusí ji vytvořit. Pokud naopak použijete metodu CreateInstance k vytvoření nové instance objektu aktivovaného klientem, musíte jako parametr zadat adresu URL vzdálené aplikace, takže není nutná žádná předchozí registrace na straně klienta. Chcete-li zadat metodu CreateInstance s adresou URL serveru, kde chcete vytvořit objekt, musíte zapouzdřit adresu URL v instanci UrlAttribute třídy.
Podrobný popis objektů aktivovaných klientem najdete v tématu Aktivace klienta.
Viz také
Platí pro
RegisterActivatedServiceType(Type)
Zaregistruje zadaný typ objektu na konci služby jako typ, který lze aktivovat na žádost klienta.
public:
static void RegisterActivatedServiceType(Type ^ type);
public static void RegisterActivatedServiceType (Type type);
static member RegisterActivatedServiceType : Type -> unit
Public Shared Sub RegisterActivatedServiceType (type As Type)
Parametry
Výjimky
Alespoň jeden z volajících, kteří jsou výše v nástroji calltack, nemá oprávnění ke konfiguraci typů a kanálů vzdálené komunikace.
Příklady
Následující příklad kódu ukazuje registraci typu objektu na serveru jako typ, který může být aktivován klientem. Kód klienta, který odpovídá uvedenému kódu serveru, najdete v příkladu pro metodu RegisterActivatedClientType .
#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
Následující příklad kódu ukazuje objekt služby zaregistrovaný v ukázkovém kódu výše.
#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
Poznámky
Chcete-li vytvořit instanci objektu aktivovaného klientem na serveru, musíte znát jeho Type a musí být zaregistrována na straně serveru pomocí RegisterActivatedServiceType metody . Pokud chcete získat proxy pro novou instanci objektu aktivovaného klientem, musí klient nejprve zaregistrovat kanál pomocí ChannelServices a pak aktivovat objekt voláním new
nebo Activator.CreateInstance.
Chcete-li aktivovat typ objektu aktivovaný klientem pomocí klíčového new
slova, musíte nejprve zaregistrovat typ objektu na straně klienta pomocí RegisterActivatedClientType metody . Volání metody RegisterActivatedClientType poskytne infrastruktuře vzdálené komunikace umístění vzdálené aplikace, kde new
se pokusí ji vytvořit. Pokud naopak použijete metodu CreateInstance k vytvoření nové instance objektu aktivovaného klientem, musíte jako parametr zadat adresu URL vzdálené aplikace, takže není nutná žádná předchozí registrace na straně klienta. Chcete-li zadat metodu CreateInstance s adresou URL serveru, kde chcete vytvořit objekt, musíte zapouzdřit adresu URL v instanci UrlAttribute třídy.
Podrobný popis objektů aktivovaných klientem najdete v tématu Aktivace klienta.