Pergunta

Estou curioso para saber como Reflexão e Remoting no trabalho .net internamente. Eu também ouvi que .net pode usar a comunicação remota para se comunicar com aplicações escritas em outras línguas (como Java). Como isso funciona?

Esta é provavelmente uma grande questão, para uma resposta que, afora a cada pergunta é razoável.

Foi útil?

Solução

Remoting funciona interceptando chamadas para determinados objetos (MarshalByRefObject), e através da realização de uma chamada RPC em vez; essencialmente o objeto no chamador é apenas um proxy leve ao real objeto na origem AppDomain / máquina / etc. Os argumentos e os resultados são transferidos (mais uma vez, tendo em conta MarshalByRefObject - caso contrário usando BinaryFormatter para serializar os valores).

A reflexão é construído em profundidade o tempo de execução do núcleo, e fornece acesso às definições de tipo subjacentes. Este é, possivelmente, em parte porque a IL debaixo linguagens .NET é bastante expressivo em termos do código original.

No entanto, eu não estou pessoalmente ciente de qualquer maneira de falar através de comunicação remota para java. Pode ser possível, mas os formatos utilizados são (AFAIK) proprietário. Em geral, essas chamadas são mais propensos a tomar a forma de chamadas de SOA, tais como web-services (em SOAP ou POX), ou outros padrões abertos, como mensagens serializados com JSON ou "protocolo buffers" (um formato de fio de código aberto com variantes para C # e Java).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top