Component Object Model 组件对象模型

深入解析COM技术与本质论 本文还有配套的精品资源,点击获取 简介:COM是微软推出的一种组件编程模型,它支持可重用的组件开发,并具有跨语言和跨平台的特性。本文深入探讨COM的核心概念、特性以及其在软件开发中的应用和影响,如接口标准、二进制兼容性、引用计数、线程安全性、延迟加载和注册表功能。同时,本文将阐述COM的内部工作原理,包括激活和实例化、组件服务、接口继承、组件注册以及自动化特性。此外,还将讨... 阅读详情

Component Object Model  组件对象模型

DLL和COM 的基本概念- -                                     

我在学习过程中对DLL和COM 的概念很模糊,我上网整理了一下相关的资料,贴出来,供大家学习参考。

一般来说,DLL是一种磁盘文件,以.DLL、.DRV、.FON、.SYS和许多以.EXE为扩展名的系统文件都可以是DLL。它由全局数据、服 务函数和资源组成,在运行时被系统加载到进程的虚拟空间中,成为调用进程的一部分。如果与其它DLL之间没有冲突,该文件通常映射到进程虚拟空间的同一地 址上。DLL模块中包含各种导出函数,用于向外界提供服务。DLL可以有自己的数据段,但没有自己的堆栈,使用与调用它的应用程序相同的堆栈模式;一个 DLL在内存中只有一个实例;DLL实现了代码封装性;DLL的编制与具体的编程语言及编译器无关。

至于作用,先说说没有dll的后果:比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。 可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会 产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写 大的EXE程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试。

  有了dll的好处:在Windows系统平台上提供了一种完全不同的较有效的编程和运行环境,你可以将独立的程序模块创建为较小的DLL (Dynamic Linkable Library)文件,并可对它们单独编译和测试。在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。这种 方式不仅减少了EXE文件的大小和对内存空间的需求,而且使这些DLL模块可以同时被多个应用程序使用。Windows自己就将一些主要的系统功能以 DLL模块的形式实现。

什么是COM和COM+?

Components Object Model (COM) 是软件组件互相通讯的一种方式。它是一种二进制和网络标准,允许任意两个组件互相通讯,而不管它们是在什么计算机上运行(只要计算机是相连的),不管各计 算机运行的是什么*作系统(只要该*作系统支持 COM),也不管该组件是用什么语言编写的。COM 还提供了位置透明性:当您编写组件时,其他组件是进程内 DLL、本地 EXE 还是位于其他计算机上的组件,对您而言都无所谓。(当然会有性能区别,但是,即使改变了其他组件的位置,您也不必重新编写什么,这是关键所在。)

COM 是基于对象的??但是这种对象概念与您熟悉的 C++ 或 Visual Basic 中的对象不太一样。(顺便说一下,“对象”和“组件”几乎是同一个东西。GUI 医生在谈论应用程序的结构时愿意说成“组件”,而在谈论实现时愿意说成是“对象”)

首先,COM 对象被很好地封装起来。您无法访问对象的内部实现细节;您无法知道对象使用了什么数据结构。实际上,对象的封装是如此的严密,以致于 COM 对象通常被描绘为盒子。图 1 描绘了一个完全封装的对象。请注意,实现细节是如何向您隐藏的。

Windows 2000中的Component Services是企业级应用中的非常重要的一部分,它为那些基于web的、分布式的应用程序提供了几乎所有需要的功能。尽管COM+服务起初只是被设计 用来为COM组件提供服务的,但是如果.NET组件也能够使用COM+服务的话,那将会是一件很好的事。因为COM+能够为组件提供很多服务如对象缓冲, 资源共享,给予角色的安全机制和分布式事务处理等。

    概括地说,COM具有如下一些优越性:

编程技术难度和工作量降低,开发周期变短,开发成本降低。一般编程人员只须根据应用功能要求选用合适的组件,而不必事无巨细都自己动手去完成。组件模块将编程的技术难度和工作量在人员个体和时间上进行了分摊。

可以实现分层次的编程,从而促进了软件的专业化生产。专业人员可以开发出具有很强专业性的软件组件,这样既保证了普通的编程应用人员能够完成所需要的应用开发,又不至于降低使用的性能。应用人员不便实现的组件模块可以让专业人员定做。

    促进组件市场的丰富,最大限度地满足了各种应用需求,定制特定的软件模块变得相当容易。

    软件的复用率提高,使软件的使用效率得到提高并延长了使用寿命。组件编程体系使大量的编程问题局部化了,使软件的更新和维护变得快速和容易,软件的成本大大降低。

 
Microsoft Component Object Model (aka COM) Specification 极好的资源,先没找到,后来在"Inside COM"的光碟中找到了。用Acrobat 8 做的带Tag的PDF,效果很爽。 仅作备份,请勿恶意传播 立即下载

相关推荐

The Component Object Model Specification

