COM组件是什么,有什么作用?能否简单说下?谢谢!

COM组件是什么,有什么作用?能否简单说下?谢谢!,第1张

COM:The Component Object Model 组件对象模型

COM 组 件 是 遵 循COM 规 范 编 写、 以Win32 动 态 链 接 库(DLL) 或 可 执 行 文 件(EXE) 形 式 发 布 的 可 执 行 二 进 制 代 码, 能 够 满 足 对 组 件 架 构 的 所 有 需 求。 遵 循COM 的 规 范 标 准, 组 件 与 应 用、 组 件 与 组 件 之 间 可 以 互 *** 作, 极 其 方 便 地 建 立 可 伸 缩 的 应 用 系 统。COM 是 一 种 技 术 标 准, 其 商 业 品 牌 则 称 为ActiveX。

---- 近 几 年 来, 组 件 在 软 件 开 发 中 得 到 了 广 泛 的 应 用, 尤 其 是Windows DNA 将 组 件 应 用 于Internet, 进 行 各 种 事 务 处 理, 显 示 出 了 强 大 的 功 能。 从 组 件 机 制 和 接 口 标 准 方 面 探 讨 组 件 不 是 一 件 轻 松 的 事 情, 我 们 这 里 仅 从 工 程 应 用 的 范 畴 讨 论 组 件 的 开 发 与 使 用 问 题。 组 件 在 应 用 开 发 方 面 具 有 以 下 特 点:

---- 第 一, 组 件 是 与 开 发 工 具 语 言 无 关 的。唤旅 开 发 人 员 可 以 根 据 特 定 情 况 选 择 特 定 语 言 工 具 实 现 组 件 的 开 发。 对 于Internet 应 用 而 言, 完 成 事 务 逻 辑 处 理 计 算 任 务 的 组 件 以MS Visual Basic 进 行 开 发 是 首 选 方 案。 其 结 果 是 开 发 迅 速, 调 试 方 便, 编 译 之 后 的 组 件 以 二 进 制 的 形 式 发 布, 可 跨Windows 平 台 使 用, 而 且 源 程 序 代 码 不 会 外 泄, 有 效 地 保 证 了 组 件 开 发 者 的 版 权。

---- 第 二, 通 过 接 口 有 效 保 证 了 组 件 的 复 用 性。 一 个 组 件 具 有 若 干 个 接 口, 每 个 接 口 代 表 组 件 的 某 个 属 性 或 方 法。 其 他 组 件 或 应 用 程 序 可 以 设 置 或 调 用 这 些 属 性 和 方 法 来 进 行 特 定 的 逻 辑 处 理。 组 件 和 应 用 程 序 的 连 接 是 通 过 其 接 口 实 现 的。 负 责 集 成 的 开 发 人 员 无 需 了 解 组 件 功 能 是 如 何 实 现 的, 只 需 简 单 地 创 建 组 件 对 象 并 与 其 接 口 建 立 连 接。 在 保 证 接 口 一 致 性 的 前 提 之 下, 可 以 调 换 组 件、 更 新 版 本, 也 可 以 把 组 件 安 插 在 不 同 的 应 用 系 统 中。

---- 第 三, 组 件 运 行 效 率 高、 便 于 使 用 和 管 理。和袭凳 因 为 组 件 是 二 进 制 代 码, 运 行 效 率 比ASP 脚 本 高 很 多。 核 心 的 商 务 逻 辑 计 算 任 务 必 须 由 组 件 来 担 纲,ASP 脚 本 只 起 组 装 的 角 色。 而 且 组 件 在 网 络 上 的 位 置 可 被 透 明 分 配, 组 件 和 使 用 它 的 程 序 能 在 同 一 进 程 中、 不 同 进 程 中 或 不 同 机 器 上 运 行。 组 件 之 间 是 相 互 独 立 的,MTS 使 对 组 件 的 管 理 更 加 简 便。 组 件 对 象 通 过 一 个 内 部 引 用 计 数 器 来 管 理 它 自 己 的 生 存 期, 这 个 计 数 器 存禅禅 放 任 何 时 候 连 接 到 该 对 象 的 客 户 数。 当 引 用 计 数 变 为0 时, 对 象 可 以 把 自 己 从 内 存 中 释 放 掉。 这 使 程 序 员 不 必 考 虑 与 提 供 可 共 享 资 源 有 关 的 问 题。

