Como reflexão e comunicação remota trabalho internamente?
-
05-07-2019 - |
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.
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).