组件对象模型

合集下载

COM培训教程

COM培训教程

COM培训教程COM是一种面向对象的编程模型,是微软公司提出的Component Object Model(组件对象模型)的英文缩写。

COM技术的出现标志着微软公司向Windows应用程序开发提供了一个统一的内部机制,并向Windows软件开发领域引入了面向对象的编程思想。

COM具有广泛的适用范围,在Windows系统中,COM组件可以透明地使用,是Windows平台上的标准组件开发模型,包括DLL、EXE、OCX等。

为了帮助开发人员学习COM构架开发,推出COM培训教程,下面就以此为主题,进行详细介绍。

一、COM培训教程的概述在计算机技术日新月异的今天,软件应用变得越来越复杂,这就需要使用复杂的软件编程模型。

而COM组件模型的出现满足了这个需求,它可以很容易地构造出可重用的软件组件。

COM培训教程就是为了帮助开发人员更好的掌握COM组件模型的使用。

COM培训教程分为初级课程和高级课程两个部分。

初级课程主要介绍COM的基础知识,包括COM对象、接口、注册表、运行时库等方面的内容。

同时,还会介绍COM对象的调用顺序、内存管理及异常处理等知识点。

高级课程则会着重介绍COM组件的设计、开发和实现,以及如何进行组件的测试和调试等方面的内容。

同时还会介绍COM+等技术,并通过实例演示来深入讲解COM在具体应用中的实现过程。

二、COM培训教程的课程设置1.初级课程1.1 COM的基础概念了解COM组件模型含义,COM基础概念,COM组件的构成和分类。

1.2 COM对象了解COM对象的定义和特性,COM对象的标识方式,理解如何创建COM对象,如何使用COM对象等。

1.3 COM接口介绍接口的基础知识以及接口、对象、实现的关系,讲解相关技术术语,如IUnkown。

1.4 COM注册表讲解COM注册表的概念,以及如何使用注册表进行应用程序和组件的绑定等。

1.5 COM运行时库讲解COM运行时库的概念,介绍如何初始化COM运行时库以及相关函数。

COM组件对象模型

COM组件对象模型

COM component(COM 组件)是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。

在COM 构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。

由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。

COM 方法COM 是开发软件组件的一种方法。

组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。

开发自定义的COM 组件就如同开发动态的,面向对象的API 。

多个COM 对象可以连接起来形成应用程序或组件系统。

并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。

Microsoft 的许多技术,如ActiveX, DirectX以及OLE 等都是基于COM 而建立起来的。

并且Microsoft 的开发人员也大量使用COM 组件来定制他们的应用程序及操作系统。

COM 所含的概念并不止是在Microsoft Windows操作系统下才有效。

COM 并不是一个大的API ,它实际上像结构化编程及面向对象编程方法那样,也是一种编程方法。

在任何一种操作系统中,开发人员均可以遵循“COM 方法”。

一个应用程序通常是由单个的二进制文件组成的。

当编译器生成应用程序之后,在对下一个版本重新编译并发行新生成的版本之前,应用程序一般不会发生任何变化。

操作系统,硬件及客户需求的改变都必须等到整个应用程序被重新生成。

目前这种状况已经发生变化。

开发人员开始将单个的应用程序分隔成单独多个独立的部分,也即组件。

这种做法的好处是可以随着技术的不断发展而用新的组件取代已有的组件。

此时的应用程序可以随新组件不断取代旧的组件而渐趋完善。

COM组件论文

COM组件论文

COM组件技术摘要按照组件化程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块可以运行在同一台的机器上,也可以运行在不同的机器上,甚至可以运行在跨越太平洋的两台机器上。

在理想情况下,每台机器的运行环境可以不同,甚至可以是不同的操作系统。

为了实现这样的应用软件,组件程序和组件程序之间需要一些极为细致的规范,只有组件程序遵守了这些共同的规范,软件系统才能正常运行。

为此,OMG和Microsoft分别提出了CORBA和COM标准,目前CORBA模型主要应用与UNIX操作系统平台上,而COM则主要应用与Microsoft Windows操作系统平台上。

Microsoft提出的组件对象模型标准不仅仅体现了组件化的程序设计思想,在实现上,它也采用了面向对象程序设计方法。

COM,既组件对象模型,是一种以组件为发布单元的对象模型,这种模型使各软件组件可以用一种统一的方式进行交互。

COM既提供了组件之间进行交互的规范,也提供了实现交互的环境,因为组件对象之间交互的规范不依赖与任务特定的语言,所以COM也可以是不同语言协作开发的一种标准。

关键词:CORBA,COM,对象,接口第一章.绪论COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。

在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。

COM组件的优点:①可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;②可以在多个应用系统中重复利用同一个组件;③可以方便的将应用系统扩展到网络环境下;④COM组件的特性是与语言无关和与平台无关。

因此,一经开发便可以使用不同的高级语言和开发工具调用。

并且,客源在此COM组件基础进行二次开发。

随着Internet和Intranet应用的飞速发展,COM(Component Object Model,组件对象模型)以其巨大的潜力渗透到软件学科的各个领域。

COM技术及OPC技术

COM技术及OPC技术



virtual HRESULT STDMETHODCALLTYPE Cancel(

/* [in] */ DWORD dwTransactionID) = 0;


};
OPC与COM间关系
❖ OPC(OLE for process control)是建立在微软 公司OLE/COM技术基础上。
❖ COM技术的出现为简单地实现控制设备和控制管 理系统之间的数据交换提供了技术基础。但如果 不提供一个工业标准化的COM接口,各个控制设 备厂家开发的COM组件之间的相互连接仍然是不 可能的。
❖ // 像上面一样创建COM对象,然后, ❖ if ( SUCCEEDED ( hr ) ) ❖{ ❖ //通知COM对象不再使用它 ❖ m_IOPCServer ->Release(); ❖} ❖ 应用程序对COM库进行初始化之后,可以调用COM库提供的各种服务,
在调用过程中必然要消耗COM库管理的资源。因此,COM程序在完成 COM库服务之后,通常在程序退出之前,终止COM库服务函数,以便 释放COM库所维护的资源。COM库的终止函数为: ❖ void CoUninitialize(void); ❖ 凡是调用CoInitialize函数返回S_OK的进程或者程序模块,都一定要调 用对应的CoUninitialize函数以保证COM库资源的有效利用。
接口的定义、结构与分类
❖ COM对于接口的定义和接口的实现作了严格的区分。通过 下面的IUnknown接口可以知道,在接口中只有接口方法的 描述,而没有实现。
❖ COM接口的名字以字母I打头。其中IUnknown接口最重要, 因为所有其它接口都是从IUnknown接口直接或间接继承而 来的。

CORBA和COM有哪些区别?只在OS上吗?

CORBA和COM有哪些区别?只在OS上吗?

CORBA和COM有哪些区别?只在OS上吗?说明:个人收集,非自创出处:正文:对象标准COM和CORBA论长道短组合软件是新一代软件技术发展的标志,它的提出很自然,为了提高软件生产力、不草率地开发应用程序、设计开发人员应尽可能地利用可重用的软件组件、组装构造新的应用软件系统。

追根求源,由软件模块组件组织合成软件的思想早在70年代就已提出了,函数就是一种组件,函数通过参数来适应不同应用需求的变化,Ada语言的模块package就是一种组件,实现了内部细节掩藏,模块通过接口规范说明进行连接和组装,package还提供了类属机制,使模块通过类属参数,适应不同应用需求的变化。

但是,传统软件系统结构的局限性,以过程为中心设计的功能模块,其扩充和复用的能力都较差,对模块进行应用重组的困难很多。

从80年代开始的面向对象技术的研究,使组合软件又萌发出新的生命力。

面向对象的软件,以数据为中心设计,对象类既具有模块的封装性和类属等特性,还具有继承特性,极大地提高了类的可扩充性和可再用能力。

对象类较之于传统软件的功能模块而另具有的优点是:(1)易于理解,具有完整的语义特征;(2)易于扩充和修改,具有较高的通用性和适应性;(3)易于构造组装,具有规范的外部接口。

开发应用组件必须遵循标准,以保证软件组件的互操作性,只有遵循统一的标准,不同厂商的、不同时期的、不同程序设计风格的、不同编程语言的、不同操作系统的、不同平台上的软件或软件部件才能进行交流与合作。

为此,OMG(ObjectManageGroup)提供了一个对象标准CORBA,它定义了一个网连对象的接口,使得对象可以同时工作。

