什么是COM
COM,Component Object Mode即组件对象模型。之所以称之为“模型”,是表明COM是一种编程规范(非具体代码),通过这种规范我们能够编写出语言无关的,可扩展的,内部变化对用户完全透明的,支持分布式的(对用户而言,远程与本地的COM组件使用应该是无差别的)代码。
COM组件
  • 遵循COM标准而编写出来的产物,叫做COM组件。它是COM标准的实现体。
  • 遵循COM标准,
  一个COM组件可以看做一个接口集合(这里的接口不是一般意义上的函数,而是类似于类的东西)
  • 客户与COM打交道,只能够通过接口(即COM是一种面向接口编程,这最大程度上隔离了用户与具体实现,实现了可拓展性与对用户而言变化的稳定性),可以说,接口定义了COM。
  • 每个接口中有包含了若干函数,客户通过先获取接口,再调用函数来使用COM组件。
  • COM组件的构成可理解为 一个COM组件 包含 若干接口, 每个接口包含若干函数。
 对COM组件的要求
1、动态链接
COM的最终目标在于使用户在应用的运行过程中,可以动态的替换组件,这要求组件能够动态链接到程序中(如进程内组件,即有dll的形式实现)
2、封装性
COM的实现细节应封装,从而保证接口的稳定性,实现组件在应用中的动态替换。
为实现封装性,对组件有以下限制
(1)组件隐藏其使用的编程语言。及任何语言都应该能够使用COM。
(2)组件必须以二进制形式发布。为了隐藏COM的编程语言,它们必须是编译,链接好的,马上能够投入使用。
(3)组件的向下兼容性。即新版本的组件,不应该影响到老版本程序对其的使用。
(4)组件在网络上透明的。客户对本地COM与远程COM的使用应完全一致。
总结下,COM组件式以dll或exe形式发布的可执行代码组成。COM组件是动态链接的,具有客户透明的封装性。
 
COM不是什么
1、COM不是一种具体语言,而是一种编程规范。
2、COM不是的dll,COM的实现利用了dll的动态链接能力,但不是简单的等同。
3、COM不是函数集合。COM组件的功能远大与简单的函数集合。COM在向客户提供功能函数的同时,还提供了一系列线程同步策略(套间),事件回调机制(连接点)等。
 
COM库
COM不仅仅是一套规范,它确实也包含一些具体实现。COM库这一具体实现对所有的客户及组件提供了非常有用的组件管理

COM技术の组件的更多相关文章

  1. IAAS-虚拟化技术组件介绍

    虚拟化技术组件涉及众多,下面对一些组件所处的层级以及定位做个简单的汇总介绍,部分信息来自于网络整理,如有不准确之处,请指正.

  2. 对.net技术组件的分析和选择

    .net很庞杂,学习最忌讳什么?为了学而学,而不是为了用而学.我们不是为了成为教师,所以不要成为书呆子,不要成为"博士",要从庞杂的技术群中选择自己需要的内容进行学习. 如果不加选 ...

  3. Docker 的技术组件

    Docker可以运行于任何安装了现代Linux内核的x64主机上.推荐的内核版本是3.8或者更高.Docker的开销比较低,可用于服务器.台式机或者笔记本.它包括以下几个部分. 一个原生的Linux容 ...

  4. Quora 用了哪些技术(转)

    原文:http://dbanotes.net/arch/quora_tech.html 很多团队都在学习.研究 Quora .前段时间看到这篇 Quora’s Technology Examined  ...

  5. SQL Server 2008 R2 的版本和组件

    SQL Server 2008 R2 的版本和组件 SQL Server 2008 R2   其他版本 SQL Server 2008 SQL Server 2005 SQL Server 2012 ...

  6. Java程序员如何运用所掌握的技术构建一个完整的业务架构

    1.通用架构概述 创业之初,我们往往会为了快速迭代出产品,而选择最简单的技术架构,比如LAMP架构,SSH三层架构.这些架构可以适应初期业务的快速发展,但是,随着业务变得越来越复杂,我们会发现这些架构 ...

  7. CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点

    深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储 ...

  8. 宜人贷PaaS数据服务平台Genie:技术架构及功能

    上篇:架构及组件 一.数据平台的发展 1.1 背景介绍 随着数据时代的到来,数据量和数据复杂度的增加推动了数据工程领域的快速发展.为了满足各类数据获取/计算等需求,业内涌现出了诸多解决方案.但大部分方 ...

  9. 基于通用jar、动态配置、组件编排的会员任务中心系统设计

    # 一.聊聊本文想说什么:   为更好帮助商家的会员快速成长,保持用户活性,完善用户的成长体系,有赞用户中心-会员成长团队基于现有的业务场景,设计了一套较完备任务中心系统.同时也有很多通用技术组件能够 ...

随机推荐

  1. 【Origin】 碑铭

    快意人生潇洒过, 飘渺岁月不留痕: 他朝墓穴成青冢, 宁不留名念此生. -作于二零一五年六月十日

  2. UML: 序列图

    摘自http://www.umlonline.org/school/thread-37-1-1.html 大家都进过餐馆吃饭吧?你是如何和餐厅服务员“眉来眼去”的呢?回忆一下从你进餐馆开始到你离开餐馆 ...

  3. 详细介绍dll文件是什么

     DLL是Dynamic Link Library的缩写,意为动态链接库.DLL文件一般被存放在C:WindowsSystem目录下.DLL是一个包含可由多个程序同时使用的代码和数据的库. 在Wind ...

  4. Keyframes介绍

    Keyframes被称为关键帧,其类似于Flash中的关键帧.在CSS3中其主要以“@keyframes”开头,后面紧跟着是动画名称加上一对花括号“{…}”,括号中就是一些不同时间段样式规则. @ke ...

  5. hdu5381 The sum of gcd

    莫队算法,预处理出每个数字往后的gcd情况,每个数字的gcd只可能是他的因子,因此后面最多只可能有logn种,可以先预处理出,然后套莫队算法,复杂度O(n*sqrt(n)*log(n)). 代码 #i ...

  6. 解决无法连接到visual studio开发服务器的问题

    今天vs抽风,调试网站出现下图那样: 然后我开始百度搜索 "无法连接到visual studio开发服务器" 出现很多文章: 打开一篇问题,看了里面的内容, 那个解决办法也不是最好 ...

  7. 关于MVC4中EFCoderFirst 数据迁移的三句经典指令

    首先输入这句指令     enable-migrations -contexttypename SchoolContext  ---------(SchoolContext为你设置的数据库名)它会自动 ...

  8. js 获取select 中option 的个数

    //document.writeln(document.getElementById("sel").options.length); //document.writeln(docu ...

  9. 夺命雷公狗---node.js---7fs模块初步

    目录结构如下所示: /** * Created by leigood on 2016/8/13. */ var http = require("http"); var fs = r ...

  10. 1. 星际争霸之php面向对象(一)

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...