¿Cuál es el propósito de MarshalByRefObject?
93
Remoting; significa que entre AppDomains o máquinas, en lugar de serializar y transferir el objeto , el objeto permanece en un extremo y se crea un proxy en el otro. Todas las llamadas al método al proxy se interceptan y la llamada se transmite como RPC wiki , msdn , lo que hace que el método se ejecute en la otra máquina (normalmente serializando los argumentos y el valor de retorno).
Nota: esto puede llevar a interfaces inesperadamente "comunicativas". El enfoque de objeto / proxy / RPC es ahora menos preferible que los enfoques con un límite de servicio explícito ; Microsoft ahora recomienda WCF wiki , msdn en lugar de la comunicación remota.
Otro uso importante de
MarshalByRefObject
es para implementar AOP a través de cadenas de sumideros remotas.Si tiene un objeto que se deriva de
ContextBoundObject
(que a su vez deriva deMarshalByRefObject
), puede instanciarlo en un contexto separado dentro del mismo AppDomain y hacer que las comunicaciones entre los objetos pasen automáticamente a través del sistema de proxy Remoting, lo que le permite conectar sumideros personalizados en el sumidero Remoting. cadena.En última instancia, esto le permite 'decorar' llamadas de método a sus objetos e implementar servicios transversales, como registro y seguridad, etc.
fuente
Su uso básico es para admitir el acceso de objetos entre dos dominios de aplicaciones y estos dominios de aplicaciones pueden estar en la misma computadora o en las diferentes computadoras a través de la comunicación remota.
Mira aquí
fuente
Cualquier objeto fuera del dominio de la aplicación de la persona que llama debe considerarse como Objeto Remoto. Un objeto remoto que debería derivarse de
MarshalByRefObject
Class. Cualquier objeto se puede convertir en un Objeto Remoto derivándolo deMarshalByRefObject
. Los objetos sin heredarMarshalByRefObject
se denominan Objetos no remotables .fuente