我是COM的新手,我不知道它是什么或它为什么存在.
这是一种像OOP这样的编程方法吗?编程语言是否必须支持它?(带一些特殊的关键词或其他东西)
当我向我的教授询问时,他说:
COM是一种二进制稳定的OOP方法.我们需要知道二进制布局(某事......某事......)
我不知道这意味着什么.有人说它用于代码重用.OOP在这方面做得很好,那么为什么这个COM首先会发展呢?
它与C++和COM有什么关系?无论我在哪里看到COM,它总是用抽象的C++示例来描述.它只适用于C++吗?
任何人都可以向我展示一个案例或例子,以便我能理解对COM的需求吗?学习这个有什么要求,所以我可以编写自己的组件?
COM的核心是提供独立于任何特定语言的数据传递合同的方式.它可以证明不依赖于语言,因为有许多语言支持COM(有C++,C,.NET和Java实现)
在实践中,它对几个不同的例子很有用:
不同语言之间的通信:由于COM与语言无关,因此可以使用COM在不同语言的组件之间传递数据.例如,您可以使用COM在C++,Java和.NET代码之间进行通信.
线程语义:COM允许您为特定组件定义线程语义,以确保它在适当的线程上下文中创建,无论它在何处使用.
一般组件化.
COM首先被创建为允许Microsoft Office应用程序相互通信的机制,然后,在第二次迭代中,它被修改并扩展为二进制代码组件的规范 - 如果它们是根据规范构建的 - - 无论使用何种语言或操作系统(只要二进制文件(编译的.dll或.exe)符合COM规范),就可以相互通信并共享数据.
目的是允许"二进制重用",这意味着代码组件可以被多个客户端代码组件重用,原始代码组件一无所知,并且在组件最初编译时甚至不存在.引用COM的原始建筑师之一Don Box:
[...] COM的设计范例是组件合同表示为类型定义.这是从被替换的COM世界向前迈出的一步,其中合同仅表示为简单的功能切入点.在这方面,COM是一个重大进步,因为它以相当一致的方式将代码和类型系统的动态加载结合在一起. .