基于CORBA的对象请求代理ORB为客户机/服务器开发提供了中间件的新格式。

令人称奇的是,作为OMG成员的微软公司却撇开CORBA而另辟了COM(ComponetObjectModel),即组件对象模型,并把COM 定位成基于对象的软件开发模型,尽管COM被认为是微软鼓噪出来的技术,但支持COM的开发工具却不断增多,其中大部分来自于微软,包括VisualBasic和VisualC++。

基于组件对象模型的上位机—PLC串行通讯程序设计

基于组件对象模型的上位机—PLC串行通讯程序设计
微机 一X一N P C控 制 器的 自动化 服 务 程序 的 实用模 型 .并 且 完成 了和上 位机 用 户程 序 的 集成 , F 2 L
通 过 实际的 运行 测试 . 功地 对 P C 中的 参数 进行 监控 和 改 写 。 成 L 关 键词 : 组件 ;X一N;L 通 讯协议 F 2 P C;
D s nB sdo o o e tO jc d l ei ae n C mp n n bet g Mo e
WE J njn N a - i u
f h 5hIs tueo E C B in at aj o1 0 ,hn ) T e t ii t f T ,e igE s Y ni 0 C i 4 n st C j a 1 1 6 a
t ra d d f h a a t r ft o n mo iy t e p r mee so PLC fe tv l . he e f c ie y
Ke wo d: o o e t F 2 : L S ra c mm u i ai n P oo o y r C mp n n ; X一 N P C; e — o i nc t r tc l o
Ab t a t T r u h a a y ig t e s r l o sr c : h o g n l zn h e i — mm u ia i n p o o o fM I S BI HIF 2 P C a d U — a c n c t — r t c lo T U S X一 N L n S o
维普资讯
基于组件对象模型的上位机—P C L 串行通讯程序设计
温建 军 ( 国电子 科技 集 团公 司第 四 十五 研究 所 , 中 北京 东 燕郊 1 10 ) 0 6 1 摘 要 : 过应 用 C M 技 术及 对三 菱公 司 F 2 系列 P C 串行 通讯 协 议 的分 析 ,建 立 了用 于 通 O X一N L

MFC和组件对象模型COM

MFC和组件对象模型COM

组件对象模型COM是组件对象模型(Component Object Model)的首字母缩略词。

COM是一种方法,用于创建一个独立于任何编程语言的对象。

C++类具有成员函数,而COM对象具有“方法”。

这些方法组织在“接口”中,通过“接口指针”来调用它们。

接口将语义相关的方法组合在一起。

每一个COM对象都实现了一个名为IUnkown的接口(通用的COM程序习惯在接口名字前加一个大写的“I”)。

IUnkown只包含3种,如表1所示。

表1 IUnkown的3种方法方法名称说明QueryInterface AddRef Release 返回指向另一个接口的指针增加对象的引用计数减少对象的引用计数COM的规则规定:只要给定一个指向接口的指针,客户就可以通过该指针调用任意一个IUnkown方法,以及所有属于该接口的特殊方法。

也就是说,所有接口除了支持它们自己的方法外还支持这3个IUnkown方法。

图1是一个简单的COM对象示意图,图中的细棒代表对象的接口,通常都会忽略IUknown接口,因为所有其他接口都可以访问该接口。

图1一个简单的COM对象实际上COM中的接口是用数字标记而不是名字标记的。

“接口标识”(或称为IID)是一个128位的值,它唯一的标识了每一个接口。

要生成IID,可以用VisualC++中的命令行工具Unidgen;另一个是用GUI 应用程序Guidgen。

也可以用COMAPI函数CoCreateGuid通过编程来生成。

实例化COM对象COM类也像接口一样用128位的值来标识。

标识类的GUID称为“类ID”或CLSID。

要实例化一个对象,用户只需知道该对象的CLSID就可以了。

COM 有自己的API来创建对象实例。

最常用的是CoCreateInstance,它接受一个CLSID 并返回一个指向对象的接口指针。

下列语句实例化了一个CLSID为SLSID_Object的COM类,并将对象的IMath接口的指针保存在pMath中:IMath*pMath;CoCreateInstance(CLSID_Object,NULL,CLSCTXX_SERVER,IID_IMath,(void **)&pMath);其中的IID_Math只是一个变量,用来保存IMath的128位接口ID。

浅析三种主流分布式组件对象模型对比及互操作

