Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么叫编组?_C#_.net_C++ Cli_Marshalling - Fatal编程技术网

C# 为什么叫编组?

C# 为什么叫编组?,c#,.net,c++-cli,marshalling,C#,.net,C++ Cli,Marshalling,可能重复: 为什么两种类型之间的转换称为编组!封送背后的含义是什么,为什么我们不直接使用转换这个词,有什么区别吗。请尽可能保持简单的英语。因为这不是一回事 来自维基百科: 在计算机科学中,编组(有时拼写为编组,类似于序列化)是将对象的内存表示转换为适合存储或传输的数据格式的过程。它通常用于数据必须在计算机程序的不同部分之间移动或从一个程序移动到另一个程序时 通常,“编组”一词用于跨越某种边界时。三个明显的用例: 远程处理:RPC数据被编组到单独的计算机(通常) AppDomains:跨越Ap

可能重复:


为什么两种类型之间的转换称为编组!
封送
背后的含义是什么,为什么我们不直接使用
转换
这个词,有什么区别吗。请尽可能保持简单的英语。

因为这不是一回事

来自维基百科:

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

通常,“编组”一词用于跨越某种边界时。三个明显的用例:

  • 远程处理:RPC数据被编组到单独的计算机(通常)
  • AppDomains:跨越AppDomain边界的对象需要编组(也可能是编组)
  • 跨线程调用:如果使用
    Control.Invoke
    或类似方法,则称为将委托调用编组到不同的线程;在这种情况下,线就是边界
不涉及此类边界的普通转换称为just conversion


有关在此处使用“封送”一词的原因,请参阅。

两种类型之间的转换不称为封送


封送处理是在内存空间之间移动对象,例如不同进程、不同计算机或不同COM单元。通常需要序列化,以创建一个可移植编码,该编码不使用在其他内存空间中没有意义的指针,并且在序列化过程中类型会更改,但类型转换和封送是正交的概念。特别是,编组简单类型,如
int
double
(或这些类型的结构),只需一个简单的副本,无需转换即可完成。

单词Marshal来自军事术语。比如把一支部队调到别的地方。从字典中:

排列整齐;有条不紊地出发,;清楚地安排:

  • 整理事实;整理论点
  • 布阵为战斗而布阵
  • 隆重地引导或引导:主人把他们召集进房间

从语言学角度来看,a是铁路公司重新安排列车的地方

该死,我要对付乔恩·斯基特!在这种情况下,这感觉像是一项合作任务——我们的答案相互补充得很好。我认为这在什么时候回答,而不是什么时候回答why@Henk:有点-我认为它与Etienne的答案配合得很好。谢谢你的回答,但是在#2,当你说“AppDomains:一个明显的交叉点”时,你的意思是“一个明显的过程,交叉点”还是“一个明显的”像“一个明显的数据交叉点”?我知道这有点不相关,但我想知道你到底是什么意思。因为我认为“显而易见”是一个形容词。@琼:这是“对象”的拼写错误。哦:)谢谢你,伙计,我不是故意挑剔的,因为我不像你一样擅长英语:其他人都回答了这个问题是的,其他人都是同义反复。很高兴有人回答了这个问题,没有给出编组是什么的定义。令人惊讶的是,互联网的其他部分和这里的其他答案一样,只是想解释我已经知道的,而不仅仅是回答我好奇的这个词的简单词源。奇怪的是,这个“重复”的问题几乎是在一年后被问到的。我一直认为这是对马歇尔·麦克卢汉的敬意。他有最好的新媒体理论。马歇尔是移动和重新安排。这并不一定意味着不同的内存空间。我可以在同一堆上的同一进程中使用它,这样我的代码中不同语言的不同部分就可以使用它。因此,在c#控制器中,如果您获取一个对象并将其序列化为JSON,然后将该JSON返回到javascript。。。你把物品整理好了吗?