什么是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. [Reprint]C++友元函数与拷贝构造函数详解

    这篇文章主要介绍了C++友元函数与拷贝构造函数,需要的朋友可以参考下   一.友元函数 1.友元函数概述: (1)友元函数是定义在一个类外的普通函数.友元函数和普通函数的定义一样;在类内必须将该普通函 ...

  2. 获取网络IP地址

    IPHostEntry iphost = Dns.GetHostEntry(txtDNS.Text);//解析并返回IPHostEntry对象 foreach (IPAddress ip in iph ...

  3. android测试(转)

    1.冒烟测试 跟web端的测试流程一样,你拿到一个你们开发做出来的apk首先得去冒烟,也就是保证他的稳定性,指定时间内不会崩溃.这款原生sdk自带的monkey可以当做我们的测试工具.就跟我之前博客所 ...

  4. datagridview 用法

        标签:c# datagridview 用法 拖一个datagridview控件 初始的名字叫dataGridView1 准备工作: 点击控件右上角的三角,选择“添加列”添加表头的项 基本操作: ...

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

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

  6. zw版【转发·台湾nvp系列Delphi例程】HALCON TileChannels

    zw版[转发·台湾nvp系列Delphi例程]HALCON TileChannels unit Unit1;interfaceuses Windows, Messages, SysUtils, Var ...

  7. 【crunch bang】安装firefox,删除iceweasel

    首先,移除iceweasel: apt-get remove iceweasel Then, download the latest Linux build of Firefox directly f ...

  8. SQL的主键和外键约束(转)

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  9. 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载

    人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计 ...

  10. Android 常用工具类之 ScreenUtil

    需求: 截屏 参考 :    Android开发:截屏 screenshot 功能小结 package bvb.de.openadbwireless.utils; import android.app ...