浅析三种主流分布式组件对象模型对比及互操作
潘 1 复虹
( 南平师范高等专科学校 计算机科学与信息工程系, 福建 武夷山 340 ) 530
摘 要 表文主 要从 三种主流 分布 式对 象模型体 系结构 入手, 绍 了中 间件技 术在 多层 分布 式系统 中的应用。针对 介 基于 C R A、 LV I ]I EB三种组件对象模型的体 系结构和技术特点作 了详细介 绍, 对三者的技术指 O B (llXIV、 / l 并
维普资讯
第 2 卷 4期 5
20 0 6年 1 0月
南平 师专学 报
J OURNAL OF NANPI TEACHERS NG CO1 . . iEGE
V_ . 5 N 4 o 2 o. 1 Oc . 0 6 t2 0
浅析三种 主流分布式组件对象模型对 比及互操作
wa tc n l y i ] pe ds b td s s m.I a o d s r e eal a o t h p cat n e h oo yo e( R— e h o g mut l i u e y t o n i  ̄i e t l e ci s i d ti b u es e il a d tc n lg f h 2 s b n s t y t O
B ( llI / I n J T eq af ai ftetremoesa doea o fec te r s e,ae da a A、L V/XI  ̄ ad E B h uli t no e d l n p rt o ahoh raea otnprda r — ic o h h i n l n i
On Co ta ta d Op r to ft r e Prn i l u r s n e a in o h e icp e
Di r ue j c Mo e ’ Arhtcu e s i td 0be t d lS c i tr tb e

中英文地理信息系统(GIS)英语词汇表

中英文地理信息系统(GIS)英语词汇表

accreditation 委派accuracy 准确度acquisition 获取activity patterns 活动模式added value 附加值adjacency邻接Aeolian 伊奥利亚人的, 风的, 风蚀的Age of Discovery 发现的年代aggregation聚合algorithm, definition算法,定义ambiguity 不明确analytical cartography 分析制图application programming interfaces(APIs) 应用编程接口ARCGis 美国ESRI公司开发的世界先进的地理信息系统软件ArcIMS 它是个强大的,基于标准的工具,让你快速设计和管理Internet地图服务ArcInfo 在ArcGIS软件家族中,ArcInfo是GIS软件中功能最全面的。

它包含ArcView和ArcEditor 所有功能,并加上高级空间处理和数据转换ArcNews 美国ESRI向用户终生免费赠送的ArcNews报刊ArcSDE ArcSDE在ESRI GIS软件和DBMS之间提供通道,是一个空间数据引擎ArcUser Magazine 为ESRI用户创建的报刊ArcView 桌面GIS和制图软件,提供数据可视化,查询,分析和集成功能,以及创建和编辑地理数据的能力ARPANET ARPA 计算机网(美国国防部高级研究计划局建立的计算机网)aspatial data 非空间数据?Association of Geographic Information (AGI) 地理信息协会attribute data 属性数据attributes, types 属性,类型attributive geographic data 属性地理数据autocorrelation 自相关Autodesk MapGuide 美国Autodesk公司生产的Web GIS软件Automated mapping/facility management(AM/FM) systems 自动绘图/设备管理系统facilities 设备avatars 化身A VIRIS 机载可见光/红外成像光谱仪azimuthal projections 方位投影batch vectorization 批量矢量化beer consumption 啤酒消费benchmarking 基准Berry, Brianbest fit line 最优线binary counting system 二进制计算系统binomial distribution 二项式分布bivariate Gaussian distribution 二元高斯分布block encoding 块编码Bosnia, repartitioning 波斯尼亚,再分离成两个国家buffering 缓冲区分析Borrough, PeterBusiness and service planning(retailing) application in petroleum and convenience shopping 石油和便利购物的业务和服务规划(零售)应用business drivers 业务驱动business, GIS as 业务,地理信息系统作为Buttenfield, Barbaracadasters 土地清册Callingham, Martincannibalizing 调拨Cartesian coordinate system笛卡尔坐标系Cartograms 统计地图cartographic generalization 制图综合cartographic modeling 地图建模cartometric transformations 量图变换catalog view of database 数据库目录视图census data人口普查数据Census of Population 人口普查central Place Theory 中心区位论central point rule 中点规则central tendency 中心倾向centroid 质心choropleth mapping分区制图choosing a GIS 选择一个地理信息系统class 类别classification generalization 分类综合client 客户端client-server C/S结构客户端-服务器cluster analysis 聚类分析clutter 混乱coastline weave 海岸线codified knowledge 编码知识COGO data 坐标几何数据COGO editing tools 坐标几何编辑工具Collaboration 协作Local level 地方级National level 国家级Collection-level metadata 获取级元数据Commercial-off-the-shelf (COTS) systems 成熟的商业化系统chemas-microsoft-comfficeffice" />>> Commom object request broker architecture (CORBA) 公共对象请求代理体系结构Community, GIS 社区,地理信息系统Competition 竞争Component GIS 组件地理信息系统Component object model (COM) 组件对象模型Computer assisted mass appraisal (CAMA) 辅助大量估价,>>Computer-aided design (CAD)-based GIS 基于计算机辅助制图的地理信息系统Models 数据模型Computer-aided software engineering (CASE) tool 计算机辅助软件工程工具Concatenation 串联Confidence limits 置信界限Conflation 异文合并Conformal property 等角特性Confusion matrix 混淆矩阵Conic projections 圆锥投影Connectivity 连接性Consolidation 巩固Constant term 常数项Contagious diffusion 传染扩散Continuing professional development (CPD) 持续专业发展Coordinates 坐标Copyright 版权Corridor 走廊Cost-benefit analysis 成本效益分析Cost-effectiveness evaluation 成本效率评估Counting method 计算方法Cresswell, PaulCustomer support 客户支持Cylindrical Equidistant Projection 圆柱等距投影Cylindrical projections 圆柱投影> >Dangermond, Jack 美国ESRI总裁>> dasymetric mapping 分区密度制图>>data 数据>>automation 自动化>>capture costs 获取代价>>capture project 获取工程>>collection workflow 采集工作流>> compression 压缩>>conversion 转换>>definition 定义>>geographic, nature of 地理数据,数据的性质>> GIS 地理信息系统>>industry 产业>>integration 集成>>mining 挖掘>>transfer 迁移>>translation 转化>>data model 数据模型>> definition 定义>>levels of abstraction 提取等级>> in practice 实际上>>types 类型>>database 数据库>>definition 定义>>design 设计>>generalization 综合>>global 全球的>>index 索引>>multi-user editing 多用户编辑>> structuring 结构>>database management system (DBMS) 数据库管理系统>>capabilities 能力>>data storage 数据存储>>geographic extensions 地理扩展>>types 类型>>Dayton Accord 达顿协定,1995年12月达顿协定(DAYTON ACCORD)签订,巴尔干和平已经实现,波斯尼亚(包括黑塞哥维那)再被分解成两个国家>>decision support 决策支持>>deductive reasoning 演绎推理>>definitions of GIS 地理信息系统的各种定义>>degrees of freedom 自由度>>density estimation 密度估算>>dependence in space 空间依赖>>desktop GIS 桌面地理信息系统>>desktop paradigms 桌面范例>>Digital Chart of the World (DCW) 世界数字化图>>digital divide 数字鸿沟>>Digital Earth 数字地球>>Digital elevation models (DEMs) 数字高程模型>>Digital line graph (DLG) 数字线划图>>Digital raster graphic (DRG) 数字影像图>>Digital representation 数字表现>>Digital terrain models 数字地形模型>>Digitizing 数字化>>DIME (Dual Independent Map Encoding) program 美国人口调查局建立的双重独立地图编码系统>> Dine CARE >>Discrete objects 离散对象>>Douglas-Poiker algorithm 道格拉斯-普克算法,一种矢量数据抽稀算法>>Dublin Core metadata standard 都柏林核心元数据标准>>Dynamic segmentation 动态分割>>Dynamic simulation models 动态仿真模型>>> >Easting 朝东方>>Ecological fallacy 生态谬误>>e-commerce 电子商业>>editing 编辑>>education 教育>>electromagnetic spectrum 电磁光谱>>ellipsoids 偏振光椭圆率测量仪>>of rotation 旋转的>>emergency evacuation 应急撤退>>encapsulation 封装>>environmental applications 环境应用>>environmental impact 环境影响>>epidemiology 流行病学>>equal area property 等面积特性>>Equator 赤道>>ERDAS ERDAS公司是世界上最大的专业遥感图像处理软件公司,用户遍布100多个国家,软件套数超过17000套。

C++COM编程之什么是组件?

C++COM编程之什么是组件?

C++COM编程之什么是组件?什么是组件?一个组件同一个微型应用程序类似,即都是已经编译、链接好并可以使用的了,应用程序就是由多个这样的组件打包而得到的。

各定制的组件可以在运行时同其他组件连接起来以构成某个应用程序。

在需要对应用程序进行修改或改进时,只需要将构成此应用程序的组件中的某个用新的版本替换掉即可。

COM组件COM,即组件对象模型,是一个说明如何建立可动态互变组件的规范,它提供了为保证能够互操作,客户和组件应遵循的一些标准。

COM组件是以Win32动态链接库(DLLs)或可执行文件(EXEs)的形式发布的可执行代码。

COM组件必须满足以下条件:组件是完全与语言无关的;组件可以以二进制的形式发布;组件可以在不妨碍老客户的情况下被升级;COM组件可以透明的在网络上被重新分配位置。

使用组件的优点1.应用程序定制组件架构从本质上讲就是可被定制的,因用户可以用更能满足他们需要的组件来将某个组件替换掉;2.组件库组件架构最引人注目的优点之一是快速应用程序开发。

这一优点可以使开发人员从某个组件库中取出所需要的组件并将其快速地组装到一块以构造所需的应用程序,如同搭积木块一样;3.分布式组件组件架构可以使得开发这类分布式应用的过程得以简化。

实际上,客户机/服务器式的应用就是向组件架构跨出的第一步。

在那里整个应用程序被分成两部分:客户机部分及服务器部分。

总结COM提供了编写组件的一个标准方法。

遵循COM标准的组件可以被组合起来以形成应用程序。

至于这些组件是谁编写的、如何实现的都是无关紧要的。

每一个COM组件均可同其他组件一起使用。

实现这种可动态改变组件的关键问题是信息的封装。

对于封装,COM是通过组件和客户之间的连接或接口来实现的。

对于接口,我下篇博文进行总结。

第1讲 COM Corba

第1讲 COM Corba

COM组件 对象1 对象2
接口1
接口2
接口3
COM组件、COM对象、COM接口关系
COM结构
COM标准包括规范和实现二大部分 规范部分定义了组件与组建之间的通信的机制,不依 赖语言和操作系统 实现部分是COM库,为COM规范的具体实现提供一 些核心服务
对象与接口
对象类似于C++的概念 接口是一组逻辑上相关的函数的稽核,习惯以“I” 为前缀,如”IUnknown” 每个接口由一个128位的全局唯一标识符( GUID,globally Unique Identifier)来标识 每个对象由一个128位的全局唯一标识符( GUID,globally Unique Identifier)来标识,称 CLSID(class identifier, 类标识符或类ID)
COM概述 概述
COM
COM组件对象模型(Component Object Model) 是一种以组件为发布单元的对象模型 该模型使各软件组件可以用一种统一的方式进行交互 即提供了组件之间交互的规范
COM起源
OLE表述的是复合文档(compound document)的 概念 OLE1中,组件程序与客户程序之间通信并没有使用 COM规范,而是使用动态数据交换(DDE,Dynamic Data Exchange)机制,确定:效率低,稳定性不 好,不方便 OLE2采用了COM模型,提高了效率和稳定性 组件产生:想法——把一个大的应用程序分成多个独 立模块,通过接口实现协同工作
COM起源——续1
应用系统版本一 组件1 组件3 组件5 组件2 组件4 组件6
应用系统版本二 组件1’ 组件3 组件5 组件2 组件4’ 组件6
组件化应用程序的一种升级示例

COMDCOMCOM+组件技术

COMDCOMCOM+组件技术

组件技术COM/DCOM/COM+组件技术COM/DCOM/COM+2010-09-1610:03:38|分类:计算机|标签:com组件dcom对象调用|字号大中小订阅摘要:针对分布、异构的计算环境要求,应用系统的开发遇到了严峻的挑战。

本文较为详细地介绍了微软组件技术的发展过程及相应技术特点,特别是最新的COM+组件技术引入,对今后应用系统的开发可产生不可估量的效益。

关键词:COM;DCOM;COM+;组件组件是独立于特定的程序设计语言和应用系统、可重用和自包含的软件成分。

组件是基于面向对象的,支持托放(drag and drop)和即插即用(plug and play)的软件开发概念。

基于组件技术的开发方法,具有开放性、易升级、易维护等优点。

它是以组合(原样重用现存组件)、继承(扩展地重用组件)、设计(制作领域专用组件)组件为基础,按照一定的集成规则,分期、递增式开发应用系统,缩短开发周期。

在开发过程中遵循以组件为核心原则、组件实现透明原则及增量式设计原则。

目前,在组件技术标准化方面,主要有以下三个比较有影响的规范:OMG起草与颁布的CORBA;微软公司推出的COM/DCOM/COM+;SUN发表的JavaBeans。

由于Windows操作系统的流行,COM/DCOM/COM+组件技术深受程序员偏爱,目前已有大量系统基于此组件技术,因此本文着重针对微软的组件技术作一介绍。

COM是个开放的组件标准,有很强的扩充和扩展能力。

COM规定了对象模型和编程要求,使COM对象可以与其他对象相互操作。

这些对象可以用不同的语言实现,其结构也可以不同。

基于COM,微软进一步将OLE技术发展到OLE2。

其中COM实现了OLE对象之间的底层通信工作,其作用类似于CORBA/ORB。

在OLE2中出现了拖—放技术以及OLE 自动化[1]。

COM 规范包括COM 核心、结构化存储、统一数据传输、智能命名和系统级的实现(COM 库)。

ArcEngine的基本原理对象组件模型

ArcEngine的基本原理对象组件模型

使得编程技术难度和工作量降低,降低开发周期和成本
使得软件的复用性得到提高 语言独立,可以使用任何一种语言编写COM组件
2.5 如何阅读OMD


OMD(Object Model Diagram 对象模型图)
ArcGIS Engine:嵌入式GIS组件库,可使用C++, COM, .NET和Java来构建自定义的、面向行业的应用软件; ArcGIS Server:GIS软件对象的共享库,用于构建企业和网 络计算框架内的应用软件。它使用.NET/ASP和Java/JSP来 构建基于SOAP的网络服务和网络应用程序; ArcIMS:GIS网络服务,通过开放的因特网协议发布地图、 数据和元数据; ArcSDE:在大量的数据库管理系统(DBMSs)中进行地理 数据管理的界面。

客户端调用服务器并且服务给予响应 所有通讯是通过接口进行的
Client ArcMap
Component
(Map.dll)
2.4 COM 类


COM类执行接口
所有类执行 IUnknown

IUnknown
管理所有对象的产生、终结
成员: QueryInterface, AddRef 和 Release
垃圾车 IDrive 燃料 加速 刹车 IGarbage 倾倒 拾起 IRace IDrive
RaceCar Fuel Accelerate Brake 圈速度 停靠站
2.4 COM 接口


定义一组逻辑的方法和属性
从 IUnknown (default)继承 ArcObjects 支持
客户化接口
10. COM对象可在开发过程中不断扩充、添加新的接口。如: ILayer2

理解对象模型图(ReadingOMDS)

理解对象模型图(ReadingOMDS)

理解对象模型图(ReadingOMDS)引⾔这篇⽂章⼤部分内容是翻译的帮助资料⾥的东西。

学习技术,英语是个好⼯具。

⼀直把英语的地位看得和技术⼀样重,也会强迫⾃⼰看英语版的技术书籍(都是PDF版的,外国的书买不起)、资料。

但⼀开始,这完全是⼀件痛苦万分的事,⼤量的专业词汇和概率总是让我摸不着头脑。

后来,慢慢积累词汇查找概念对英语这块不恐惧了,趁现在还处在记忆⼒黄⾦期希望能多补⼀补专业英语。

这需要长期积累与坚持。

这篇⽂章不光是翻译的内容,还有平常积累的东西和思考总结的东西。

愿有个好的开始……(单是翻译过来的话,⽂章不好理解,有些地⽅稍微改变了⼀下表达⽅式,但内容没变,看内容的时候请记住和对⽐符号。

)资料来源开发帮助:ArcObjects help for .NET(2010)/Learning ArcObjects/Getting started with ArcObjects .NET/Reading OMDS内容对象模型图解采⽤的是UML(统⼀建模语⾔)。

对象模型图是对对象浏览器的补充,它列出了开发环境中没有的类与成员、类与类之间的关系和结构,有了对象模型图能更好的理解AO的组件。

(获得OMDS的途径有两种⼀种是通过开发帮助,找到相应命名空间,在它的内容节点找到Diagrams,另⼀种是在安装路径下“……ArcGIS/DeverloperKit10.0/ Diagrams”)。

1.“类”的类型上图有三种类型的框分别代表是AbstractClass、CoClass、Class三种类型的类。

(⼀定要记住这三种框代表的类)AbstractClass(抽象类):抽象类,不能⽤它创建对象(只能通过⼦类继承)。

⽐如,⼀个“Line”是“primaryLine”和“secondary Line”的抽象类。

抽象类对于想要创造出⾃⼰的⼦类是⾮常重要的(它显⽰了在继承中哪些是特定的接⼝,哪些是可选择的接⼝(optional Interface))。

COM原理概述

COM原理概述

文章编号:167121742(2004)0320398205COM 原理概述冯正全(成都信息工程学院电子系,四川成都610041) 摘要:组件对象模型(COM )是与平台无关的、分布式的、面向对象的。

COM 是微软OL E ,ActiveX 等的基础技术。

更好的理解COM ,关键是记住COM 不是面向对象的语言,而是创建二进制软件组件的标准。

关 键 词:COM 组件;COM 对象;COM 接口;类厂;COM 库;列集中图分类号:TP313 文献标识码:A收稿日期:2003210213;修订日期:20032122161 引言把一个庞大的应用程序分成多个模块,每一个模块保持功能独立性,在协同工作时,通过相互之间的接口完成实际的任务。

我们把每一个这样的模块称为COM 组件,这些组件可以在不同的计算机上用不同的程序设计语言单独开发,单独编译,单独调试和测试。

当所有的组件开发完成后,把它们组合在一起就得到了完整的应用程序。

2 COM 组件结构在COM 标准中,引入了面向对象的思想,类似与C ++中对象的概念,对象是某个类的一个实例,称为COM 对象。

接口是一组方法的集合,其方法也称为接口成员函数。

COM 组件为COM 对象提供活动空间,COM 对象以COM 接口的方式提供服务。

COM 组件、COM 对象、COM 接口之间的关系如图1所示。

图1 COM 组件、对象、接口关系图每个COM 组件包含多个COM 对象,每个COM 对象提供多个COM 接口供客户使用。

COM 组件有两种,一是进程内组件,是一个DLL (动态连接库)文件;二是进程外组件,是一个EXE (可执行程序)文件。

当另外的组件或普通程序(即组件的客户程序)调用组件的功能时,它首先创建一个COM 对象,然后通过该对象所实现的COM 接口调用它所提供的服务。

组件的内部实现对客户程序是完全隐藏的。

COM 是客户/服务器模型,提供服务的组件是服务器,使用服务的组件和普通程序是客户。

1.2 理解对象模型图(OMD)

1.2  理解对象模型图(OMD)

A
河南信阳师范学院城市与环境科学学院张兴国
根据网上AOVBA开发教程(esri版权所有)编辑
6-15
试分析以下地图文档
河南信阳师范学院城市与环境科学学院张兴国
根据网上AOVBA开发教程(esri版权所有)编辑
6-16
参考代码(1)——加载地图文档


private void Form1_Load(object seLeabharlann der, EventArgs e)
根据网上AOVBA开发教程(esri版权所有)编辑
6-8
(2)组合

组合代表一种整体和部分的关系,组合中的某个主体控制着 另外一个主体的生命周期。
小鸡类
2
2
翅膀类
腿类
河南信阳师范学院城市与环境科学学院张兴国
根据网上AOVBA开发教程(esri版权所有)编辑
6-9
(3)依赖

依赖表示一个对象的方法能够产生另一个对象。
河南信阳师范学院城市与环境科学学院张兴国
根据网上AOVBA开发教程(esri版权所有)编辑
6-3
在哪里可以找到ArcGIS OMD图表


在AO(AE)的系列图表中拥有超过 1,500 个类
超过 1,600 个接口
河南信阳师范学院城市与环境科学学院张兴国
根据网上AOVBA开发教程(esri版权所有)编辑
6-12
5 例子

1. 2.
查阅OMD,了解以下类的含义及关系
MapDocument Map
3.
4.
Layer
FeatureLayer
河南信阳师范学院城市与环境科学学院张兴国
根据网上AOVBA开发教程(esri版权所有)编辑

简述对象模型的组成

简述对象模型的组成

简述对象模型的组成对象模型是计算机科学中的一个概念,用于描述对象的组成和行为。

它是面向对象编程的基础,对于理解和设计软件系统非常重要。

本文将从对象模型的组成及其重要性两个方面进行阐述。

一、对象模型的组成1. 对象:对象是对象模型的基本组成单元,它是一个具体的实体,拥有属性和方法。

对象可以是现实世界中的事物,也可以是抽象的概念。

每个对象都有自己的状态和行为,通过调用对象的方法可以改变其状态或执行特定的操作。

2. 类:类是对象的模板,用于定义对象的属性和方法。

一个类可以创建多个对象,这些对象都具有相同的属性和方法。

类定义了对象的共同特征和行为,是对象模型中的核心概念。

3. 属性:属性是对象的特征,描述了对象的状态。

每个对象可以具有多个属性,属性可以是基本类型(如整数、字符串)或其他对象类型。

属性的值可以在对象的生命周期中发生变化。

4. 方法:方法是对象的行为,用于描述对象可以执行的操作。

方法可以访问和修改对象的属性,并且可以与其他对象进行交互。

通过调用对象的方法,可以触发对象执行相应的操作。

5. 继承:继承是一种机制,允许子类继承父类的属性和方法。

子类可以扩展或修改父类的功能,从而实现代码的复用。

继承是面向对象编程中的重要特性,可以建立对象之间的层次结构。

6. 多态:多态是指同一操作可以作用于不同类型的对象,并且可以产生不同的结果。

多态性可以提高代码的灵活性和可扩展性,使程序更加易于维护和扩展。

二、对象模型的重要性1. 抽象和封装:对象模型提供了一种抽象和封装的方式,可以将复杂的系统分解为多个对象,每个对象负责完成特定的功能。

通过封装对象的属性和方法,可以隐藏对象内部的实现细节,只暴露必要的接口,提高代码的可读性和可维护性。

2. 代码复用:对象模型通过类和继承的机制,实现了代码的复用。

通过定义通用的类和方法,可以在不同的对象中共享代码,减少代码的重复编写,提高开发效率。

3. 灵活性和扩展性:对象模型允许在运行时动态地创建和销毁对象,以及添加、修改和删除对象的属性和方法。

二次开发期末复习题新修改

二次开发期末复习题新修改

一.选择题1.封装是指把对象的(A)结合在一起,组成一个独立的对象.A 属性和操作B 信息流C 信息和事件D 数据的集合2.封装是一种(C)技术,目的是使对象的生产者和使用者分离,使对象的定义和实现分开.A 工程化B 系统维护C 信息隐蔽D 生产对象3.面向对象方法中的(D)机制使子类可以自动地拥有(复制)父类全部属性和操作A 约束B 对象映射C 信息隐蔽D 继承4.使得在多个类中能够定义同一个操作或属性名,冰镇每一个类中有不同的实现的一种方法是(B)A 继承B 多态性C 约束D 接口5.UML的软件以(A)为中心,以系统体系结构为主线,采用循环迭代渐增的方式进行开发A 用例B 对象C 类D 程序6.UML的(B)模型图是由类图、对象图、包图、构件图和配置图组成 .A 用例B 静态C 动态D 系统7.UML的(C)模型图由活动图、顺序图、状态图和合作图组成.A 用例B 静态C 动态D 系统8.UML的最终产物就是最后提交的可执行的软件系统和(D)A 用户手册B 类图C 动态图D 响应的软件文档资料9.在UML的需求分析建模中,(B)模型图必须与用户反复交流并加以确认.A 配置B 用例C 包D 动态10.可行性研究分析包括经济可行性分、析技术可行性分析和(B).A 风险可行性分析B 法律可行性分析C 资源可行性分析D 效益可行性分析11.UML的客户需求分析模型包括(A)模型、类图、对象图和活动图组成.A 用例B 静态C 动态D 系统12.UML客户需求分析使用的CRC卡上“责任”一栏的内容主要描述类的(C)和操作.A 对象成员B 关联对象C 属性D 私有成员13.UML客户需求分析产生的用例模型描述了系统的(D).A 状态B 体系结构C 静态结构D 功能要求14.在UML的需求分析建模中,用例模型必须与(B)反复交流并加以确认.A 软件生产商B 用户C 软件开发人员D 问题领域专家15.在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用(A)A 活动图B 状态图C 配置图D 构件图16.活动图中的分劈和同步接合图符是用来描述(A)A 多进程的并发处理行为B 对象的时序C 类的关系D 系统体系结构框架17.UML的系统分析进一步要确立的三个系统模型是(B)、对象动态模型和系统功能模型.A 数据模型B 对象静态模型C 对象关系模型D 体系结构模型18.类和对象都由属性,它们的差别是:类描述了属性的类型,而对象的属性必须由(C)A 正负号B 动作C 具体值D 私有成员19.UML系统分析阶段产生的包图描述了系统的(B)A状态B 系统体系层次结构C 静态模型D 功能要求20.“对象容器”设计模式对有限的对象进行管理,它不能(B).A查找对象B 修改对象C 创建对象D 删除对象21.UML系统设计的一般步骤包括系统对象设计,系统体系结构设计和系统设计的(C)和审查等.A 建模B 完善C 优化 D迭代22.顺序图和合作图主要用于对用例图中(C)的建模,用它们来描述用例图的行为.A 数据流B 控制流C 消息流D 数据字典23.数据图的模型元素有(A),消息,链接等,这些模型元素表示某个用例中的若干个对象和对象之间所传递的消息,来对系统的行为建模.A 对象B 箭线C 活动D 状态24.顺序图描述(D)对象之间消息的传递顺序.A 某个B 单个C 一个类产生的D 一组25.顺序图和合作图建立了UML面向对象过程中的对象动态(A)模型.A 交互B 状态C 体系结构D 软件复用26.状态图可以表现(B)在生存期的行为,所经历的状态序列,引起状态转移的事件以及因状态转移二引起的动作.A 一组对象B 一个对象C 多个执行者D 几个子系统27.状态图描述一个对象在不同(A)的驱动下发生的状态迁移.A 事件B 对象C 执行者D 数据28.一个(D)迁移图符可以有多个源状态或目标状态,它们可以把一个控制分解为并行运行的并发线程,或将多个并发线程结合成单个线程.A 状态B 对象C 活动D 同步并发29.活动图中动作状态之间的迁移不是靠(B)触发的,当活动状态中的活动完成是迁移就被触发.A 对象B 事件C 执行者D 系统30.状态图和活动图建立了UML 面向对象开发过程中的对象动态(B)模型.A 交互B 状态C 体系结构D 软件复用31.UML可以描述硬件之间的互联关系,也能描述硬件单元上的(B)系统的分布A 对象B 软件C 系统体系结构 D数据32.(B)是对系统的用例、类、对象、结构以及相互间的交互和协作进行描述A 系统体系结构 B软件(逻辑)体系结构 C硬件(物理)体系结构 D系统框架33.(D)硬件系统体系结构要对系统的构件、结点的配置进行描述.A软件(逻辑)体系结构B系统体系结构C系统框架D硬件(物理)体系结构34.(A)是软件系统体系结构中定义的概念和功能在物理体系结构中的实现.A构件 B结点 C软件 D模块35.(C)由结点和结点之间的联系组成,描述了处理器、设备和软件构件欲行时的体系结构.A构件图 B状态图 C配置图 D顺序图36.(D)的基本元素有结点、构件、对象、连接、依赖等.A构件图B状态图C顺序图D配置图二.填空题1.软件生存周期由(软件定义)、(软件开发)和(软件使用、维护和更新)三部分组成.2.软件开发模型有(瀑布模型)、(渐增模型)、(演化模型)、(螺旋模型)和(智能模型)等5种主要模型.3.面向对象技术采用以类为中心的(封装)、(继承)、(多态)等不仅支持软件复用,而且使软件维护共作可靠有效,可实现系统的柔性制造4.UML的优点是(唯一性)、(连续性)、(维护性)、(复用性)和(逐步完善).5.UML分析和设计模型由三类模型图表示.三类模型图是:(用例)模型图、(构件)模型图和(配置)模型图.6.UML开发过程是一种二维结构软件开发过程,软件项目开发过程流包括的核心工作内容是:(分析)、(设计)、(实现)、(测试)和(配置)7.UML中的五个不同的视图可以完整地描述出所建造的系统,这五种视图是(用例)视图、(逻辑)视图、(构件)视图、(进程)视图和(配置)视图.8.UML软件开发过程需求分析阶段产生的模型由三类模型图表示.它们是:(用例)模型图、(静态)模型图和(动态)模型图.9.在用例图中以实线方框表示系统的范围和边界,在系统边界内描述的是(用例),在边界外描述的(执行者).10.用例模型中的执行者可以是(“人”执行者)也可以是(“外部”执行者).14.用例模型中的用例之间的关联有(使用)关联、(扩展)关联、(包含)关联和(继承)关联. 11.在UML软件开发过程系统分析阶段产生的对象模型由三种模型.它们分别是:对象的(静态)模型、对象的(动态)模型和对象的(系统功能处理)模型.12.在UML的对象类图中,类之间的关系由(依赖)、(细化)、(关联)、(聚集)和(继承)5种13.共享聚集的“部分”对象可以是任意“整体”对象的一部分,表示食物的整体/部分挂席较弱的情况,“整体”端的重数应该是(n).14.组合聚集是指“整体”拥有它的“部分”,它具有强的物主身份,表示食物的整体/部分关系较强的情况.“部分”生存在“整体”中,不可分离,它们一“整体”一起存在或小王.“整体”的重数必须是(1)15.在UML软件开发过程产生的对象动态模型中消息有四种类型,它们是(简单)消息,(同步)消息,(异步)消息和(返回)消息.16.(顺序)图和(合作)图用来表达对象之间的交互,是描述一组对象如何合作完成某个行为的模型化工具.17.(被动对象)是一个必须由其他对象发来的消息进行出发才执行动作的对象.18.交互图描述系统中对象见的交互行为.每一个交互都有(发送者)和(接收者),它们可以是整个系统,一个子系统,一个用例,一个对象类或一个操作.19.顺序状态表明状态之间的迁移是(串行)的,即一个接一个顺序迁移.20.状态图还可以符合迁移的(同步并发)迁移图符来表示并发子状态.21.状态图中的进程是一个(动作流),能够与其他进程并发执行.22.在活动图中,(虚箭线)也称为对象流,对象流表示动作状态或活动状态与对象之间的关联. 23.活动图既可以描述对象的动态行为,还可以用来描述(用例).24.活动图中活动状态的迁移(不是)由事件进行触发,一个活动执行完毕(自动)进入下一个活动状态.25.状态图和活动图描述系统中某个(系统对象)的一系列状态变化.三.名词解释1.UML是统一建模语言(UML是 Unified Modeling Language的缩写),是用来对软件密集系统进行可视化建模的一种语言.UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言. 2.COM是组件式对象模型(Component Object Model)的英文缩写,是组件之间相互接口的规范,是OLE(Object Linking & Embedding)和ActiveX共同的基础,其作用是使各种软件构件和应用软件能够用一种统一的标准方式进行交互.3.组件是一个可重用且接口符合特定标准的模块(Module),它是由一组处理过程、数据封装和用户接口组成的业务对象.4.GIS组件:遵循COM接口,具有GIS空间信息处理功能,用于进行二次开发的二进制模块.这种特定的组件称为GIS组件.5.类是一组具有相同属性和相同操作的对象的集合,是对象的抽象,它抽象地描述了属于该类的全部对象的属性和操作.6.封装是把对象的属性和方法组装成一个独立的单元,并尽可能隐蔽对象的内部细节.封装是面向对象编程中的一个重要原则是.它有两个含义:一是把对象的全部属性和方法结合在一起,形成一个不可分割的独立单元.二是尽可能隐蔽对象的内部细节,对外形成一个边界.7.继承性继承是指子类可以自动拥有其父类的全部属性与操作,即一个类可以定义为另一个更一般的类的特殊情况.8.消息:通常由消息名、接收消息的对象标示名、调用操作名、输入信息、输出信息等组成.9.多态性:是指同一个消息被不同的对象接收时,可产生不同的动作或执行结果.10.用例模型是表达系统外部事物(执行者)与系统之间交互的可视化工具.11.执行者是指在系统外部与系统交互的人或其他系统,他以某种方式参与系统内用例的执行.12.用例:是系统所提供的一个功能(或者系统提供的某一特定用法)的描述.用例捕获某些用户可见的需求,实现一个具体的用户目标.13.对象(Object):是面向对象的基本单位.是一个拥有属性、行为和标识符的实体.对象是类的实例,对象的属性和行为在类的定义中定义.14.属性(Attribute)描述对象的特征,在具体环境中属性有其确切的对应值.15.方法(Method)作为类的一部分进行定义,可以用来改变对象的属性,或用来接收来自其他对象的信息以及向其它对象发送信息.16.面向对象(Object Orientation)是一种软件开发方法,它包括利用对象进行抽象和封装的类、通过消息进行的通信、对象的生命周期、类层次结构和多态技术等.17.抽象类(Abstract Class):不能用于创建对象,但可以用来指定子类.(通过类型继承). 特点:不可创建,不可实例化;把一些类共同的属性和方法提取出来,用其它类来继承.18.组件类(CoClass):可以直接创建对象,用New关键字创建对象或者从别的对象获得运行实例.特点:可创建的;实例化.19.投影坐标系统(Projection coordinate system)它是将三维地理坐标系统上的经纬网投影到二维平面地图上使用的坐标系统.20.地理坐标系统(Geographic Coordinate System),它可以称为真实世界坐标系,是确定地物在地球上位置的坐标系,以经纬度为地图的存储单位. 21.原型法开发人员在初步了解用户需求的基础上构造一个应用系统模型,即原型,用户和开发人员在此基础上共同反复探讨和完善原型,直到用户满意为止.原型法开发信息系统包括以下几个阶段:(1)确定用户的基本需求(2)开发初始原型(3)利用原型来提炼用户需求(4)修正和改进原型22.生命周期法:就是要求将信息系统的开发工作,从开始到结束划分为若干个阶段,并预先规定好每个阶段的任务,再按一定的准则来按部就班地逐一完成.23.包图:对于一个复杂的大系统,对象类模型包含多个类图.为了完整清晰的描述对象类模型,常用包图来描述一个系统.24.ArcEngine框架控件ArcEngine组件对象模型中,ToolbarControl和TOCControl和MapControl称为框架控件,其中ToolbarControl和TOCControl被设计成和其它控件(MapControl等)协同工作,它起到构建GIS应用程序框架的作用.四.简答题1.简要说明组件式GIS开发的基本原理.组件式软件技术是当今软件技术的潮流之一,即过去厂家提供了全部系统或者二次开发功能的软件,过渡到提供组件由用户自己再开发的方向上来.应用系统开发:如同将一堆各式各样的积木,根据需要把实现各种功能的“积木”搭建起来.组件式GIS开发,是GIS产业顺应组件式软件开发技术的产物,它的基本思想是把GIS的各大功能模块划分为若干组件(或控件),每个组件完成不同的功能.用户利用这些GIS组件可以GIS应用系统.2.举例说明使用Geoprocesser托管调用ArcToolbox工具进行空间分析的方法.ArcGIS 支持通过代码完成既有工具箱中工具的调用,步骤如下:(1)构建一个Geoprocessor的类对象,由它来执行Geoprocessing的工具;(2)构建一个Geoprocessing工具的类对象;(3)填写一些参数,参数分in和out,Required和Optional(4)调用GP的Execute方法执行即可.例如:用ArcToolBox的工具的DataMangementTools->Fields->AddField,给一个shp文件加个字段.AE中GP程序的写法:GeoprocessorGP=newGeoprocessor();AddFieldaddfield=newAddField();=”D:\”;=“aaabbbbb”;=“LONG”;(addfield,null);3.什么是结构化生命周期法有哪些优缺点.将软件工程按其生命周期分成若干阶段,每个阶段有相对独立的任务,每个阶段与结束都规定了严格的质量标准.从而达到软件工程全过程的目的.优点:1)从系统整体出发,强调在整体优化的条件下“自上而下”地分析和设计,保证了系统的整体性和目标的一致性;2)严格区分系统开发的阶段性;每一阶段的工作成果是下一阶段的依据,便于系统开发的管理和控制,以及技术文档的规范化.缺点:1)要求在开发初期锁定功能要求.对用户素质或系统分析员和管理者之间的沟通能力有较高的要求;4.软件危机的主要体现以及GIS系统开发注意问题.阶段主要内容开发软件对软件开发成本和进度的估计不准确软件质量不高用户接受度不高软件产品开发效率低相关的技术档资料不完备维护软件软件可维护性、重用性和可扩展性不高数据不能得到及时的更新系统需求变更所要求的系统升级不能得到实施网络安全维护得不到贯彻执行5.举例说明使用C结合ArcGIS Engine构建地图应用程序.(1) 新建一个Windows窗体应用程序(文件-新建-项目-Windows窗体应用程序)(2) 在点了确定之后,在VS2010的工具箱中找到和ArcGIS Engine相关的控件(3) 然后添加Toc,Map,Toolbar控件.许可控件是首选的,否则无法使用(4) 添加地图文档(Map控件-右键-属性)(5) Toolbar控件和Toc控件与Map控件的关联(6) 在Toolbar中进行设置(Toolbar控件-右键-属性-Item选项),添加工具命令(8)运行应用程序会出现错误,然后在Main函数中6.简要说明AE与AO联系与区别.联系:ArcEngine包括核心AO(ArcObject)的功能,是对AO中的大部分接口、类等进行封装所构成的嵌入式组件.AE中的组件接口、方法、属性与AO是相同的区别:开发环境:AO必须依赖ArcGISDesktop桌面平台,即购买安装了ArcGISDesktop的同时,安装AO,才能利用其进行开发;AE是独立的嵌入式组件,不依赖ArcGISDesktop桌面平台,直接安装AE Runtime和Developer Kit 后,即可利用其在不同开发语言环境下开发功能:AO的功能更强大,AE的功能相对弱些,AE不具备AO的少部分功能.五.绘图题1.2. 绘图说明GIS需求分析用例图的基本元素六.论述题1.试述GIS系统设计三种方法并对其进行比较设计方法特性结构化生命周期法原型法面向对象开发方法开发思想划分六个阶段,并规定它们自上而下,相互衔接的固定次序借助原型(它反映了最终系统的部分重要特性)来辅助软件开发将客观世界看成相互联系的事物(即对象)组成,以对象为单元进行设计开发开发过程线性、固定次序简单到复杂、部分到全面线性、迭代性和无间隙性开发模式整体开发模式.下一阶段开始前完成上一阶段所有细节非整体开发模式.推迟某些阶段的细节工作,从而较早产生工作软件非整体开发模式,分析阶段由底向上提取对象,实现阶段自顶向下建立对象驱动机制文档驱动需求的可变性和模糊性对象作为驱动可见性开发过程系统不可见通过试用原型进行沟通开发过程系统不可见优点是一种较为成熟和完善的管理模式,整体性好具有一定灵活性和可修改性;增进了开发人员和用户对系统需求的理解与人类思维方法一致,便于描述客观世界;开发的软件性能稳定、易于重用和维护缺点缺乏灵活性;难修改和维护;模块重用性差;开发周期长整体性差;由于不断对原型进行修改完善,工作的重复率高,工作量大对象和实体设计存在盲目性;对象间的消息传递不能完整体现系统总体功能;系统结构性较差适用性功能和性能明确完整、无重大变化的软件开发需求不明确,设计方案有一定风险的中小型软件开发数据结构复杂、事物联系密切的软件开发2.试述GIS常用的开发模式优缺点、适用范围.(1) 独立开发模式:也称底层开发,指不依赖于任何GIS工具软件,从空间数掘的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用一种程序设计语言(如C++、Java等),在一定的操作平台上编程实现. 优点:无须依赖任何商业GIS工具软件,可以在某些情况下减少开发成本,功能上不受限制. 缺点:开发难度较高,延长开发周期,往往因受时间和财力的限制,使其在功能上很难与商业化的GIS工具软件相比.适用范围:一般的应用型GIS很少采用这种开发方式,它主要存在于GIS发展初期(很多大型的工具型GIS都是由原来的应用型GIS发展来的,例如国内的MapGIS).但在一些特殊部门(如:军事、研究单位等),由于安全机密性和特殊的功能需要,独立开发方式被广泛地采用.(2) 宿主型开发模式:也称单纯/扩展式二次开发,指完全借助于GIS平台软件提供的开发语言进行应用系统开发,开发出自己的针对不同应用领域的应用程序. 优点:省时省心,可以快速达到使用者的目的,不需要使用者具有专业的GIS二次开发能力,也大大缩短了开发周期、减少精力与财力的投入. 缺点:VBA,作为编程语言功能相对很弱,用来开发应用程序无论从界面到功能上都仍然不尽如人意. 适用范围:一般的应用型GIS也很少采用这种开发方式,它主要应用于简单的功能扩展.当用户购买GIS软件后,如发现某些功能不能完全满足自己的需要,可以利用该GIS软件提供的宏语言来扩展功能.(3) 集成二次开发模式:指将GIS平台软件提供的动态链接库(DLL)或组件与通用软件开发工具(如Visual Studio 、Eclipse、Visual C++、Visual Basic、C、Java等)进行集成,开发满足特定需求的应用GIS系统.优点:不但可以简化开发难度,节约开发成本,也基本克服了功能实现单一的弊端. 缺点:一定程度上还是局限于所选用的GIS二次开发平台,购买GIS二次开发平台也要花费较大的费用.所以需要合理选取GIS二次开发平台及其提供的功能模块.适用范围:这种应用型GIS开发方式被广泛的应用到各行业,已成为GIS应用系统开发的主流方式.3.试述为什么面向对象方法比传统方法在稳定性方面要好.传统的软件开发以算法为核心,开发过程基于功能分析和功能分解.用传统方法所建立起来的软件系统的结构紧密依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改.事实上,用户需求变化大部分是针对功能的,因此这样的软件系统是不稳定的.面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统.它的基本作法是用对象模拟问题领域中的实体,以对象间的联系刻画实体间的联系.当对系统的功能需求变化时并不会引起软件结构的整体变化,仅仅只需要作一些局部性的修改.总之,由于现实世界中的实体是相对稳定的,因此,对象为中心构造的软件系统也是比较稳定的.4.试述结构化方法的组成,并说明各组成部分的基本任务、功能及描述方式.结构化方法由SA 法(Structured Analysis),SD 法(StructuredDesign)和SP 法(Structured Program)组成.SA,SD,SP 法相互衔接,形成了一整套开发方法.若将SA、SD 法结合起来,又称为结构化分析与设计技术(SADT 技术).结构化分析(SA)阶段的任务是:在可行性分析的基础上,进一步了解确定用户需求,准确地回答“系统必须做什么”的问题,获得需求规格说明书.描述方法为DFD 图、数据词典及加工小说明.结构化设计(SD)阶段的任务是:将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结构设计,包括数据结构和程序结构,最后得到软件设计说明书.描述方式:模块图、流程图及PAD 图等.结构化程序设计(SP)阶段的任务是:根据软件设计,选择程序设计语言,编码实现具有良好风格的软件系统.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

