460 likes | 677 Views
RSGIS. 第九讲 组件 GIS 设计与开发. 2004 年 10 月. 版权所有 • 地理信息系统教研室. RSGIS. 讲 授 内 容. 组件原理与组件开发技术. GIS 开发技术概述. MapX 组件开发. MapObject 组件开发. 版权所有 • 地理信息系统教研室. RSGIS. 9.1 组件原理与组件开发技术. 软件及其开发技术的发展 组件及组件特点 组件开发技术的类型 组件原理 基于 VC 的组件实现 组件 GIS. 版权所有 • 地理信息系统教研室. RSGIS. 一、软件及其开发技术的发展. 1 、计算机科学的本质.
E N D
RSGIS 第九讲 组件GIS设计与开发 2004年10月 版权所有•地理信息系统教研室
RSGIS 讲 授 内 容 • 组件原理与组件开发技术 • GIS开发技术概述 • MapX组件开发 • MapObject组件开发 版权所有•地理信息系统教研室
RSGIS 9.1 组件原理与组件开发技术 软件及其开发技术的发展 组件及组件特点 组件开发技术的类型 组件原理 基于VC的组件实现 组件GIS 版权所有•地理信息系统教研室
RSGIS 一、软件及其开发技术的发展 1、计算机科学的本质 • 计算机的定义 • 冯-诺伊曼定义:define a computer as a device that accepts data, processes data, stores data, and produces output. • 指令流处理方式 • 本质: • 动态 —— 计算(软件) • 静态 —— 存储 版权所有•地理信息系统教研室
RSGIS 一、软件及其开发技术的发展 2、软件领域的发展与开发技术的发展 • 程序设计方法的发展 • 软件需求的变化 • 软件环境的变化 • 软件开发模式的变化 版权所有•地理信息系统教研室
RSGIS • 软件需求的发展 计算 实用 管理(MIS) 分布式系统(Web) 版权所有•地理信息系统教研室
RSGIS • 软件环境的变化 单任务 文字界面 单线程 多任务 图形界面 多线程 平台相关 单机(本地) 单一语言 跨平台 网络(分布式) 多种语言 版权所有•地理信息系统教研室
RSGIS • 软件设计方法的发展 功能分解法 —— 计算任务 结构化程序设计 —— 以数据为中心 面向对象程序设计 —— 以对象为中心 组件程序设计 —— 以组件为中心 综 合 使 用 版权所有•地理信息系统教研室
RSGIS • 软件开发模式的变化 OS + Compiler + Editor 机器码 高级语言 和脚本代码 OS + Compilers + IDEs + Libraries + Wizards + Components + other inforstructures + 经验 版权所有•地理信息系统教研室
RSGIS 一、软件及其开发技术的发展 3、软件发展与组件技术 (1)软件发展面临的问题 • 软件的复杂度增加:代码开发管理 • 软件升级和更新:牵一而发动全身? • 分布式软件的发布和配置:用户需要培训,程序员和设计人员更需要 • 依赖于全才开发人员:软件层次划分 • 软件的可扩展性:用户可定制、脚本支持 • 与标准接轨:如Web ——〉B/S 版权所有•地理信息系统教研室
RSGIS 一、软件及其开发技术的发展 3、软件发展与组件技术 (2)现实中实际项目和工作的要求 现实:软件工程中的合作越来越普遍 • 需要利用别人的资源 • 需要以资源的方式提供 • 同一项目组的合作 • 需要以部分功能的方式提供软件 版权所有•地理信息系统教研室
RSGIS 一、软件及其开发技术的发展 3、软件发展与组件技术 (3)对象技术已经成为处理的通用模型 • 用一种新的思路来看待问题 • 软件技术多年的发展证明了OO符合软件的规律 • 对象技术的发展需要开发工具和开发语言的支持 • 三大特性:封装性、继承性、多态性 • 两种思想 • Object-Based • Object-Oriented 版权所有•地理信息系统教研室
RSGIS • Object-Based Programming (MFC) • class实现数据封装 • 对象 • 构造函数与析构函数 • 访问控制、友元 • 嵌套类 • 类中成员初始化 • 虚拟函数 • 类中运算符重载 • 类模板 class Stack { private : T pool[maxNum]; int sp; public: Stack(); void Push(T x); T Pop(); BOOL IsEmpty() const; BOOL IsFull() const; }; 版权所有•地理信息系统教研室
RSGIS • Object--Oriented Programming CShape CPoint CLine CCircle CArc CText • 多态性是面向对象的一个支柱 • 允许程序在实施对象的操作时,允许对象按不同的方式完成不同类型对象的操作;不同类型对象有自己实现操作的方法。 版权所有•地理信息系统教研室
RSGIS 一、软件及其开发技术的发展 3、软件发展与组件技术 (4)组件技术已成为对象技术实现的最佳工具 • 组件技术适合于现代的软件环境 • 软件更新快、规模大、强调协作等 • 组件的概念、软件IC • 组件的可独立发布性要求“接口与实现分离” • 组件infrastructure,组件体系 • COM、CORBA(和Java) • 中间件(middleware)市场 版权所有•地理信息系统教研室
RSGIS 二、组件技术及其特点 1、基本概念 (1)类、对象 • 类是定义,它封装了状态和操作 • 对象是实例,它反映了具体的事物 • 对象由类来定义 • 一个对象可以与多个具有继承关系的类相联系 版权所有•地理信息系统教研室
RSGIS 二、组件技术及其特点 1、基本概念 (2)组件 • 定义:可独立发布的二进制单元 • 有的地方称作“package” • 容易混淆: • 服务器(server)、对象 • 例如: • COM组件、Java Applet 版权所有•地理信息系统教研室
RSGIS 二、组件技术及其特点 1、基本概念 (3)Reuse • 软件设计的目标 • 能反复使用 • 不同形式的重用:跨平台、跨操作系统 • 例如: • 类库(动态、静态连接库)、中间件 版权所有•地理信息系统教研室
RSGIS 二、组件技术及其特点 1、基本概念 (4)接口与实现 • Interface and implementation • 接口是对象或者组件的通信协议 • 实现是对象或者组件的内部细节 • 客户只关心接口 版权所有•地理信息系统教研室
RSGIS 二、组件技术及其特点 1、基本概念 (5)去耦 • Decouple • 尽可能地消除软件之间或者软件的不同部分之间的联系 • 是软件设计的重要手段,也是目标 版权所有•地理信息系统教研室
RSGIS 二、组件技术及其特点 2、特点 • 关键:接口设计 • 接口不变性 • 接口可扩展性 • 内部独立设计、独立开发 • 独立发布、独立测试 • 语言无关:规范和实现都是语言无关的 • 进程透明 ——〉位置透明 • 可重用性 • 多线程特性 • 可扩展性 版权所有•地理信息系统教研室
RSGIS 二、组件技术及其特点 3、优势 • 部分升级 • ——补丁 • ——缩短软件的更新周期 • 增加了异构软件的可能 • 标准接口、标准规范、标准协议 • 动态组合,提高软件生产力 • 符合现代软件的发展要求 版权所有•地理信息系统教研室
RSGIS 三、组件开发技术的类型 1、三个COM的基本概念 • COM组件 • 可独立发布的二进制组件 • 在Windows平台上为DLL或者EXE • COM对象 • 通过COM接口提供服务 • 符合OO中对象的基本概念 • COM接口 • 客户与对象之间的协议,对象实现COM接口,客户使用COM接口 版权所有•地理信息系统教研室
RSGIS 三、组件开发技术的类型 2、组件技术的类型 • 如何设计与开发组件的技术(做组件) • 基于组件的二次开发技术(用组件) 版权所有•地理信息系统教研室
RSGIS 三、组件开发技术的类型 • 如何设计与开发组件的技术(做组件) • 静态连接库 • 动态连接库 • ATL • COM及COM+ 版权所有•地理信息系统教研室
RSGIS 三、组件开发技术的类型 • 基于组件的二次开发技术(用组件) 版权所有•地理信息系统教研室
RSGIS 四、组件技术原理 COM包容模型 版权所有•地理信息系统教研室
RSGIS 四、组件技术原理 COM聚合模型 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 1、静态连接库的开发 • 静态连接库提供了函数的完整的目标代码,如果程序调用静态连接库中的函数,则在进行连接时连接程序将静态连接库中所包含的该函数的代码拷贝至运行文件中。 (1)如何做静态连接库 • 创建静态连接库工程 • 创建库函数及输出函数 #ifndef _MYLIB_H #define _MYLIB_H #endif 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 (2)使用静态连接库 • 将静态连接库文件(*.lib)和头文件复制至使用工程 • 在使用工程中包含头文件和库文件 • 直接调用函数 (3)静态连接库的调试 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 2、动态连接库的开发 • 动态连接库是一个可执行模块,其包含的函数可以由Windows应用程序调用以执行一些功能。在程序连接动态连接库中的函数时,连接程序并不将包含在动态连接库中的函数的目标代码拷贝至运行文件,而只是简单地记录了函数的位置信息,程序在执行时,即可找到该函数的目标代码。因为只是在执行时才得到真正的连接,因此称为动态连接。 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 (1)创建动态连接库 • 使用MFC创建动态连接库工程 • 创建库函数及输出函数 • 创建DEF文件 入口 //DEF 文件 LIBRARY DLLLIB EXPORTS TestDllLib 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 (2)使用动态连接库 • 将库文件(*.lib,*.dll)和头文件复制至使用工程 • 在使用工程中包含头文件和库文件 • 直接调用函数 (3)动态连接库的调试 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 3、微软的扩展 DLL 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 4、输出类 AFX_CLASS_EXPORT 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 5、ActiveX组件开发 ActiveX是在M$与JAVA抗争时产生的一个新名词(1996年3月),ActiveX技术的前身是OLE技术是M$为了适应Internet的发展对OLE进行的扩展(当时的含义是“Activate the Internet”),当时只是为了发展一种小型的可从网络上快速下载的可重用组件。 现在的ActiveX控件等价与以前的OLE控件或OCX,一个典型的控件包括设计时和运行时的用户界面,唯一的IDispatch接口定义了控件的属性和方法,唯一的IConnectionPoint接口定义控件可引发的事件。一个控件可以在容器中运行,所以从运行的角度看它类似与一个DLL。由于在IE中添加了对控件的支持,所以你可以在WEB页面中通过VBScript对控件进行操纵。 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 ActiveX组件开发 图像显示控件 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 ActiveX组件开发 图像显示控件 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 ActiveX组件开发 图像显示控件 添加COM对象 版权所有•地理信息系统教研室
RSGIS 五、基于VC的组件实现 6、ATL组件开发 ATL可以作为一个完整的控件开发框架,它的主要目标是提供方便的开发手段和生成更小的目标文件。由于ATL可以脱离开MFC所以它的执行速度和加载速度都比MFC开发的控件快。当然你也可以在ATL中使用MFC,但这样就失去了ATL的优势,因为利用MFC开发控件在目前来讲还是要比ATL方便和快捷。由于在ATL中不使用MFC所以所有的的功能调用都是通过WIN32 API函数和C运行库函数来完成。 版权所有•地理信息系统教研室
RSGIS 6、ATL组件开发 • 封装了一些数据类型 • CComBSTR、CComVariant、CComPtr,等 • 实现COM接口和COM对象 • 接口映射表、对象映射表,等 • 窗口的支持 • CWindow、CWindowImpl、CDialogImpl,等 • 其他COM特征的支持 • 永久性支持 • 连接点支持 • 集合对象和枚举器对象 • ActiveX control and container • 等 版权所有•地理信息系统教研室
RSGIS 6、ATL组件开发 • CComBSTR • 封装了BSTR类型 • 提供了大量便利的字符串操作 • 构造函数 • 各种操作符以及一般的字符串操作 • 对于流(stream)的支持 • CComVARIANT • CComPTR 版权所有•地理信息系统教研室
RSGIS 6、ATL组件开发 通过 ATL Object Wizard创建对象 版权所有•地理信息系统教研室
RSGIS 6、ATL组件开发 通过 ATL Object Wizard设置对象名字 版权所有•地理信息系统教研室
RSGIS 6、ATL组件开发 通过 ATL Object Wizard设置对象属性 版权所有•地理信息系统教研室
RSGIS 六、组件GIS介绍 版权所有•地理信息系统教研室