Qual è lo scopo di MarshalByRefObject?
Qual è lo scopo di MarshalByRefObject?
Risposte:
Remoting; significa che tra AppDomain o macchine, invece di serializzare e trasferire l' oggetto , l'oggetto rimane a un'estremità e viene creato un proxy all'altra. Tutte le chiamate al metodo al proxy vengono intercettate e la chiamata viene trasmessa come wiki RPC , msdn , provocando l'esecuzione del metodo sull'altra macchina (tipicamente serializzando gli argomenti e il valore di ritorno).
Nota: questo può portare a interfacce inaspettatamente "loquaci". L'approccio oggetto / proxy / RPC è ora meno preferibile agli approcci con un limite di servizio esplicito ; Microsoft ora consiglia WCF wiki , msdn invece di remoting.
Un altro uso importante di MarshalByRefObject è per implementare AOP tramite remoting sink-chain.
Se hai un oggetto che deriva da ContextBoundObject(che a sua volta deriva daMarshalByRefObject ), è possibile crearne un'istanza in un contesto separato all'interno dello stesso AppDomain e fare in modo che le comunicazioni tra gli oggetti passino automaticamente attraverso il sistema proxy Remoting, consentendo di collegare sink personalizzati al sink Remoting- catena.
Questo in definitiva ti consente di "decorare" le chiamate ai metodi dei tuoi oggetti e implementare servizi trasversali, come la registrazione e la sicurezza, ecc.
il suo utilizzo di base è per supportare l'accesso di oggetti tra due appdomain e questi appdomain possono trovarsi sullo stesso computer o su diversi computer tramite telecomando.
Qualsiasi oggetto al di fuori del dominio dell'applicazione dell'applicazione chiamante deve essere considerato come oggetto remoto. Un oggetto remoto che dovrebbe essere derivato da MarshalByRefObjectClass. Qualsiasi oggetto può essere modificato in un oggetto remoto derivandolo da MarshalByRefObject. Gli oggetti senza ereditare da MarshalByRefObjectsono chiamati oggetti non remotabili .