Как отражение и удаленное взаимодействие работают внутри компании?
-
05-07-2019 - |
Вопрос
Мне любопытно узнать, как внутри .net работают Reflection и Remoting.Я также слышал, что .net может использовать удаленное взаимодействие для взаимодействия с приложениями, написанными на других языках (например, Java).Как это работает?
Вероятно, это большой вопрос, поэтому разумен ответ, вкратце затрагивающий каждый вопрос.
Решение
Удаленное взаимодействие работает путем перехвата обращений к определенным объектам (MarshalByRefObject
), и вместо этого выполнив вызов RPC;по сути, объект у вызывающего абонента — это просто легкий прокси для настоящий объект в исходном AppDomain/machine/etc.Аргументы и результаты передаются (опять же, приняв MarshalByRefObject
во внимание - в противном случае с помощью BinaryFormatter
для сериализации значений).
Отражение встроено глубоко в основную среду выполнения и обеспечивает доступ к определениям базовых типов.Возможно, отчасти это связано с тем, что IL, используемый в языках .NET, весьма выразителен с точки зрения исходного кода.
Однако лично мне не известен какой-либо способ общения с Java через удаленное взаимодействие.Это возможно, но используемые форматы (AFAIK) являются собственностью.В общем, такие вызовы, скорее всего, будут принимать форму вызовов SOA, таких как веб-сервисы (на SOAP или POX), или другие открытые стандарты, такие как сообщения, сериализованные с помощью JSON, или «буферы протокола» (проводной формат с открытым исходным кодом). с вариантами как для C#, так и для Java).