Как отражение и удаленное взаимодействие работают внутри компании?

StackOverflow https://stackoverflow.com/questions/622505

Вопрос

Мне любопытно узнать, как внутри .net работают Reflection и Remoting.Я также слышал, что .net может использовать удаленное взаимодействие для взаимодействия с приложениями, написанными на других языках (например, Java).Как это работает?

Вероятно, это большой вопрос, поэтому разумен ответ, вкратце затрагивающий каждый вопрос.

Это было полезно?

Решение

Удаленное взаимодействие работает путем перехвата обращений к определенным объектам (MarshalByRefObject), и вместо этого выполнив вызов RPC;по сути, объект у вызывающего абонента — это просто легкий прокси для настоящий объект в исходном AppDomain/machine/etc.Аргументы и результаты передаются (опять же, приняв MarshalByRefObject во внимание - в противном случае с помощью BinaryFormatter для сериализации значений).

Отражение встроено глубоко в основную среду выполнения и обеспечивает доступ к определениям базовых типов.Возможно, отчасти это связано с тем, что IL, используемый в языках .NET, весьма выразителен с точки зрения исходного кода.

Однако лично мне не известен какой-либо способ общения с Java через удаленное взаимодействие.Это возможно, но используемые форматы (AFAIK) являются собственностью.В общем, такие вызовы, скорее всего, будут принимать форму вызовов SOA, таких как веб-сервисы (на SOAP или POX), или другие открытые стандарты, такие как сообщения, сериализованные с помощью JSON, или «буферы протокола» (проводной формат с открытым исходным кодом). с вариантами как для C#, так и для Java).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top