The Component Object Model Specification Version 0.9 October 24, 1995 Note: This document is an early release of the final specification. It is meant to specify and accompany software that is still in devel-opment. Some of the information in this documentation may be inaccurate or may not be an accu

COM组件对象模型

COM(Component Object Model)是一种标准。它的目的是实现软件的动态连接和无缝集成。 它一种软件组件技术标准:即建立动态的可重组的可无缝连接的跨语言的组件技术标准。 COM规范就是一套为组件架构设置标准的描述文档。符合COM的组件 以DLL形式或EXE形式发布。 它需实现动态连接和信息封装。 它可以以二进制形式发布。 它完全与语言无关。 它可以自由的升级替换而且不...

顺其自然~专栏 3401

sdk2003 COM (Component Object Model)

sdk2003 COM (Component Object Model) sdk2003 COM (Component Object Model)

COM,Component Object Model 简介

COM,Component Object Model 简介

老顽固也可爱 2554

[TI板]MSPM0G3507——keil环境配置+烧录配置+vscode配置+空工程迁移+点灯+芯片解锁教程

本文介绍了MSPM0G3507开发环境的配置与烧录方法。主要内容包括:1)下载安装芯片支持包和SDK开发工具;2)通过串口或DAPLink两种方式实现程序烧录,详细说明了UniFlash软件的使用步骤和常见问题解决方法;3)简要提及工程迁移和LED点灯等基础操作。文章提供了完整的开发环境搭建指南,涵盖从软件安装到实际烧录的全过程,并附有相关工具下载链接和操作截图,帮助开发者快速上手MSPM0G3507开发。

qq_23220445的博客 1万+

数字IC面试核心:从MUX基础到Glitch-Free时钟切换电路深度剖析

本文深入剖析数字IC设计中的MUX基础原理及其在Glitch-Free时钟切换电路中的应用。从二选一MUX的门级实现到时钟切换中的毛刺问题,详细讲解了同步切换机制和工程优化技巧,帮助工程师掌握高速时钟电路设计的核心要点。

weixin_42629815的博客 327

Microsoft Component Object Model (COM)介绍

