2009-06-03 4 views
12

В мире .NET marshalling означает только подготовку объекта/данных для передачи по какой-либо границе или по проводу ИЛИ означает ли это подготовка и передача через границу или по проводам.Точное определение термина 'marshalling'

И что означает маршал вызова. Означает ли это только упаковка вызова для «переноса» по границе контекста или это упаковка и отправка (то есть вызов) вызова?

Извините за приверженец ...

Кларри

+0

Не используйте «dotnot» в качестве тега –

ответ

1

Как я понял это подготовка данных, а не передача. Тем не менее это не редкость использовать этот термин для включения передачи (я также виновен в этом).

2

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

Я думаю об этом с точки зрения данных или объекта, «открываемых» в среде, в которой он не знаком. Это может включать в себя различное кодирование, обертку и т. Д., А также способ передачи объекта является важной частью процесса маршалинга.

Пока данные или объект не были представлены в его новом контексте, я не считаю его маршалированным. В этот момент он только что был преобразован, зашифрован, обернут или что-то еще.

В качестве примера, JSON часто используется для передачи объекта или данных из одного процесса в другой. Когда вы конвертируете в JSON, я просто считаю, что преобразование из одной структуры данных в другую. Как только он передается по проводу, ТОГДА он маршалируется.

Итак, никакого изменения контекста, без маршалинга.

Это мои два цента.

1

Я думаю, что он может представлять оба сценария.

  • Только данные: Рассмотрим сценарии PInvoke. Маршалинг обычно используется для описания акта преобразования данных из формата .Net в соответствующий формат C.
  • Данные и вызов: рассмотрите COM-вызовы, которые пересекают квартиры. В этом случае данные, необходимые для вызова и вызова, считаются маршализированными, так как фактический вызов должен пересекать границы COM-квартир. Я понимаю, вы спросили об этом в контексте .Net, но я считаю, что это хороший пример, который относится к .Net. Рассмотрим, например, использование ISynchronizedInvoke для перехода между потоками.
1

«Маршал» имеет несколько значений, но помимо этого это название. , ,

маршал - мобилизовать: готовность к работе действие или использование; «ресурсы маршала»

Таким образом, это должно означать только «упаковать», а не «упаковать и отправить».

0

Marshalling чисто accross границы

Обычно используется для передачи объектов между 2 AppDomains. Проводная часть является необязательной вещью, но процесс отправки объекта по проводу - это, во-первых, сериализация объекта вниз, отправка обычно осуществляется с помощью другого протокола (tcp/ip).

Смежные вопросы