RemotingConfiguration.RegisterActivatedServiceType Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Registra un oggetto Type sul lato servizio come tipo attivabile su richiesta da un client.
Overload
RegisterActivatedServiceType(ActivatedServiceTypeEntry) |
Registra un tipo di oggetto registrato nell'oggetto ActivatedServiceTypeEntry fornito sul lato servizio come tipo attivabile su richiesta da un client. |
RegisterActivatedServiceType(Type) |
Registra un tipo di oggetto specificato sul lato servizio come tipo attivabile su richiesta da un client. |
RegisterActivatedServiceType(ActivatedServiceTypeEntry)
Registra un tipo di oggetto registrato nell'oggetto ActivatedServiceTypeEntry fornito sul lato servizio come tipo attivabile su richiesta da un 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)
Parametri
Impostazioni di configurazione per il tipo attivato dal client.
Eccezioni
Almeno uno dei chiamanti in posizione più elevata nello stack di chiamate non dispone delle autorizzazioni alla configurazione di canali e tipi remoti.
Commenti
Per creare un'istanza di un oggetto attivato dal client nel server, è necessario conoscerne Type e deve essere registrato sul server finale usando il RegisterActivatedServiceType metodo . Per ottenere un proxy per una nuova istanza dell'oggetto attivato dal client, il client deve prima registrare un canale con ChannelServices e quindi attivare l'oggetto chiamando new
o Activator.CreateInstance.
Per attivare un tipo di oggetto attivato dal client con la new
parola chiave, è prima necessario registrare il tipo di oggetto sul client finale usando il RegisterActivatedClientType metodo .
RegisterActivatedClientType La chiamata al metodo fornisce all'infrastruttura remota il percorso dell'applicazione remota, in cui new
tenta di crearlo. Se, d'altra parte, si usa il metodo per creare una nuova istanza dell'oggetto attivato dal client, è necessario specificare l'URL CreateInstance dell'applicazione remota come parametro, quindi non è necessaria alcuna registrazione precedente sul client finale. Per specificare il metodo con l'URL del server in cui si vuole creare l'oggetto CreateInstance , è necessario incapsulare l'URL in un'istanza della UrlAttribute classe.
Per una descrizione dettagliata degli oggetti attivati dal client, vedere Attivazione client.
Vedi anche
Si applica a
RegisterActivatedServiceType(Type)
Registra un tipo di oggetto specificato sul lato servizio come tipo attivabile su richiesta da un 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)
Parametri
Eccezioni
Almeno uno dei chiamanti in posizione più elevata nello stack di chiamate non dispone delle autorizzazioni alla configurazione di canali e tipi remoti.
Esempio
Nell'esempio di codice seguente viene illustrata la registrazione di un tipo di oggetto nel server come tipo che può essere attivato dal client. Per il codice client corrispondente al codice del server presentato, vedere l'esempio per il RegisterActivatedClientType metodo .
#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
Nell'esempio di codice seguente viene illustrato l'oggetto del servizio registrato nel codice di esempio precedente.
#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
Commenti
Per creare un'istanza di un oggetto attivato dal client nel server, è necessario conoscerne Type e deve essere registrato sul server finale usando il RegisterActivatedServiceType metodo . Per ottenere un proxy per una nuova istanza dell'oggetto attivato dal client, il client deve prima registrare un canale con ChannelServices e quindi attivare l'oggetto chiamando new
o Activator.CreateInstance.
Per attivare un tipo di oggetto attivato dal client con la new
parola chiave, è prima necessario registrare il tipo di oggetto sul client finale usando il RegisterActivatedClientType metodo .
RegisterActivatedClientType La chiamata al metodo fornisce all'infrastruttura remota il percorso dell'applicazione remota, in cui new
tenta di crearlo. Se, d'altra parte, si usa il metodo per creare una nuova istanza dell'oggetto attivato dal client, è necessario specificare l'URL CreateInstance dell'applicazione remota come parametro, quindi non è necessaria alcuna registrazione precedente sul client finale. Per specificare il metodo con l'URL del server in cui si vuole creare l'oggetto CreateInstance , è necessario incapsulare l'URL in un'istanza della UrlAttribute classe.
Per una descrizione dettagliata degli oggetti attivati dal client, vedere Attivazione client.