组件式GIS与MapX——MapX核心技术剖析(二)

本文介绍了组件技术的发展及其在GIS领域的应用,重点讨论了COM、DCOM等技术原理及ActiveX控件如何促进软件开发效率提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二章 组件式GIS与MapX  

一、组件技术
  组件技术的兴起
  目前,在软件开发领域,一场新的革命正在悄悄兴起,这是由日趋成熟的组件技术引发的。几年以前,当微软公司首先使用OLE的时候,其初衷是为了增强软件的互操作性。然而在使用过程中,人们逐渐认识到这一技术背后的实质性内容和它在软件开发中所扮演的重要角色。组件技术以前所未有的方式提高了软件产业的生产效率,这一点已逐步成为软件开发人员的共识。传统的C/S结构、群件、中间件等大型软件系统的构成形式,都将在组件的基础上重新构造。
  组件技术使近二十年来兴起的面向对象技术进入到成熟的实用化阶段。在组件技术的概念模式下,软件系统可以被视为相互协同工作的对象集合,其中每个对象都会提供特定的服务,发出特定的消息,并且以标准形式公布出来,以便其他对象了解和调用。组件间的接口通过一种与平台无关的语言IDLInterfaceDefineLanguage)来定义,而且是二进制兼容的,使用者可以直接调用执行模块来获得对象提供的服务。早期的类库,提供的是原代码级的重用,只适用于比较小规模的开发形式;而组件则封装得更加彻底,更易于使用,并且不限于C++之类的语言,可以在各种开发语言和开发环境中使用。
  由于组件技术的出现,软件产业的形式也随之发生了很大的变化。大量组件生产商涌现出来,并推出各具特色的组件产品;软件集成商则利用适当的组件快速生产出用户需要的某些应用系统;大而全的通用产品逐步减少;很多相对较为专业,但用途广泛的软件,如GIS、语音识别系统等,都以组件的形式组装和扩散到一般的软件产品中。

  COMDCOM
  COM是组件式对象模型(Component Object Model)的英文缩写,是组件之间相互接口的规范,是OLE(Object Linking & Embedding)ActiveX共同的基础,其作用是使各种软件构件和应用软件能够用一种统一的标准方式进行交互。COM不是一种面向对象的语言,而是一种与源代码无关的二进制标准。COM所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之后,模块之间就可以通过称之为接口的机制来进行通信。COM标准增加了保障系统和组件完整的安全机制,并扩展到分布式环境。
  COM本质上仍然是客户/服务器模式。客户(通常是应用程序)请求创建COM对象并通过COM对象的接口操纵COM对象。服务器根据客户的请求创建并管理COM对象。客户和服务器这两种角色并不是绝对的。
  基于分布式环境下的COM被称作DCOM(Distribute COM,分布式构件对象模型)DCOMActiveX的基础,它实现了COM对象与远程计算机上的另一个对象之间直接进行交互。DCOM规范定义了分散对象创建和对象间通信的机制,规范本身并不依赖于任何特定的编程语言和操作系统,但目前该标准只在Microsoft Windows平台实现,这就意味着其它的操作系统平台(如UNIX)目前还不支持ActiveX
  DCOM的实现采用了DCOM库的形式,当DCOM客户对象需要DCOM服务器对象的服务时,DCOM库负责生成DCOM服务器对象并在客户对象和服务器对象之间建立初始连接,一旦返回服务器对象指针,DCOM库就不再参与客户对象与服务器对象之间的工作,两个对象之间可以自由地进行通信。
  DCOM接口实际上时逻辑上和语义上相关联的函数集。服务器对象通过DCOM接口为客户对象提供服务,客户对象不需了解服务器对象的内部数据表示。接口可以看成两个软件构件之间的一种协议,协议表明服务器对象为客户对象提供一种且仅此一种服务。接口采用全局唯一标识符(GUID)来保证服务的唯一性。通常的DCOM构件提供多种服务,那么服务器对象为每一种服务实现一个接口。当客户对象指针指向相应的服务器对象时,它就激活服务器对象接口的相应函数。具体过程是:客户对象通过DCOM对象必须支持的IunKnown接口获得其它接口的指针。客户对象也许并不知道服务器对象的每个接口,但这并不妨碍客户对象对服务器对象的使用,它只用它知道的接口。当客户对象用完服务器对象的服务时,它会通知服务器对象,服务器对象就释放它所占有的内存。 
  DCOM的好处是显而易见的。由于接口的定义和功能保持不变,DCOM构件开发者可以改变接口功能、为对象增加新功能、用更好的对象来代替原有对象,而建立在构件基础上的应用程序几乎不用修改,大大提高了代码的重用性。

  ActiveXActiveX控件
  (1)、 ActiveX
  ActiveX是微软公司的构件技术标准,实际上是对象嵌入与炼接(OLE)的新版本,使OLE接口加强了对数据和特性的管理,效率更高,而且更加便于进行Internet互操作。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序。
  ActiveX既包含服务器端技术,也包含客户端技术。其主要内容是:
  Ø ActiveX控制(ActiveX Control):用于向WEB页面、Microsoft Word等支持ActiveX 的容器(Container)中插入COM对象;
  Ø ActiveX文档(ActiveX Document):用于在Web Browser或者其它支持ActiveX的容器中浏览复合文档(非HTML文档),例如Microsoft Word文档、Microsoft Excel文档或者用户自定义的文档等;
  Ø ActiveX脚本描述(ActiveX Scripting):用于从客户端或者服务器端操纵ActiveX控制和Java程序、传递数据以及协调它们之间的操作等;
  Ø ActiveX服务器框架(ActiveX Server Framework):提供了一系列针对Web服务器应用程序设计各个方面的函数及其封装类,诸如服务器过滤器、HTML数据流控制等;
  ØInternet Explorer中内置Java虚拟机(Java Virtual Machine),从而使Java Applet能够在Internet Explorer上运行,并可以与ActiveX控制通过脚本描述语言进行通信。
  (2)、 ActiveX控件
  ActiveX控件是充分利用OLEActiveX技术的自定义控件,是基于与应用程序无关的思想而设计的,其目标是提供一种面向对象、与操作系统无关、与机器平台无关、可以在应用程序之间互相访问对象地机制。
  ActiveX控件是建立在COM标准上的独立的软件元件,提供给用户应用接口,发送相应的事件,开发者则可以截取这些事件,执行相应的功能。ActiveX控件开发端和使用端是完全独立的,可以用DelphiVB等各种语言来开发,又可以用于不同语言、不同开发平台、不同的系统环境中。ActiveX控件与VBX不同,VBX的标准是建立在16位段式结构的基础上,并不适用于32位环境。ActiveX控件可以在32位环境下提供与VBX相类似的功能。一个或多个ActiveX控件会保存在一个动态链接库中,但它是一种特殊的动态链接库,其扩展名不是DLL而是OCX
  从本质上讲,ActiveX控件是一个ActiveX服务器,它能提供所有的OLE功能和服务,包括可视化编辑、拖放和OLE Automation。与所有的ActiveX服务器一样,要使用ActiveX控件,必须先对ActiveX控件进行注册,应用程序通过注册后得到的类ID号找到控件的数据源进行访问。ActiveX控件可以由VBVCDelphi等开发工具生成OCX文件时自动进行注册,也可以手工注册,其实质都是通过运行应用程序Regsvr32.exe来实现。Regsvr32.exe一般在操作系统的系统文件目录下,如Windows 85/98/windows/system目录、Windows NT/winnt/system32目录。在Regsvr32.exe应用程序的命令行中输入ActiveX控件的网络共享路径。网络路径的形式为//机器名/共享目录名/文件名。假如,服务器名为mainserver,目录名为controls,控件名为MapX,则注册命令为:
      Regsvr32 //mainserver/controls/mapx.ocx
  (3)、 ActiveXActiveX控件的区别
  ActiveX技术是OLE技术在Internet上的重定义,而ActiveX控件则是OLE控件在Internet上的扩展。
  ActiveX不等同于ActiveX构件,从上面的介绍可知,ActiveX是一个很宽的技术家族的标识,而ActiveX构件只是那个家族的一个特定技术。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值