Каково основное использование MarshalByRefObject?

Какова цель для MarshalByRefObject?

Ответ 1

Remoting; это означает, что между AppDomains или машинами, а не сериализацией и переносом объекта, объект остается на одном конце, а прокси создается на другом. Все вызовы методов для прокси-сервера перехватываются, и вызов передается как RPC wiki, msdn заставляя метод выполняться на другом компьютере (обычно сериализуя аргументы и возвращаемое значение).

Примечание. Это может привести к неожиданным "чатным" интерфейсам. Метод object/proxy/RPC теперь менее предпочтителен для подходов с явной границей обслуживания; Microsoft теперь рекомендует WCF wiki, msdn а не удалять.

Ответ 2

Еще одно важное использование MarshalByRefObject - для реализации АОП посредством удаленных сетей-приемников.

Если у вас есть объект, который происходит от ContextBoundObject (который сам происходит от MarshalByRefObject), вы можете создать его в отдельном Контексте в пределах одного и того же AppDomain и обеспечить связь между объектами автоматически через прокси-систему Remoting - позволяя вам для подключения пользовательских раковин в приемную цепь Remoting.

В конечном итоге это позволяет вам "украшать" вызовы методов для ваших объектов и реализовывать сквозные службы, такие как ведение журнала и безопасность и т.д.

Ответ 3

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

См. здесь

Ответ 4

Любой объект вне домена приложения приложения-получателя должен рассматриваться как удаленный объект. Удаленный объект, который должен быть получен из класса MarshalByRefObject. Любой объект может быть изменен на удаленный объект, выведя его из MarshalByRefObject. Объекты без наследования от MarshalByRefObject называются Non-remotable Objects.