组件对象模型控件和组件是什么一般把Control翻译成控件,把Component翻译成组件。

控件就是具有用户界面的组件。

要说的具体一点,就得回顾早期 Windows 的历史根源,当时控件指任何子窗口——按钮、列表框、编辑框或者某个对话框中的静态文本。

从概念上讲,这些窗口——控件——类似用来操作收音机或小电器的旋钮和按钮。

随着控件数量的增加(组合框、日期时间控件等等),控件逐渐成为子窗口的代名词,无论是用在对话框中还是用在其它种类的主窗口中。

没过多久 BASIC 程序员开始编写他们自己专用的控件,自然而然地人们便想到共享这些控件。

共享代码的方法之一是通过磁盘拷贝,但那样显然效率低下。

必须要有一种机制使开发者建立的控件能够在其它程序员的应用中轻而易举地插入,这便是VBA控件,OLE控件,OCX和最后ActiveX 控件的动机。

这就是控件和组件之间产生混淆之所在。

因为为了解决控件的可复用问题,所有这些技术必须首先解决更为一般的组件重用问题。

(COM,如果你还记得它的话,意思是组件对象模型)。

在软件行话中,组件这个术语指任何可复用的对象或任何可与其它对象交互的代码体。

子程序的发明,曾经一度成为程序员趋之若鹜的软件工程圣杯:一种统一的编程理论,它使程序员从基本构建块——也就是用所选语言编写的各种组件建立大型系统。

