Для чего нужен MarshalByRefObject?
Для чего нужен MarshalByRefObject?
Ответы:
Удаленное взаимодействие; это означает, что между доменами приложений или компьютерами, вместо сериализации и передачи объекта , объект остается на одном конце, а прокси создается на другом. Все вызовы методов к прокси-серверу перехватываются, и этот вызов передается как RPC wiki , msdn , в результате чего метод выполняется на другом компьютере (обычно сериализуются аргументы и возвращаемое значение).
Примечание: это может привести к неожиданно «болтливым» интерфейсам. Подход объект / прокси / RPC теперь менее предпочтителен по сравнению с подходами с явной границей службы; Microsoft теперь рекомендует WCF wiki , msdn вместо удаленного взаимодействия.
Еще одно важное применение MarshalByRefObject- реализация АОП через удаленные цепочки приемников.
Если у вас есть объект, производный от ContextBoundObject(который сам является производным от MarshalByRefObject), вы можете создать его экземпляр в отдельном контексте в том же домене приложения, и обмен данными между объектами будет автоматически осуществляться через прокси-систему удаленного взаимодействия, что позволяет вам подключать настраиваемые приемники к приемнику удаленного взаимодействия. цепь.
В конечном итоге это позволяет вам «украсить» вызовы методов для ваших объектов и реализовать сквозные службы, такие как ведение журнала, безопасность и т. Д.
его основное использование - поддержка доступа к объектам между двумя доменами приложений, и эти домены приложений могут находиться на одном компьютере или на разных компьютерах посредством удаленного взаимодействия.
Любой объект за пределами домена приложения вызывающего приложения следует рассматривать как удаленный объект. Удаленный объект, который должен быть производным от MarshalByRefObjectкласса. Любой объект можно превратить в удаленный объект, производя его от MarshalByRefObject. Объекты, от MarshalByRefObjectкоторых не происходит наследование , называются Объектами, не подлежащими удалению .