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 sul lato servizio come un oggetto Type che può essere attivato su richiesta da un client.
Overload
| Nome | Descrizione |
|---|---|
| RegisterActivatedServiceType(ActivatedServiceTypeEntry) |
Registra un tipo di oggetto registrato nell'oggetto fornito ActivatedServiceTypeEntry sul lato servizio come uno che può essere attivato su richiesta da un client. |
| RegisterActivatedServiceType(Type) |
Registra un tipo di oggetto specificato nell'endpoint del servizio come tipo che può essere attivato su richiesta da un client. |
RegisterActivatedServiceType(ActivatedServiceTypeEntry)
Registra un tipo di oggetto registrato nell'oggetto fornito ActivatedServiceTypeEntry sul lato servizio come uno che può essere attivato 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 più in alto nello stack di chiamate non dispone dell'autorizzazione per configurare tipi e canali remoti.
Commenti
Per creare un'istanza di un oggetto attivato dal client nel server, è necessario conoscerne e registrarla Type sul lato server 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 lato client usando il RegisterActivatedClientType metodo . La chiamata al RegisterActivatedClientType metodo fornisce all'infrastruttura remota la posizione dell'applicazione remota, in cui new tenta di crearla. Se invece si usa il CreateInstance metodo per creare una nuova istanza dell'oggetto attivato dal client, è necessario specificare l'URL dell'applicazione remota come parametro, quindi non è necessaria alcuna registrazione precedente sul lato client. Per fornire al CreateInstance metodo l'URL del server in cui si desidera creare l'oggetto, è necessario incapsulare l'URL in un'istanza della UrlAttribute classe .
Vedi anche
Si applica a
RegisterActivatedServiceType(Type)
Registra un tipo di oggetto specificato nell'endpoint del servizio come tipo che può essere attivato 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 più in alto nello stack di chiamate non dispone dell'autorizzazione per configurare tipi e canali 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 che corrisponde 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 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 e registrarla Type sul lato server 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 lato client usando il RegisterActivatedClientType metodo . La chiamata al RegisterActivatedClientType metodo fornisce all'infrastruttura remota la posizione dell'applicazione remota, in cui new tenta di crearla. Se invece si usa il CreateInstance metodo per creare una nuova istanza dell'oggetto attivato dal client, è necessario specificare l'URL dell'applicazione remota come parametro, quindi non è necessaria alcuna registrazione precedente sul lato client. Per fornire al CreateInstance metodo l'URL del server in cui si desidera creare l'oggetto, è necessario incapsulare l'URL in un'istanza della UrlAttribute classe .