目的 COM是一个独立于平台的,分布式的、面向对象的系统创建二进制软件组件,这些组件可以进行交互。微软的COM是基础技术OLE(复合文档)和ActiveX(网络组件)技术,以及其他人。 在适用情况下 COM对象可以创建各种编程语言。面向对象的语言(如C++,提供编程机制,简化的实现COM对象。这些对象可以在一个过程中,在其他进程,甚至在远程机器。

xinqingwuji的博客 3104

频偏估计技术:从原理到5G应用的实战解析

本文深入解析了5G通信中的频偏问题及其核心技术。频偏如同调不准的旋钮,会导致信号失真与载波间干扰。文章详细拆解了整数倍与小数倍频偏估计两大核心方法,重点剖析了基于循环前缀和基于同步信号块的算法原理与优劣,并结合eMBB、mMTC、URLLC三大5G应用场景,提供了实战算法选择策略与参数调优避坑指南。

weixin_29218963的博客 263

COM(Component Object Model)组件介绍

COM component(COM组件)是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;CO...

keke_Xin的专栏 534

gtsam 学习十(ISAM2 理论)

翻译自:iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree 摘要 提出了一种新型的贝斯树处理稀疏矩阵,在转化为因子图,可以更好的求解平方根信息和映射问题。 文中提出了三个概念 使用概率密度项进行矩阵分解 介绍如何将矩阵分解转换为贝叶斯数和条件概率密度 基于贝叶斯树提供了一种新的系数非线性优化:ISAM2(进行重新排序和重新线性化,避免了批量更新) 问题描述 文章聚焦与如何用增量实时解决非线性问题, 利用增量即新的测量值实时更新估

weixin_37781153的博客 8409

Win10 + Linux 双系统删除(Linux)

删除Linux所使用的磁盘分区 进入此电脑->计算机->管理->磁盘管理

weixin_52247624的博客 944

component object model(组件对象模型)

  通常,COM是以 win32动态链接库(dll)或可执行文件(exe)的形式发布.   在COM中,接口就是一切,对于客户来说,一个组件就是一个接口集.COM接口是一个包含一个函数指针数组的内存结构.   组件本身只不过是接口的实现细节. 转载于:https://www.cnblogs.com/listened/p/4010396.html...

weixin_30703911的博客 184

Python:爬取数据出现response.status_code为403解决方法

目录前言1. 原理2. 代码 前言 出现403的返回结果 主要是有些服务器为了防止访问量过大,承受服务器的压力,或者是拒绝你的访问。服务器接收到这个信息,理应返回了这个403的信息 在前一块的代码中解决了 Python:爬取数据出现response.status_code为418解决方法 如果还出现了403的访问错误 可以通过如下解决 1. 原理 服务器拒绝访问,可以通过给服务器登录,获取当前的cookie来得到网址的信任。得以爬取该网址的信息 在head头中加入cookie的信息 具体怎么查找该cooki

码农研究僧的博客 1万+

"COM”:component object model,组件对象模型

这 是微软为了解决代码重用的一个重要机制。重用代码的最简单办法是源代码重用,把写好的函数和类加到自己当前的代码中,编译即可。简单是简单,敝病却显然的 多。另一个常用的方法是单独做成模块,以DLL的形式分发,DLL导出函数或者类,客户程序用动态/静态链接的方法将其加载,这显然比前一种源代码的方法 好一些,难度也不大,最为常用。但DLL也有一些不足,最根本的,它不是二进制兼容,DLL版本升级一次就需要

serg_的专栏 3117

YOLOv10改进 | 主干篇 | 引入FasterNet:Run, Don‘t Walk,追求更快的神经网络

本文引入了 FasterNet 作为 YOLOv10 的主干网络。通过 PConv 算子,我们有效降低了模型的计算冗余。对于追求极致推理速度的场景(如树莓派、Jetson Nano),该改进方案极具价值。建议在训练时配合混合精度训练 (AMP)进一步加速。

weixin_51988935的博客 604

咨询进阶——解读40页公司战略解码方法【附全文阅读】

战略解码是将企业战略转化为可执行计划的关键过程,强调垂直和水平一致性原则。通过KPI指标设计和目标分解,确保战略在各部门和岗位有效落地。解码过程包括战略澄清、目标牵引、绩效分解和承诺签订,输出战略解码图等文件。不同部门根据责任定位(如利润中心、绩效中心)采用差异化考核方式,实现战略有效执行。

cdfunlove的博客 150

组件对象模型(COM)初探(一)(Inside Component Object Model 1)

           (摘要:本文主要是介绍C++语言对于软件复用层次的支持程度在面向组件开发模式下的不足,并且结合和具体实例分析了出现这些问题的具体原因。) 缘起   3年前,就职于微软公司的Anders Hejlsberg在该年度的TechDays演讲中提到当今程序设计语言的发展趋势时,指出了为了提高软件产能效率,程序设计语言及相配套的函数库渐渐地从非托管语言(如C/C++语...

weixin_30790841的博客 349

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Windows的COM(Component Object Model) 是什么

一文了解 Windows的COM(Component Object Model) 是什么

m0_37982378的博客 1805

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Component Object Model (COM)

  The Component Object Model (COM) is a platform-independent, distributed, object-oriented, system for creating binary software components that can interact. COM is the foundation technology for Micro

serg_的专栏 801

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

COM

COM是Component Object Model (组件对象模型)的缩写。

Charon 782

php 打开动态链接,php调用com组件-dll文件(动态链接库)

什么是COM?COM(ComponentObject Model)组件对象模型,是一种跨应用和语言共享二进制代码的方法。是位于DCERPC上部的对象指向层(关联服务)定义公共的调用协定以允许用不同语言编写的代码调用,并允许其它语言代码进行交互操作(前题是代码是COM明白的),COM可以作为DLL被本机程序载入也可以通过DCOM被远程进程调用。准备工作比如我作了一个COM组件,新建一个VB6工程,A...

weixin_33289873的博客 856

COM组件简介

COM的全称是Component Object model,组件对象模型。COM是建立在二进制可执行代码的基础上的,所以COM是语言无关的,这一特性使用不同编程语言开发的组件对象进行交互成为可能。在Microsoft Windows系统平台上,COM技术被应用于系统的各个层次,从底层的COM对象管理到上层的应用程序交互都用到了COM标准。COM组件是遵循COM规范编写的,以DLL的形式存在,但它本身

我的专栏 922

COM组件

  1 概念 COM component(COM组件),即Component Object Model(组件对象模型),是关于如何建立组件以及如何通过组件建立应用程序的一个规范,说明了如何可动态交替更新组件。微软公司为了计算机工业的软件生产更加符合人类的行为方式,开发出该新的软件开发技术,是一种编程方法(如面向对象,结构化编程)。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它...

weixin_33720452的博客 825

【组件专题】初识COM组件

COM组件

597

c语言windows库函数,C语言访问Windows COM组件函数

COM(Component Object Model)是Windows里常用的组件对象模型,在Windows上是可以上升到操作系统级别,甚至到网络分布式级别的面象对象技术,也就是按照微软定义的标准实现的COM组件,不仅可以在本地Windows操作系统上让其它程序调用,而且可以供网络内的其它系统调用(DCOM)。OLE是对象连接/嵌入技术,它其实就是COM,只是在COM的标准上主要增加了自动化功能,...

weixin_35486456的博客 1016
上一篇: .如何将iso文件刻录成光盘?
下一篇: Eclipse RCP技术简介
jxcjxinxing
博客等级 码龄20年 51粉丝 195原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jxcjxinxing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值