Qual é o propósito de MarshalByRefObject?
93
Remoting; isso significa que entre AppDomains ou máquinas, em vez de serializar e transferir o objeto , o objeto permanece em uma extremidade e um proxy é criado na outra. Todas as chamadas de método para o proxy são interceptadas e a chamada é transmitida como RPC wiki , msdn , fazendo com que o método seja executado na outra máquina (normalmente serializando os argumentos e o valor de retorno).
Nota: isso pode levar a interfaces inesperadamente "tagarelas". A abordagem de objeto / proxy / RPC agora é menos preferível a abordagens com um limite de serviço explícito ; A Microsoft agora recomenda WCF wiki , msdn em vez de remoting.
Outro uso importante do
MarshalByRefObject
é para implementar AOP por meio de coletores remotos.Se você tiver um objeto que deriva de
ContextBoundObject
(do qual ele próprio derivaMarshalByRefObject
), poderá instanciá-lo em um Contexto separado dentro do mesmo AppDomain e fazer as comunicações entre os objetos passarem automaticamente pelo sistema de proxy Remoting - permitindo que você conecte coletores personalizados no coletor Remoting- corrente.Em última análise, isso permite que você "decore" chamadas de método para seus objetos e implemente serviços transversais, como registro e segurança, etc.
fonte
Seu uso básico é para suporte de acesso de objetos entre dois appdomains e esses appdomains podem estar no mesmo computador ou em computadores diferentes via remoting.
Veja aqui
fonte
Qualquer objeto fora do domínio do aplicativo do chamador deve ser considerado como objeto remoto. Um objeto remoto que deve ser derivado de
MarshalByRefObject
classe. Qualquer objeto pode ser transformado em um Objeto Remoto derivando deleMarshalByRefObject
. Objetos sem herançaMarshalByRefObject
são chamados de Objetos Não Remotáveis .fonte