为什么称它为编组?

时间:2011-05-29 15:56:37

标签: c# .net c++-cli marshalling

  

可能重复:
  Why is the concept of Marshalling called as such?

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

5 个答案:

答案 0 :(得分:43)

因为它不是一回事。

来自维基百科:

  

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

答案 1 :(得分:31)

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

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

没有此类边界的简单转换 仅称为转换。

有关在此处使用“marshal”一词的原因,请参阅Etienne's answer

答案 2 :(得分:30)

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

  

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

     
      
  • 来整理事实;整理一个人的论点。
  •   
  • 到阵列,至于战斗。
  •   
  • 隆重地迎来或领导:他们的主人将他们集中到房间里。
  •   

答案 3 :(得分:6)

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

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

答案 4 :(得分:3)

对于语言学的见解,marshalling yard是铁路公司重新安排列车的地方。