大家好,小隆来为大家解答以上的问题。列集,关于列集介绍这个很多人还不知道,现在让我们一起来看看吧!
1、 在微软的COM(组件对象模型)中,列集是将参数打包与解包,使得远程过程(remote procedure)可以进行的过程。[2] 当接口指针要跨越COM单元(apartment)边界(也就是在COM库的实例之间跨越)时,必须要对其进行列集操作。[1]
2、 不同的参数以不同的方式进行列集。例如列集一个整形参数只需要简单地将这个值复制到消息缓存中(即便是这么一个简单的例子,也可能存在着跨计算机时需要处理的字节顺序)。列集一个数组是一个更复杂的过程。数组成员被以特定的顺序复制,从而使另一端可以精确地重构数组。[2]
3、 对于标准的列集方法(standard marshaling),代理对象(proxy)和存根代码(stub)对于接口来说都是系统宽度(systemwide)的资源,并且它们使用遵循标准协议的通告进行交互与通信。
4、 除了标准列集法还有另一个选择,那就是自定义的列集方法(custom marshaling)。对于任何一个给定的接口,对象可以选择COM提供的标准列集法或者是自定义列集法。一旦为给定的接口做出选择,这种选择将在一个对象的生命周期里一直保持不变。
5、 组件之间的通信
6、 列集用于组件的通信中。如右图1所示,在进程边界的客户端一侧,客户端的方法调用到达代理然后进入属于COM库的一部分的通道(channel)。通道将包含有列集过的参数的缓存发送到RPC运行时库,RPC运行时库随后会将这些信息传递到进程边界的另一侧。
本文到此分享完毕,希望对大家有所帮助。
标签:
版权声明:本文由用户上传,如有侵权请联系删除!