从子程序演变到OOP,到DLLs,再到COM,再到.NET框架的每一种新的编程范例都代表了一种不同的提供可重用性的方案。

VBX使用DLLs的固化名称。

COM使用接口和IUnknown。

.NET框架使用微软的中间语言(MSIL)层和公共语言运行时(CLR)来提供统一的粘合。

因此,控件是组件的一个主要样本(并且历史上曾驱动着组件的开发),控件又不仅仅是唯一的一种组件。

组件不需要显示任何信息或用户界面。

组件可能实现科学计算,收集性能数据。

规则1:必须实现IunknownIUnKnown接口的定义: IUnKnown是一个接口。

所有COM接口都继承IUnKnown。

IUnKnown的定义在WIN32 SDK中的UNKNWN头文件中。

深入:COM组件其实是一种特殊的类,遵循一个统一的标准,使到各个软件都可以通过某种方法访问这个类的函数和方法,也就可以做到组件通用. com就是统一的标准--通过接口来调用com组件.接口是你的com组件能被外界所感知的部分,实际就是一组方法(虚函数).IUnknown是所有接口的基础,他负责两项工作:IUnknown::QueryInterface负责得到该组件的其他接口的指针IUnknown::AddRef/Release负责管理该组件的生存期,但有人使用该组件时,保证该组件不会被意外删除;再没人使用该组件时,保证该组件被自动删除COM是组件对象模型,她是继面象对向之后的一种思想,而不是一种简单的实现。

