Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo RemotingConfiguration.RegisterWellKnownServiceType (Type, String, WellKnownObjectMode)

 

Data di pubblicazione: ottobre 2016

Registra un oggetto Type sul lato servizio come tipo noto, utilizzando i parametri specificati per inizializzare una nuova istanza della WellKnownServiceTypeEntry.

Spazio dei nomi:   System.Runtime.Remoting
Assembly:  mscorlib (in mscorlib.dll)

[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.RemotingConfiguration)]
public static void RegisterWellKnownServiceType(
	Type type,
	string objectUri,
	WellKnownObjectMode mode
)

Parametri

type
Type: System.Type

L'oggetto Type.

objectUri
Type: System.String

L'URI dell'oggetto.

mode
Type: System.Runtime.Remoting.WellKnownObjectMode

La modalità di attivazione del tipo di oggetto noto viene registrata. Per informazioni, vedere WellKnownObjectMode.

Exception Condition
SecurityException

Almeno uno dei chiamanti nello stack di chiamate non dispone dell'autorizzazione per configurare i tipi e canali remoti.

Qualsiasi client che conosca l'URI di un oggetto noto registrato può ottenere un proxy per l'oggetto registrando il canale preferito con ChannelServices, e l'attivazione dell'oggetto chiamando new o Activator.GetObject (metodo). Per attivare un oggetto noto con new, è innanzitutto necessario registrare il tipo di oggetto noto sul client utilizzando il RegisterWellKnownClientType metodo. La chiamata di RegisterWellKnownClientType metodo fornisce l'infrastruttura .NET remoting la posizione dell'oggetto remoto, che consente il new parola chiave per la sua creazione. Se, d'altra parte, si utilizza il Activator.GetObject per attivare l'oggetto noto, è necessario fornire tale URL dell'oggetto come argomento, in modo che venga richiesta alcuna registrazione preventiva sul lato client.

Quando la chiamata arriva al server, .NET Framework l'URI viene estratto dal messaggio, esamina le tabelle di .NET remoting per individuare il riferimento per l'oggetto che corrisponde all'URI specificato e quindi un'istanza dell'oggetto, se necessario, inoltrare la chiamata di metodo all'oggetto. Se l'oggetto è registrato come SingleCall, verrà eliminato dopo la chiamata al metodo viene completata. Viene creata una nuova istanza dell'oggetto per ogni metodo chiamato. L'unica differenza tra Activator.GetObject e new il primo consente di specificare un URL come parametro, che quest'ultimo Ottiene l'URL dalla configurazione.

L'oggetto remoto stesso non viene creata dal processo di registrazione. Solo questo si verifica quando un client tenta di chiamare un metodo sull'oggetto o si attiva l'oggetto sul lato client.

Per una descrizione dettagliata degli oggetti noti, vedere [<topic://cpconServerActivation>].

Il codice seguente viene illustrata la registrazione di un tipo di oggetto nel server come un tipo di oggetto noto. Per il codice client corrispondente al codice server presentato, vedere l'esempio per il RegisterWellKnownClientType metodo.

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.ApplicationName = "HelloServiceApplication";

RemotingConfiguration.RegisterWellKnownServiceType( typeof(HelloService),
                                                    "MyUri",
                                                    WellKnownObjectMode.SingleCall 
                                                  );

        Console.WriteLine("Press enter to stop this process.");
        Console.ReadLine();
    }
}

Esempio di codice seguente viene illustrato l'oggetto servizio registrato nell'esempio di codice riportato sopra.

using System;

public class HelloService : MarshalByRefObject {

    static int n_instances;

    public HelloService() {
        n_instances++;
        Console.WriteLine("");
        Console.WriteLine("HelloService activated - instance # {0}.", n_instances);
    }


    ~HelloService()  {
        Console.WriteLine("HelloService instance {0} destroyed.", n_instances);
        n_instances--;
    }


    public String HelloMethod(String name)  {

        Console.WriteLine("HelloMethod called on HelloService instance {0}.", n_instances);
        return "Hi there " + name + ".";
    }
}

SecurityPermission

for configuration of the remoting infrastructure. Demand value: F:System.Security.Permissions.SecurityAction.Demand; Permission value: F:System.Security.Permissions.SecurityPermissionFlag.RemotingConfiguration

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: