什么是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. Subversion how[Reprint]

    1.   Subversion简介 Subversion(简称SVN)是一款功能强大的开源版本控制工具,支持Linux和Windows平台. SVN可以有两个访问方式,一种是独立服务器直接访问,即利用 ...

  2. Android 测试Service的生命周期

    package com.example.myapp4; import android.support.v7.app.ActionBarActivity; import android.content. ...

  3. html5新增全局属性

    data-* 如:data-type,data-role等 hidden  <div hidden></div> 隐藏该div spellcheck <textarea ...

  4. fnd_profile.value('AFLOG_ENABLED')的取值 和配置文件相关SQL

    SELECT * FROM FND_PROFILE_OPTIONS_VL TT WHERE TT.PROFILE_OPTION_NAME LIKE '%AFLOG%' FND:启用调试日志 详细的参考 ...

  5. DMA-330(二)

    DMA内部的block diagram: DMAC包含一个instruction processing block,来process program code,control DMA transfer ...

  6. 在desk于webi中资料查询不一致

    1,首先检查是否勾选重复列,重复列造成 2,缓存

  7. 「linux」win+linux 双系统 默认启动项 的修改

    修改/etc/default/grub文件,其中的GRUB_DEFAULT表示默认启动项: sudo gedit /etc/default/grub 注意:启动项是从0开始计数. 要使修改生效需要运行 ...

  8. wc移植sae笔记

    1.wc移植到sae---上传图片 ①先看profile.ptl.html中的ajax代码修改functions.js中G_BASE_URL的值.在这里我先写死成->'http://2.idan ...

  9. 解决Android SDK Manager更新下载速度慢

    1.在Host文件加上 203.208.46.146 www.google.com 74.125.113.121 developer.android.com 203.208.46.146 dl.goo ...

  10. JVM参数配置的线上教训

    原来规则处理业务五十台服务器经常大量fgc,load飙高,我修改了jvm配置后,五十台服务器十多天没有任何异常,双十一中轻闲度过. 可是今天突然又有一台大量fgc,load飙高.分析了半天,回头一看, ...