通过IDL,很多具体的工作都可以实现她,如VC、VB等。

一句话:COM是接口(组件)的集合,接口是方法和属性的集合。

要了解COM,就得先了解IUnknown接口,IUnknown接口的C++形式的定义如下:interface IUnknown{virtual HRESULT _stdcall QueryInterface([in]REFIID iid,[out] void * * ppv)=0;virtual ULONG _stdcall AddRef(void)=0;virtual ULONG _stdcall Release(void)=0;}她实现了“接口查询”和“引用计数”,她是一个纯抽象基类。

所有COM定义的接口都必须从她继承。

实现的COM接口都应该遵守一定的原则:1。

查询IUnknown接口得到的必须一样。

2。

接口对称性。

3。

接口相互性。

4。

接口传递性。

5。

时间无关性。

要学好COM,一定得弄清楚COM的原理。

如果你学过C++或类似语言的话,这就比较好理解了。

在C++里,一个子类可以从父类继承,这样子类可以复用父类的函数和成员。

在COM里,一个接口和一个类很相似,一个接口可以从另一个接口继承,但是与C++的区别是,接口的继承只是继承说明,不继承实现。

微软规定了所有的标准接口必须从IUnknow n接口“继承”,以获得组件的两个基本能力:引用计数和查询接口。

一个Free的域名:,现在放了一位老外写的学习心得。

IUnknown接口是一个很普通的类或结构,你甚至可以自己写他,只是他有特殊的规定,必须有QueryInterface,AddRef,Relaese方法。

可以说他是所有C OM类的基类。

原始的IUnknown类是一个纯虚类,什么也不能干,用户必须重载并实现他的所有方法,之所以要用IUnknown虚拟类,只是为了接口统一。

也就是说所有COM类这三个方法的地址在函数虚拟表中是完全一样的。

COM中的接口和C++中的类有些是相同的,但是也有一些区别,在COM中有一些接口他里面有些函数是微软在出厂时就已经编写好了的,但是,他也提供了一些多余的接口,他只做了定义,但是没有实例化,你可以利用VC编写程序了将他实例化,就可以实现自己要求的功能了,但是你也要编写一个注册程序,至于如何编写要看你利用的接口而定了。

有一套教程,非常好,有生动的例子和循序渐进的说明。

最终的结论是,要在Windows平台上实现组件(可独立发布的程序单元)应该是COM现在这种形式。

URL为:/com/contents.asp比较适合于初学者,只需C++的基础,学起来也比较轻松。

学完之后,比看任何一本关于COM的书都要理解得好。

如果一个对象没有至少实现一个最小程度为IUnknown的接口,那它就不是Microsoft的组件对象模型(COM)。

