Точное определение термина «сортировка» - PullRequest
12 голосов
/ 03 июня 2009

В мире .NET маршаллинг означает просто подготовку объекта / данных для передачи через некоторую границу или по проводу ИЛИ это означает подготовку и передачу через границу или по проводу .

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

Извините за то, что я сторонник ...

Кларри

Ответы [ 5 ]

2 голосов
/ 03 июня 2009

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

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

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

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

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

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

1 голос
/ 03 июня 2009

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

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

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

1 голос
/ 03 июня 2009

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

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

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

0 голосов
/ 03 июня 2009

Маршаллинг просто пересекает границу

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

...