最近看公司的一些新产品和框架 , 发现清一色的“COM思想架构 ”, 这里说的“COM思想架构”是指不完全是标准COM组件的方式,而是指在设计上用到了COM思想。
COM组件技术大概在1993年产生, 20年了, 为什么还有这么多人使用?
我们先来看看标准COM组件:
标准COM组件(DLL方式)需要实现如下4个导出函数:
DllRegisterServer 将组件信息写入注册表
DllUnregisterServer 取消注册
DllCanUnloadNow判断组件是否可以从内存中卸载
DllGetClassObject返回IClassFactory指针,然后我们就可以通过该接口的CreateInstance方法创建对象并取得所需的接口。
采用标准COM组件,有很多好处:
面向接口和对象编程
语言无关性, 采用二进制标准,可以实现跨语言调用
版本升级方便,增加新接口, 组件升级后老客户程序不用重新编译
位置透明, 客户程序不用关心组件的位置
重用方便, 通过包容和聚合可以快速重用已有组件
我们可以看到标准COM组件非常强大, 但是很多时候我们并不需要标准COM组件的所有特性,比如我们不希望引入注册表, 也不希望引入COM运行库,我们希望我们的程序是完全“绿色”的。这时我们就会采用“COM思想架构“开发非标准的COM组件。
实际上微软本身已经有很多API采用这种设计方案了,我们来看一些例子:
XmlLite
我们可以用depends.exe看看该DLL的导出函数:
调用这些导出的CreateXXX函数返回返回一个继承于IUnknown的接口, 然后我们就可以调用接口提供的方法了, 可以看下IXmlReader的方法:
分享到:
相关推荐
通过阅读和实践《Java编程思想》中的代码示例,并理解其背后的包结构和导入机制,开发者可以更深入地掌握Java语言,并逐步提升编程技能。这些例子不仅涵盖了基本语法,还包括了许多高级特性,如泛型、枚举、注解和...
总的来说,通过深入学习《C++编程思想》的源代码,不仅可以掌握C++语言的基本语法,还能理解其背后的编程哲学,培养出良好的编程习惯和设计思维,这对于提升编程技能和解决实际问题都将大有裨益。
总的来说,通过《Visual C++编程思想》的学习,你不仅可以掌握Visual C++的基本操作,还能深入理解其背后的编程理念和技术,从而提高你的C++编程技能,开发出更加高效、稳定的Windows应用程序。
品牌故事则通过讲述产品背后的故事和会员分享,建立情感连接;C. 关于宝迪提供公司基本信息,增强信任感;D. 会员服务详述会员权益,鼓励用户注册并参与互动;E. 联系我们确保用户能方便地找到联系方式,提高服务...
这是一个展示框架,基于现代浏览器中CSS3转换和转换的功能,并受到prezi.com背后思想的启发。 警告 如果您无话可说,那么impress.js可能对您没有帮助;) 如何使用它 签出并初始化git仓库 git clone --recursive ...
设计思想是开发者在实现过程中遵循的原则和创新点,这部分有助于理解系统设计背后的逻辑。 数据结构设计是模拟文件系统的关键,它涉及到如何存储和组织文件信息。常见的数据结构有文件索引节点(i-node)、文件分配...
电动智能汽车研究思想02:周期轮回证券分析师黄细里执业证书编号:S0600520010001联系邮箱:huangxl@dwzq.com.cn联系电话:021-601997932022年9月1日证券研究报告核心观点:其他东西都可能变,唯有周期不变。 本文...
COM的核心思想是提供一种跨语言、跨进程的二进制兼容性,使得不同编程语言编写的组件可以无缝地相互调用。它的关键在于接口(Interface),这些接口定义了组件的行为,而组件的实现则隐藏在接口背后。COM接口基于`...
总之,COM技术内幕是一个深入理解COM组件模型及其背后的原理和实践的重要资源,对于希望在Windows平台上进行组件开发或系统集成的开发者来说,这是一份不可或缺的指南。通过深入学习和实践,你可以更好地掌握这一...
本文将深入探讨Tangram实例与COM(Component Object Model)技术的关联,揭示其背后的编程思想和实现方式。 COM是微软提出的一种组件模型,它定义了一种标准接口,使得不同语言和平台之间的对象能够相互通信。COM的...
### COM的由来 #### 一、背景及需求分析 **COM**(Component Object Model,组件对象模型)是一项由微软...通过对C++问题的深入剖析以及COM核心技术的详细介绍,我们可以更全面地理解COM的重要性及其背后的设计思想。
复合文件的概念源自于磁盘文件系统的设计思想,即在单个文件中模拟一个小型的文件系统,使得多个不同类型的数据可以在同一文件内被有效管理和访问。这种新的文件存储方式极大地简化了应用程序间的集成,也为COM组件...
关于hosts-list_web_malwaredomainlist.com # MalwareDomainList.com Hosts List ## http://www.malwaredomainlist.com/hostslist/hosts.txt #关于死神替代了背后的原始思想。 确实,这个想法是在PyFunceble和...
而具有丰富经验的资深工程师则可以通过这些模式进行反思,探究成功实践背后的意义。把价值观、原则和开发实践结合之后,日常开发工作便会以崭新迷人的形式呈现在我们面前。 作者简介 · · · · · · Kent Beck,...
包涵大量理论知识和数学推导(尤其是习题),有助于了解Machine Learning方法背后的本质和思想。Machine Learning学习的过程,就是一个 what -> how -> why 的过程。而PRML,或者说同类的ESL等书籍,最大的作用就是...
本文将围绕“108-驾校管理系统源码”这一主题,深入探讨其背后的编程思想和技术架构,以期帮助开发者更好地理解和运用此类系统。 首先,从标题"108-驾校管理系统源码.zip"可以看出,这是一个基于Java Spring Boot...
上有Rizzo背后的思想过程的。 安装并获取依赖项 $ git clone git@github.com:lonelyplanet/rizzo.git && cd rizzo $ cp .ruby-version.example .ruby-version $ cp .ruby-gemset.example .ruby-gemset $ cd . $ ...
【标题】"京淘网上商城-综合网购首选(JD.COM)"所代表的是一个电子商务平台,类似于中国的京东(JD.COM)。京东是中国领先的大型综合性在线购物网站,提供包括电子产品、家电、图书、服装、家居用品等在内的多种...
curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/hello-worldcd hello-world 安装并运行:npm installnpm run dev# oryarnyarn dev 它部署到云()now...