`
chinamming
  • 浏览: 152486 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

COM思想的背后

 
阅读更多
最近看公司的一些新产品和框架 , 发现清一色的“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
继msxml之后微软提供的另 一款高效的XML解析器, 它本身只有一个绿色DLL XmlLite.dll, 关于它的接口和使用方法可以参考XmlLite Introduction用于本机 C++ 的小巧快捷的 XML 分析器
我们可以用depends.exe看看该DLL的导出函数:


调用这些导出的CreateXXX函数返回返回一个继承于IUnknown的接口, 然后我们就可以调用接口提供的方法了, 可以看下IXmlReader的方法:
分享到:
评论

相关推荐

    com.bruceeckel.*(java编程思想需要包)

    通过阅读和实践《Java编程思想》中的代码示例,并理解其背后的包结构和导入机制,开发者可以更深入地掌握Java语言,并逐步提升编程技能。这些例子不仅涵盖了基本语法,还包括了许多高级特性,如泛型、枚举、注解和...

    c++编程思想 源代码

    总的来说,通过深入学习《C++编程思想》的源代码,不仅可以掌握C++语言的基本语法,还能理解其背后的编程哲学,培养出良好的编程习惯和设计思维,这对于提升编程技能和解决实际问题都将大有裨益。

    Visual C++编程思想

    总的来说,通过《Visual C++编程思想》的学习,你不仅可以掌握Visual C++的基本操作,还能深入理解其背后的编程理念和技术,从而提高你的C++编程技能,开发出更加高效、稳定的Windows应用程序。

    网站设计思想java

    品牌故事则通过讲述产品背后的故事和会员分享,建立情感连接;C. 关于宝迪提供公司基本信息,增强信任感;D. 会员服务详述会员权益,鼓励用户注册并参与互动;E. 联系我们确保用户能方便地找到联系方式,提高服务...

    impress.js:这是一个演示框架,基于现代浏览器中CSS3转换和转换的功能,并受到prezi.com背后思想的启发

    这是一个展示框架,基于现代浏览器中CSS3转换和转换的功能,并受到prezi.com背后思想的启发。 警告 如果您无话可说,那么impress.js可能对您没有帮助;) 如何使用它 签出并初始化git仓库 git clone --recursive ...

    模拟文件系统,操作系统课程设计的心血,含详细设计报告设计要求·设计思想·数据结构设计·实体关系图·数.rar

    设计思想是开发者在实现过程中遵循的原则和创新点,这部分有助于理解系统设计背后的逻辑。 数据结构设计是模拟文件系统的关键,它涉及到如何存储和组织文件信息。常见的数据结构有文件索引节点(i-node)、文件分配...

    电动智能汽车研究思想02:周期轮回.pdf

    电动智能汽车研究思想02:周期轮回证券分析师黄细里执业证书编号:S0600520010001联系邮箱:huangxl@dwzq.com.cn联系电话:021-601997932022年9月1日证券研究报告核心观点:其他东西都可能变,唯有周期不变。 本文...

    Essntial COM(.pdf)

    COM的核心思想是提供一种跨语言、跨进程的二进制兼容性,使得不同编程语言编写的组件可以无缝地相互调用。它的关键在于接口(Interface),这些接口定义了组件的行为,而组件的实现则隐藏在接口背后。COM接口基于`...

    COM技术内幕

    总之,COM技术内幕是一个深入理解COM组件模型及其背后的原理和实践的重要资源,对于希望在Windows平台上进行组件开发或系统集成的开发者来说,这是一份不可或缺的指南。通过深入学习和实践,你可以更好地掌握这一...

    Tangram,七巧板实例

    本文将深入探讨Tangram实例与COM(Component Object Model)技术的关联,揭示其背后的编程思想和实现方式。 COM是微软提出的一种组件模型,它定义了一种标准接口,使得不同语言和平台之间的对象能够相互通信。COM的...

    COM的由来

    ### COM的由来 #### 一、背景及需求分析 **COM**(Component Object Model,组件对象模型)是一项由微软...通过对C++问题的深入剖析以及COM核心技术的详细介绍,我们可以更全面地理解COM的重要性及其背后的设计思想。

    COM组件设计与应用

    复合文件的概念源自于磁盘文件系统的设计思想,即在单个文件中模拟一个小型的文件系统,使得多个不同类型的数据可以在同一文件内被有效管理和访问。这种新的文件存储方式极大地简化了应用程序间的集成,也为COM组件...

    hosts-list_web_malwaredomainlist.com:http测试

    关于hosts-list_web_malwaredomainlist.com # MalwareDomainList.com Hosts List ## http://www.malwaredomainlist.com/hostslist/hosts.txt #关于死神替代了背后的原始思想。 确实,这个想法是在PyFunceble和...

    实现模式@www.java1234.com.pdf.zip

    而具有丰富经验的资深工程师则可以通过这些模式进行反思,探究成功实践背后的意义。把价值观、原则和开发实践结合之后,日常开发工作便会以崭新迷人的形式呈现在我们面前。 作者简介 · · · · · · Kent Beck,...

    PRML马春鹏

    包涵大量理论知识和数学推导(尤其是习题),有助于了解Machine Learning方法背后的本质和思想。Machine Learning学习的过程,就是一个 what -> how -> why 的过程。而PRML,或者说同类的ESL等书籍,最大的作用就是...

    108-驾校管理系统源码.zip

    本文将围绕“108-驾校管理系统源码”这一主题,深入探讨其背后的编程思想和技术架构,以期帮助开发者更好地理解和运用此类系统。 首先,从标题"108-驾校管理系统源码.zip"可以看出,这是一个基于Java Spring Boot...

    rizzo:lonelyplanet.com的UI层

    上有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)"所代表的是一个电子商务平台,类似于中国的京东(JD.COM)。京东是中国领先的大型综合性在线购物网站,提供包括电子产品、家电、图书、服装、家居用品等在内的多种...

    faunadb-zeit-sample-app

    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...

Global site tag (gtag.js) - Google Analytics