0
A
回答
1
微软的COM是与语言无关的组件技术。甲部件是单独编译的对象,这可能驻留在不同的过程中或甚至不同的计算机上。后一种可能性被称为DCOM,简称分布式COM。
访问组件的COM方法依赖于二进制级别的内存布局,顺便说一句,早期的Visual C++布局多态对象,首先在每个对象中使用一个vtable指针。每个COM对象都来自IUnknown
类,它增加了三个虚拟成员函数,即两个用于引用计数,另一个用于接口查询。这顺便也是用于Java本地接口的布局,并且它用于例如XCOM for Unixland。
的COM设计师认为,实现继承是解精,所以不是每个对象提供一个或多个不同的纯接口,虚拟方法的集合。为了获得一个指针指向一个给定的接口给定对象,在最低级别传递一个128位的统计上唯一的接口标识符到IUnknown
接口的方法,对于一个接口查询。请记住,虽然COM的二进制级别布局是为C++设计的,但这种技术并不特别适合C++:它是语言不可知的,因此您必须在运行时查询接口,而不是将这些接口作为C++类型的对象。
相关问题
- 1. 为什么我需要界面?
- 2. 为什么我们需要无与伦比的界面?
- 3. 为什么我需要界面(用[ServiceContract]装饰)?
- 4. 我需要什么样的查询?
- 5. 需要什么查询集?
- 6. 为什么我的SELECT查询需要这么长时间?
- 7. 我需要什么加入?为什么我的查询不起作用?
- 8. 为什么我需要在查询中使用CAST()?
- 9. 为什么我们需要创建原生查询?
- 10. 为什么我需要设置信任来查询Active Directory?
- 11. 为什么我的查询需要2分钟才能运行?
- 12. 慢速查询需要.0007s?为什么这是在我的slowlog?
- 13. 为什么我需要“&”?
- 14. 为什么我需要android.permission.ACCESS_CHECKIN_PROPERTIES
- 15. 为什么我需要extern?
- 16. 为什么我需要MEX?
- 17. 为什么我不需要
- 18. 为什么我需要OleDbCommand.Prepare()?
- 19. 为什么要查询compositioncontainer?
- 20. 为什么界面需要重新声明?
- 21. 工厂设计模式 - 为什么需要界面?
- 22. 为什么JVM全面GC需要停止世界?
- 23. 什么是无界查询?
- 24. PDO我什么时候需要参数化我的查询?
- 25. 为什么我的界面被压扁?
- 26. 为什么这个查询需要这么长时间?
- 27. 为什么这个查询需要这么长时间?
- 28. 为什么这个EF查询需要这么长时间?
- 29. 为什么我需要Iterator接口,为什么要使用它?
- 30. Github的页面:为什么我需要一个gh页面
这是非常广阔的。你应该尝试找到COM的介绍。 – molbdnilo