当前位置:  开发笔记 > 编程语言 > 正文

什么是组件对象模型(COM)?它是语言依赖的吗?

如何解决《什么是组件对象模型(COM)?它是语言依赖的吗?》经验,为你挑选了2个好方法。

我是COM的新手,我不知道它是什么或它为什么存在.

这是一种像OOP这样的编程方法吗?编程语言是否必须支持它?(带一些特殊的关键词或其他东西)

当我向我的教授询问时,他说:

COM是一种二进制稳定的OOP方法.我们需要知道二进制布局(某事......某事......)

我不知道这意味着什么.有人说它用于代码重用.OOP在这方面做得很好,那么为什么这个COM首先会发展呢?

它与C++和COM有什么关系?无论我在哪里看到COM,它总是用抽象的C++示例来描述.它只适用于C++吗?

任何人都可以向我展示一个案例或例子,以便我能理解对COM的需求吗?学习这个有什么要求,所以我可以编写自己的组件?



1> JaredPar..:

COM的核心是提供独立于任何特定语言的数据传递合同的方式.它可以证明不依赖于语言,因为有许多语言支持COM(有C++,C,.NET和Java实现)

在实践中,它对几个不同的例子很有用:

    不同语言之间的通信:由于COM与语言无关,因此可以使用COM在不同语言的组件之间传递数据.例如,您可以使用COM在C++,Java和.NET代码之间进行通信.

    线程语义:COM允许您为特定组件定义线程语义,以确保它在适当的线程上下文中创建,无论它在何处使用.

    一般组件化.


COM绝对不需要语言支持.从一开始就可以在普通的C语言中创建和使用COM对象.没有语言支持,只有一堆宏.COM的原始C++实现也是基于宏的,没有语言变化; 即使在今天,我认为COM的核心仍然是通过宏实现而不是语言更改(有助手类型,如_com_ptr_t,但这些是助手,而不是核心).
当你听到"支持"时,我认为你和Jared正在思考不同的事情.你似乎在考虑语言语法中的结构支持,但我相信Jared只是支持"有一个API".

2> Charles Bret..:

COM首先被创建为允许Microsoft Office应用程序相互通信的机制,然后,在第二次迭代中,它被修改并扩展为二进制代码组件的规范 - 如果它们是根据规范构建的 - - 无论使用何种语言或操作系统(只要二进制文件(编译的.dll或.exe)符合COM规范),就可以相互通信并共享数据.

目的是允许"二进制重用",这意味着代码组件可以被多个客户端代码组件重用,原始代码组件一无所知,并且在组件最初编译时甚至不存在.引用COM的原始建筑师之一Don Box:

[...] COM的设计范例是组件合同表示为类型定义.这是从被替换的COM世界向前迈出的一步,其中合同仅表示为简单的功能切入点.在这方面,COM是一个重大进步,因为它以相当一致的方式将代码和类型系统的动态加载结合在一起. .

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有