Qual é o propósito de MarshalByRefObject?
Qual é o propósito de MarshalByRefObject?
Respostas:
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 deriva MarshalByRefObject), 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.
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.
Qualquer objeto fora do domínio do aplicativo do chamador deve ser considerado como objeto remoto. Um objeto remoto que deve ser derivado de MarshalByRefObjectclasse. Qualquer objeto pode ser transformado em um Objeto Remoto derivando dele MarshalByRefObject. Objetos sem herança MarshalByRefObjectsão chamados de Objetos Não Remotáveis .