Подтвердить что ты не робот

Маршал отблеска/ссылка/значение?

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

4b9b3361

Ответ 1

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

Маршал по ссылке

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

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

Маршал по значению

По существу противоположность MarshalByRefObject. Когда эти значения передаются через границы AppDomain, они сериализуются через двоичную сериализацию и десериализуются в целевом экземпляре AppDomain. Результат - два, мы надеемся, независимых значений. Один в каждом домене.

Маршал By Bleed

Определенные классы типов называются Нейтральными доменами. В частности, string, Type и другие элементы отражения. Эти объекты не живут в конкретном AppDomain, и ссылки на них могут свободно делиться между ними. Они похожи на маршала по ссылке в том, что дубликаты не создаются, но прокси не создаются. Вместо этого прямая ссылка разделяется между AppDomain экземплярами.

Вы должны взглянуть на запись блога Джо Даффи по теме