---- 对 于 使 用 组 件 的 集 成 开 发 者 而 言, 一 个 组 件 就 是 一 个 接 口 集, 只 有 通 过 接 口 才 能 与 组 件 进 行 通 信; 而 对 于 组 件 来 说, 接 口 是 包 含 一 个 函 数 指 针 数 组 的 内 存 结 构, 每 个 数 组 元 素 的 内 容 是 一 个 由 组 件 所 实 现 的 函 数 地 址。 在 一 个 应 用 程 序 中, 起 决 定 作 用 的 是 组 件 的 接 口 而 不 是 组 件 本 身。 只 要 组 件 的 接 口 保 持 不 变, 组 件 可 以 任 意 升 级 或 更 换, 而 应 用 程 序 不 必 做 任 何 修 改。 接 口 将 特 定 的 行 为 封 装 起 来, 一 方 面 使 客 户 可 以 用 同 样 的 方 式 处 理 不 同 组 件, 一 方 面 同 一 组 件 可 以 在 不 同 的 应 用 中 使 用。 这 些 特 点 决 定 了 组 件 必 然 有 很 好 的 重 用 性。

1、COM component(COM组件)

COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块;等等。

COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序, *** 作系统以及其他组件提供服务。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及 *** 作系统。

COM所含的概念并不止是在Microsoft Windows *** 作系统下才有效。COM并不是一个大的API,它实际上象结构化编程及面向对象编程方法那样,也是一种编程方法。在任何一种 *** 作系统中,开发人员均可以遵循“COM方法”。

一个应用程序通常是由单个的二进制文件组成的。当编译器生成应用程序之后,在对下一个版本重新编译并发行新生成的版本之前,应用程序一般不会发生任何变化。 *** 作系统,硬件及客户需求的改变都必须等到整个应用程序被重新生成。

目前这种状况已经发生变化。开发人员开始将单个的应用程序分隔成单独多个独立的部分,也既组件。这种做孙团法的好处是可以随着技术的不断发展而用新的组件取代已有的组件。此时的应用程序可以随新组件察消不断取代旧的组件而渐趋完善。而且利用已有的组件,用户还可以快速的建立全新的应用。

传统的做法是将应用程序分割成文件,模块或类,然后将它们编译并链接成一个单模应用程序。它与组件建立应用程序的过程(称为组件构架)有很大的不同。一个组件同一个微型应用程序类似,即都是已经编译链接好并可以使用的二进制代码,应用程序就是由多个这样的组件打包而得到的。单模应用程序只有一个二进制代码模块。自定义组件可以在运行时刻同其他的组件连接起来以构成某个应用程序。在需要对应用程序进行修改或改进时,只需要将构成此应用程序的组件中的某个用新的版本替换掉即可。

COM,即组件对象模型,是关于如何建立组件以及如何通过组件建立应用程序的一个规范,说明了如何可动态交替更新组件。

使用组件的优点:

组件架构的一个优点就是应用可以随时间的流逝而发展进化。除此之外,使用组件还有一些可以使对以有应用的升级更加方便和灵活的优点,如应用的定制,组件库以及分布式组件等。

使用组件的种种优点直接来源于可以将它们动态的插入或卸出应用。为了实现这种功能,所有的组件必须满足两个条件:第一,组件必须动态链接;第二,它们必须隐藏(或封装)其内部实现细节。动态链接对于组件而言是一个至关重要的要求,而败凯知消息隐藏则是动态链接的一个必要条件。

2、托管代码 (managed code)

由公共语言运行库环境(而不是直接由 *** 作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。

3、Unmanaged Code - 非托管代码

在公共语言运行库环境的外部,由 *** 作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。

4、SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。 这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。 具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK。

COM组件实际上是系统内一些比较小的二进制可执行程序,它们能为应用程序, *** 作系统以及其他组件提供一定的服务。所以注册COM组件是一个重要的事情,但这同时也是win7系统的一个硬伤,win7系统注册COM组件总是失败,让人烦心。

解决办法:

运行:regsvr32xxx.ocx

提示:模块"xxx.ocx"已加载,但对调用dllregisterserver的.调用失败旦段橡,错误代码0x80004005。

问题分析:由于win7权限导致

解决方案:

1.开始->在搜索框中输入‘cmd’->搜出的cmd.exe文件上点击右键,选择‘已管理员身份运行’:

2.再次执行:regsvr32xxx.ocx命令,如指定完整路径需要用上引号""括起,"d:/组燃扮件/xxx.ocx"

3.提示:注册成功!

COM组件是微软系统内一个重要的组成部分,禁止了COM组件,可能会导致视频无法正常播放,音乐无法正常使用,多种情况都有可能出现,希望用户在注册COM组件失败的时候,模旁这个能对大家有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12460752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存