Condividi tramite


Ambito della pubblicazione

Nei diversi sistemi di comunicazione remota si decide in modo diverso quali membri e quali tipi di membro possano essere utilizzati in modalità remota. In .NET Remoting gli oggetti vengono esposti ad altri domini applicazione come se fossero locali, con le seguenti eccezioni:

  • Membri statici.

    Campi e metodi static non vengono mai utilizzati in modalità remota e l'accesso ai campi avviene tramite la memoria diretta. In altre parole, in .NET Remoting vengono sempre gestiti membri di istanza di qualche tipo.

  • Campi di istanza e funzioni di accesso.

    Per i campi di istanza e i metodi di accesso, viene inserito un controllo in fase di esecuzione per verificare se l'oggetto è un proxy. In caso contrario, l'accesso ai campi è diretto. Altrimenti, il proxy fornisce funzioni di accesso al chiamante.

  • Metodi Private.

    Non è possibile utilizzare i metodi Private in modalità remota. Non è possibile inserire un delegato in un wrapper e passarlo a un metodo Private in modalità remota.

  • Delegati.

    Sono oggetti con marshalling per valore. L'oggetto all'interno del delegato può essere qualsiasi oggetto remotizzabile, come un oggetto serializzabile, un oggetto MarshalByRefObject o un oggetto ContextBoundObject. L'unica eccezione è rappresentata dal fatto che non è possibile utilizzare correttamente in modalità remota un delegato a un metodo di interfaccia. Il delegato fungerà da wrapper dell'implementazione del metodo di interfaccia, richiedendo che le informazioni sul tipo del client siano disponibili per il server.

  • Override dei metodi su Object.

    Per motivi di prestazioni, i metodi virtual su metodi Object vengono sempre eseguiti localmente nel dominio applicazione in cui sono chiamati. Le chiamate dei metodi seguenti verranno passate all'oggetto remoto soltanto quando i metodi saranno stati sottoposto a override su tale oggetto:

    • Equals

      questo metodo virtual verrà eseguito in modalità remota se sottoposto a override.

    • GetHashCode

      questo metodo viene eseguito localmente.

    • ToString

      questo metodo virtual verrà eseguito in modalità remota se sottoposto a override.

    • Equals (versione static)

      questo metodo viene eseguito localmente.

    • MemberwiseClone

      questo metodo viene eseguito localmente.

Vedere anche

Oggetti remotizzabili e non remotizzabili | MarshalByRefObject | ContextBoundObject | Object