为什么称它为编组?

Aan*_*Aan 28 .net c# c++-cli marshalling

可能重复:
为什么编组的概念被称为这样?

为什么两种类型之间的转换称为编组!背后是什么意思Marshal,为什么我们不只是使用这个词convert,是否有任何区别.请尽量保持简单的英语.

Eti*_*tel 43

因为它不是一回事.

来自维基百科:

在计算机科学中,编组(有时拼写编组,类似于序列化)是将对象的存储器表示转换为适合于存储或传输的数据格式的过程.它通常在数据必须在计算机程序的不同部分之间或从一个程序移动到另一个程序时使用.

  • 该死的,我对抗Jon Skeet! (11认同)
  • 在这种情况下,它感觉像是一项合作任务 - 我们的答案很好地相互补充. (8认同)

Jon*_*eet 32

通常,当你穿越某种边界时,会使用"编组"这个词.三个明显的用例:

  • 远程处理:RPC数据被编组到一台单独的机器(通常)
  • AppDomains:需要对跨越AppDomain边界的对象进行编组(或者可以通过引用进行编组)
  • 跨线程调用:如果您使用Control.Invoke或类似的东西,那称为将委托调用编组到另一个线程; 所以在这种情况下,线程就是边界

与不涉及这样的边界平原的转换称为只是转换.

关于在这里使用"marshal"这个词的原因,请参阅Etienne的回答.

  • 我认为这回答_when_,而不是_why_ (3认同)
  • @Henk:有点 - 我觉得它与Etienne的答案一起很好用.将编辑指出. (3认同)
  • @Joan:这是"对象"的拼写错误.哎呀:) (2认同)

Eri*_*sch 32

Marshal这个词来自军事术语.比如元帅将军队移到其他地方.从字典:

按顺序安排; 有条不紊地出发; 安排清楚:

  • 整理事实; 整理一个人的论点.
  • 阵列,战斗.
  • 领导或领导隆重:他们的主人把他们带到了房间里.

  • 这个实际上回答了这个问题 (8认同)
  • 是的,其他人都是重言式. (3认同)
  • 很高兴有人真正回答了这个问题,但没有给出编组的定义。令人惊讶的是,互联网的其余部分就像这里的其他答案一样,只是想解释我已经知道的内容,而不仅仅是回答我好奇的这个词的简单词源。 (2认同)

Ben*_*igt 6

两种类型之间的转换不称为编组.

Marshaling正在移动存储空间之间的对象,例如不同的进程,不同的计算机或不同的COM公寓.通常需要序列化,以创建不使用在其他内存空间中无意义的指针的可移植编码,并且在序列化期间类型更改,但类型转换和编组是正交概念.特别是,编组简单类型(如intdouble/或其结构)可以通过简单的复制而不进行转换来完成.


Hen*_*man 5

从语言角度来看,编组站是铁路公司重新安排列车的地方。