杆死根活的COM:逝者不死,必将再起,其势更猛

概述:COM全称为Component Object Model,即组件对象模型,是微软在1993年推出的用于软件组件的二进制接口标准。在上个世界90年代末COM异常风光,可是到新世纪后,COM曾一度被微软抛弃并濒临死亡,随着WinRT的出现和现代C++的复兴,COM将再度复苏。
杆死根活的COM

COM全称为Component Object Model,即组件对象模型,是微软在1993年推出的用于软件组件的二进制接口标准,它被用于在大范围的编程语言类型中启动进程间的通信(inter-process communication)以及动态对象的创建。

COM的本质是以语言无关的方式实现对象,这种方式能够用于不同的创建环境中,甚至可以跨越机器的限制。对于创作良好的组件,COM允许在不知道内部如何实现的情况下进行对象重用,它促使组件实施者提供与实现相分离的定义良好的接口。

在.Net出现之前,微软对COM编程非常推崇。从1995年到2002年,有许多的书籍和网络资源都在谈论COM,COM+和DCOM。但是,自从微软决定确立C#为其推荐语言后,许多微软的追随者们便放弃了COM,他们表达出一种讯息:“C#才是最好的。”

举个例子,如果你在亚马逊网站上搜索COM书籍,其中绝大多数是来自于2000年,只有极少数晚于这个时间。

杆死根活的COM

然而,具有讽刺意味的是,当COM如日中天的时候,微软决定使用新技术.Net来取代COM,而这个时间就开始于2000年。

但即使是2000年以后,在微软彻底放弃COM之后,仍然有许多的项目选择使用它。大约到2005年,C#2问世的时候,COM的日子就算到头了。

下图是来自于google trend上关于“组件对象模型”感兴趣度随时间推移变化的图表:

杆死根活的COM

我们可以看到COM目前已经几近死亡。

转机出现在2011年,微软宣布基于COM的WinRT将会作出一些修改。然后在这一年里,我们开始讨论C++的复兴,而新的C++就是这个框架内最好的语言。

最终,COM没有彻底的死去,它在进入一个复苏的阶段,而这会是一次成功的复苏。

为什么微软会决定重新启用COM?

COM的复兴更多是来自于C++的复兴。当微软选择将回归到C++,并将其作为WinRT平台“最好的住户”时,他们需要一门技术来定义来自于.Net语言的组件并使用它们。为什么微软会选择重新启用COM?那是因为COM技术在多年以前就已经由微软的开发团队使用和验证了,虽然COM过去有很多的缺点,但是微软已经决定在WinRT上解决其中的大部分问题。

为什么微软会选择回归到C++?

这个问题的答案只有微软自己才能解答。或许是因为他们决定使用由他们自己主导的相同技术来发展多个平台(个人电脑、平板电脑和手机)。在开发资源上,平板电脑和手机相比个人电脑来说更少,因此选择C++作为WinRT框架的基本语言是最佳的选择。

故事还在继续…

这不是故事的结局,随着.Net框架的开源、OmniSharp和mono社区合作确定将.Net运用于主要平台(PC, Mac, Android…) 等消息的宣布,不久的将来会产生很多的变化。

 

本文翻译自COM is dead, Long live COM.

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 华为移动服务(Huawei Mobile Services,简称 HMS)是一个全面开放的移动服务生态系统,为企业和开发者提供了丰富的工具和 API,助力他们构建、运营和推广应用。其中,HMS Scankit 是华为推出的一款扫描服务 SDK,支持快速集成到安卓应用中,能够提供高效且稳定的二维码和条形码扫描功能,适用于商品扫码、支付验证、信息获取等多种场景。 集成 HMS Scankit SDK 主要包括以下步骤:首先,在项目的 build.gradle 文件中添加 HMS Core 库和 Scankit 依赖;其次,在 AndroidManifest.xml 文件中添加相机访问和互联网访问权限;然后,在应用程序的 onCreate 方法中调用 HmsClient 进行初始化;接着,可以选择自定义扫描界面或使用 Scankit 提供的默认扫描界面;最后,实现 ScanCallback 接口以处理扫描成功和失败的回调。 HMS Scankit 内部集成了开源的 Zxing(Zebra Crossing)库,这是一个功能强大的条码和二维码处理库,提供了解码、生成、解析等多种功能,既可以单独使用,也可以与其他扫描框架结合使用。在 HMS Scankit 中,Zxing 经过优化,以好地适应华为设备,从而提升扫描性能。 通常,ScanKitDemoGuide 包含了集成 HMS Scankit 的示例代码,涵盖扫描界面的布局、扫描操作的启动和停止以及扫描结果的处理等内容。开发者可以参考这些代码,快速掌握在自己的应用中实现扫码功能的方法。例如,启动扫描的方法如下: 处理扫描结果的回调如下: HMS Scankit 支持所有安卓手机,但在华为设备上能够提供最佳性能和体验,因为它针对华为硬件进行了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值