接口设计规则接口必须直接或间接地从IUnknown继承。

接口必须有唯一的识别(IID)。

接口是不变的。

一旦分配和公布了IID,接口定义的任何因素都不能被改变。

接口的成员函数应该有HRESULT类型的返回值,使远端结构可报告远程过程调用(RPC)错误的情况。

接口成员函数的字符串参数应该是Unicode。

实现 IUnknown对象的同一性。

这要求对任何特定IUnknown接口的给定对象实例的QueryInterface调用返回相同的物理指针变量。

这导致了所谓的两个接口的QueryInterface(IID_IUnknown, ...)和结果的比较,以确定它们是否为同一对象(COM对象同一性)。

静态接口的设置。

任何经由QueryInterface来访问对象的接口的设置,必须是静态而不是动态的。

也就是说,假如一旦QueryInterface获得了一个给定的IID,那么它总是对相同的对象(除非有意想不到情况)调用,假如QueryInterface不能获得一个给定的IID,那么随后对相同IID的对象调用必定会失败。

对象完整性。

对于可处理的接口设置,必须有反身性,对称性和过渡性。

即给定代码如下:IA * pA = (some function returning an IA*);IB * pB = NULL;HRESULT hr;hr = pA->QueryInterface(IID_IB,&pB); // line 4Symmetric: pA->QueryInterface(IID_IA, ...) must succeed (a>>a) Reflexive: If, in line 4, pB was successfully obtained, thenpB->QueryInterface(IID_IA, ...)must succeed (a>>b, then b>>a);Transitive: If, in line 4, pB was successfully obtained, and we do IC * pC = NULL;hr = pB->QueryInterface(IID_IC, &pC); //Line 7and pC is successfully obtained in line 7,thenpA->QueryInterface(IID_IC, ...)must succeed (a>>b, and b>>c,then a>>c).最小参考服务大小。

我们需要实现AddRef来维护一个服务台,它足够大以便支持给定对象的所有接口的2 31 –1有出色的整体指示服务。

一个32-位的无符号整型数满足要求。

Release并不意味着失败。

假如客户想知道关于资源已被释放等情况,就必须在调用Release之前使用一些对象接口中的较高的语义。

内存管理规则接口指针的生命期管理总是通过建立在每个COM接口上的AddRef和Release方法来实现。

(参见下面的“引用计数规则”)下面的规则适用于接口成员函数的参数,包括不是“按值”传递的返回值。

对于参数来说,调用程序应分配和释放内存。

出口参数必须由被调用程序分配,由调用程序用标准的COM内存分配程序来释放。

出入参数首先由调用程序分配,必要时由被调用程序释放及重分配。

至于出口参数,调用程序有责任释放最终返回变量。

此时必须使用标准的COM内存分配程序。

假如函数返回调用失败的代码,则通常调用者没办法清除出口和入出口参数。

这导致了一些附加规则:错误返回时,出口参数必须可靠地被设置成可清除变量,它不能对调用程序有影响。

此外,所有的出口指针参数(包括调用分配,被调用委任结构)必须被明显地设为NULL。

最直接的方法是在函数说明项中设成NULL。

返回错误时,所有的入出口参数必须为被调用者所搁置(这样保持为调用程序初始化的值;若调用程序没有对它初始化,则它是个出口参数,不是入出口参数),或者被明显地设为出口错误返回情况。

参考计数规则:规则1:对于接口指针的每一个新的副本,AddRef必须被调用;Release在接口指针的每一个破坏时调用,除了子规则明显允许了其他情况。

以下规则对应于规则1的非例外情况。

规则1a:函数的入口出口参数。

调用程序必须AddRef实际参数,因为当出口变量存放在它之上时,将由被调程序释放。

规则1b:获取全局变量。

从全局变量的已存在的指针副本得到的接口指针的局部副本,必须被独立地引用计数。

因为存在局部副本时,被调函数会破坏全局副本。

规则1c:新指针合成所需资源不多。

函数使用内在知识合成接口指针,而不是从其他资源所得,此时必须对新指针做初始AddRef。

这样的重要例子有事例生成法则,Iunknown::QueryInterface的实现,等等。

规则1d:内部存储指针副本的返回。

相关文档
最新文档