全面深入学习OLE技术
引言(问题的提出)
1.如何将同步软件的联系人/日历/任务/邮件等信息导入到微软的OutLook软件中
为了解决此问题,就需要用到微软的OLE技术。
涉及相关技术有:OLE,OLE Automation,ActiveX,COM等技术。本文企图就这些技术讲解其背景,其历史,其发展变革,其相互关系。
一.OLE技术是什么?
OLE是Object Link Embeded此三个单词的缩写。对象的链接和嵌入
二.OLE技术出现的历史背景:
为了使得那些没有太多专业知识的用户能够很容易地协调多个应用程序完成混合文档的建立,OLE技术正是提供了建立混合文档的技术手段(资深Windows 3.X 用户可能记得当初在Word6.0中插入一个图形的新奇和喜悦)。
三.OLE技术的演变和历史
1.OLE1.0规范
1991年发布OLE1.0规范,其主要解决多个应用程序之间的通信和消息传递问题
2.OLE2.0规范
1993年制定OLE2.0规范,完善并增强了以下各方面的性能:
1.OLE自动化:一个程序有计划地控制另一个程序的能力;
2.OLE控件:小型的组件程序,可嵌入到另外的程序,提供自己的专有功能;
3.OLE文档:完善了早期的混合文档功能,不仅支持简单链接和嵌入,还支持在位激活、拖放等功能。
OLE2.0是与WINDOWS 3.1一起推出的,它是第一个真正的COM技术,而OLE1.0还不具备COM的各项特性—OLE1.0使用的是另一种技术体系。
OLE2.0中产生了一种新的唯一的数据格式,称为复合文件。这种文件中能够包括所有OLE支持的应用程序的相关信息,并在任一工作的应用程序中支持编辑、更新、打印等功能。
3.OLE自动化技术
但OLE2.0仍然存在一些局限性,最为明显的问题是:
任何时候要对一个嵌入的数据进行编辑都得重新打开一个窗口。
针对这一点的改进,生成了OLE的一个新版本,称为OLE自动化。该技术除了允许在调用数据的应用程序内部进行编辑(称为内部编辑),还在OLE2.0的基础上加入了其它两项与COM技术相关的改进:
一.是提供了非C++开发程序(如VB程序)接入COM功能的能力;
二.是支持存在于复合文件以外的基于COM技术的部件的创建;
Windows 3.11全面支持自动化技术。
4.OLE96规范
1996年制定OLE96规范,该规范有如下变化:
1.扩展了OLE控件的能力;
2.更易于在网络环境中使用
3.还考虑命名混淆的问题;
此时,给OLE控件贴上一个标签——ActiveX控件,OLE文档也相应称为ActiveX 文档。
总之,为了满足Internet战略,微软把OLE换成了ActiveX,企图使人们重新看待新的OLE——ActiveX,把它看做网络上的解决软件组件问题的标准。
四.OLE应用及相关名词
1.容器:
容器是一个客户程序,它可以申请并使用其它COM组件,通过组件提供的接口为其它程序实现一些功能;
2.服务器:
服务器通过特定的接口将自己完成的一些功能,提供给使用自己的应用程序(例如画笔程序是一个文档服务器,它提供创建并编辑BMP 图像的功能)。当打开Word,选择【插入】菜单下的【对象...】项,您可以看到在您的系统中存在哪些文档服务器,此时的Word以文档容器的身份出现。
3.在位激活:
当您双击插入的对象后发现Word的菜单有些改变,变成了文档服务器程序的菜单,可以在当前的环境下编辑对象,这称为在位激活。
4.自动化:
和OLE文档技术类似,允许一个应用程序通过编程控制另一个应用程序“自愿”提供的功能的技术称为OLE自动化。自身暴露一些可编程对象给其它程序的应用程序叫自动化服务器,利用并操纵自动化服务器提供的功能的应用程序叫自动化客户或自动化控制器,有些程序既是自动化服务器又是自动化控制器。例如在VC中我们可以通过编程创建并编辑一个Excel工作表(很多参考书都以此为例),这里的VC就是自动化控制器,而创建工作表的Excel程序则是自动化服务器,但在Excel中我们又可以利用VBA语言创建PowerPoint的幻灯片,它又成了自动化控制器。利用OLE自动化技术可以实现软件的一次开发和多次利用,这也是集成组件的关键技术。无论是操作系统还是应用软件,微软都有意识朝着这个方向发展,例如从Windows95开始,包括WindowsNT4.0以后的操作系统的Shell就实现了OLE自动化技术。
五.OLE技术与COM技术是什么关系?
微软在OLE2.0技术的基础上建立了一个称为COM(ComponentObjectModel即组件对象模式)的新的技术规范。
所以说,现在的OLE技术是基于COM技术。
可以得出如下几点:
1.先有OLE技术,后有COM技术;
2.微软是基于OLE技术,建立COM技术规范的,或者说是对OLE技术的扩展;
3.OLE技术属于COM技术的一部分,或者一个子集;
4.现在的OLE技术是基于COM技术基础的;
5.微软的许多技术,如OLE、ActiveX、以及DirectX等都是基于COM技术而建立起来的;
六.ActiveX介绍
ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM:Component Object Model)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个组件就是ActiveX近控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和JAVA applet功能类似。
如果您使用的是Windows操作系统,您或许会注意到一些以OCX结尾的文件。OCX代表“对象链接与嵌入控件”(OLE),这个技术是Microsoft提出的程序技术,用于处理桌面文件的混合使用。现在COM的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。
组件的一大优点就是可以被大多数应用程序再使用(这些应用程序称为组件容器)。一个COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual Basic或PowerBuilder,甚至一些技术性语言如VBScript。
目前,ActiveX控件在Windows 95/NT和Macintosh中运行,Microsoft还准备支持UNIX的ActiveX控件。
1.概要
ActiveX 是一个打开的集成平台,为开发人员、 用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法。 使用 ActiveX, 可轻松方便的在 Web页中插入 多媒体效果、 交互式对象、以及复杂程序,创建用户体验相当的高质量多媒体 CD-ROM 。
根据微软权威的软件开发指南MSDN(Microsoft Developer Network)的定义,ActiveX插件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。
2.ActiveX的内容
2.1ActiveX 控件
以前称为 OLE 控件或 OCX 控件. 是组件 (或对象) 打包,别人编程功能. 以便您可以重用 Web页或其他程序中插入。 例如, 随 InternetExplorer 一起提供 ActiveX 控件可用于增强 Web页具有复杂格式功能和动画。
ActiveX 控件结合了Java 程序和 Netscape 插件优点,还可以用许多编程语言, 包括所有 Microsoft 编程和在数据库语言编写程序中使用 ActiveX 控件。
2.2ActiveX 文档
用一个 ActiveX - 识别 Web 浏览器如 InternetExplorer, 浏览时 ActiveX 文档使您能够使用自己的工具栏和菜单可打开程序。 这意味着您可以通过使用 ActiveX - 识别 Web 浏览器打开非HTML 文件, 如 MicrosoftExcel 或 MicrosoftWord 文件。
2.3ActiveX 脚本
ActiveX 脚本支持最常用脚本语言, 包括 Microsoft VisualBasic 脚本和 JavaScript。 ActiveX 脚本可用于集成行为若干 ActiveX 控件或 Java 程序从 Web 浏览器或服务器, 扩展其功能。
3.ActiveX的特点
在因特网上,ActiveX插件软件的特点是:一般软件需要用户单独下载然后执行安装,而ActiveX插件是当用户浏览到特定的网页时,IE浏览器即可自动下载并提示用户安装。 ActiveX插件安装的一个前提是必须经过用户的同意及确认。
ActiveX插件技术是国际上通用的基于Windows平台的软件技术,除了网络实名插件之外,许多软件均采用此种方式开发,例如Flash动画播放插件、Microsoft MediaPlayer插件、CNNIC通用网址插件等。
4.相关内容
1.浏览器如何保证ActiveX插件的安全性?
当通过Internet发行软件时,软件的安全性是一个非常引人注意的问题,IE浏览器通过以下的方式来保证ActiveX插件的安全:
ActiveX使用了两个补充性的策略:安全级别和证明,来追求进一步的软件安全性;
Microsoft提供了一套工具,可以用它来增加ActiveX对象的安全性;
通过Microsoft的验证代码工具,可以对ActiveX控件进行签名,这告诉用户你的确是控件的作者而且没有他人篡改过这个控件;
为了使用验证代码工具对组件进行签名,必须从证书授权机构获得一个数字证书;证书包含表明特定软件程序是正版的信息,这确保了其他程序不能再使用原程序的标识。证书还记录了颁发日期。当您试图下载软件时,Internet Explorer 会验证证书中的信息,以及当前日期是否在证书的截止日期之前。如果在下载时该信息不是最新的和有效的,Internet Explorer 将显示一个警告;
在IE默认的安全级别中,ActiveX控件安装之前,用户可以根据自己对软件发行商和软件本身的信任程度,选择决定是否继续安装和运行此软件。
在最新的IE 7中,安全性有进一步的提高。
2.关于三个概念:ActiveX、OLE和COM
熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多人还是比较模糊的。 在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。
组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的学术定义。它们的主要区别是:
1)组件可以在另一个称为容器(有时也称为承载者或宿主)的应用程序中使用,也可以作为独立过程使用;
2)组件可以由一个类构成,也可以由多个类组成,或者是一个完整的应用程序;
3)组件为模块重用,而对象为代码重用。
现在,比较流行的组件模型有COM(Component Object Model,对象组件模型)/DCOM(Distributed COM,分布式对象组件模型)和CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)。到这里,已经出现了与本文相关的主题COM,而CORBA与本文无关,就不作介绍。之所以从组件与对象的区别说起,是想让大家明确COM和CORBA是处在整个体系结构的最底层,如果暂时对此还不能理解,不妨继续往下看,最后在回过头看一看就自然明白了。
现在开始阐述ActiveX、OLE和COM的关系。首先,让大家有一个总体的概念,从时间的角度讲,OLE是最早出现的,然后是COM和 ActiveX;从体系结构角度讲,OLE和ActiveX是建立在COM之上的,所以COM是基础;单从名称角度讲,OLE、ActiveX是两个商标名称,而COM则是一个纯技术名词,这也是大家更多的听说ActiveX和OLE的原因。既然OLE是最早出现的,那么就从OLE说起,自从 Windows操作系统流行以来,“剪贴板”(Clipboard)首先解决了不同程序间的通信问题(由剪贴板作为数据交换中心,进行复制、粘贴的操作),但是剪贴板传递的都是“死”数据,应用程序开发者得自行编写、解析数据格式的代码,于是动态数据交换(Dynamic Data Exchange,DDE)的通信协定应运而生,它可以让应用程序之间自动获取彼此的最新数据,但是,解决彼此之间的“数据格式”转换仍然是程序员沉重的负担。对象的链接与嵌入(Object Linking and Embedded,OLE)的诞生把原来应用程序的数据交换提高到“对象交换”,这样程序间不但获得数据也同样获得彼此的应用程序对象,并且可以直接使用彼此的数据内容,其实OLE是Microsoft的复合文档技术,它的最初版本只是瞄准复合文档,但在后续版本OLE2中,导入了COM。由此可见,COM是应OLE的需求而诞生的,所以虽然COM是OLE的基础,但OLE的产生却在COM之前。COM的基本出发点是,让某个软件通过一个通用的机构为另一个软件提供服务。COM是应OLE的需求而诞生,但它的第一个使用者却是OLE2,所以COM与复合文档间并没有多大的关系,实际上,后来COM 就作为与复合文档完全无关的技术,开始被广泛应用。这样一来,Microsoft就开始“染指”通用平台技术。但是COM并不是产品,它需要一个商标名称。而那时Microsoft的市场专家们已经选用了OLE作为商标名称,所以使用COM技术的都开始贴上了OLE的标签。虽然这些技术中的绝大多数与复合文档没有关系。Microsoft的这一做法让人产生这样一个误解OLE是仅指复合文档呢?还是不单单指复合文档?其实OLE是COM的商标名称,自然不仅仅指复合文档。但Microsoft自己恐怕无法解释清楚,这要花费相当的精力和时间。于是,随着Internet的发展,在1996年春,Microsoft改变了主意,选择ActiveX作为新的商标名称。ActiveX是指宽松定义的、基于COM的技术集合,而OLE仍然仅指复合文档。当然,ActiveX最核心的技术还是COM。ActiveX和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而 ActiveX则以提供进一步的网络应用与用户交互为主。
到这里,大家应该对ActiveX、OLE和COM三者的关系有了一个比较明确的认识,COM才是最根本的核心技术,所以下面的重点 COM。让对象模型完全独立于编程语言,这是一个非常新奇的思想。这一点从C++和Java的对象概念上,我们就能有所了解。但所谓COM对象究竟是什么呢?为了便于理解,可以把COM看作是某种(软件)打包技术,即把它看作是软件的不同部分,按照一定的面向对象的形式,组合成可以交互的过程和以组支持库。COM对象可以用C++、Java和VB等任意一种语言编写,并可以用DLL或作为不同过程工作的执行文件的形式来实现。使用COM对象的浏览器,无需关心对象是用什么语言写的,也无须关心它是以DLL还是以另外的过程来执行的。从浏览器端看,无任何区别。这样一个通用的处理技巧非常有用。例如,由用户协调运行的两个应用,可以将它们的共同作业部分作为COM对象间的交互来实现(当然,现在的OLE复合文档也能做到)。为在浏览器中执行从Web服务器下载的代码,浏览器可把它看作是COM对象,也就是说,COM技术也是一种打包可下载代码的标准方法(ActiveX控件就是执行这种功能的)。甚至连应用与本机OS进行交互的方法也可以用COM来指定,例如在Windows和Windows NT中用的是新API,多数是作为COM对象来定义的。
可见,COM虽然起源于复合文档,但却可有效地适用于许多软件问题,它毕竟是处在底层的基础技术。用一句话来说,COM是独立于语言的组件体系结构,可以让组件间相互通信。随着计算机网络的发展,COM进一步发展为分布式组件对象模型,这就是DCOM,它类似于CORBA的ORB,本文对此将不再做进一步的阐述。通过上面的讲述相信大家一定对ActiveX、OLE和COM/DCOM的关系有了一个清楚的了解。
规避因恶意ActiveX控件带来的风险
ActiveX控件有较强的功能,但也存在被人利用的隐患,网页中的恶意代码往往就是利用这些控件编写的小程序,只要打开网页就会被运行。所以要避免恶意网页的攻击只有禁止这些恶意代码的运行。
IE对此提供了多种选择,具体设置步骤是:“工具”→“Internet选项”→“安全”→“自定义级别”,建议您将ActiveX控件与相关选项禁用,谨慎些总没有错!
另外,在IE的安全性设定中我们只能设定Internet、本地Intranet、受信任的站点、受限制的站点。不过,微软在这里隐藏了“我的电脑”的安全性设定,通过修改注册表把该选项打开,可以使我们在对待ActiveX控件s时有更多的选择,并对本地电脑安全产生更大的影响。
下面是具体的方法:打开“开始”菜单中的“运行”,在弹出的“运行”对话框中输入Regedit.exe,打开注册表编辑器,点击前面的“ ”号顺次展开到:HKEY_CURRE-NT_USER/Software/Microsoft/Windows/CurrentVersion/InternetSettings/Zones/0,在右边窗口中找到DWORD值“Flags”,默认键值为十六进制的21(十进制33),双击“Flags”,在弹出的对话框中将它的键值改为“1”即可,关闭注册表编辑器。无需重新启动电脑,重新打开IE,再次点击“工具→Internet选项→安全”标签,你就会看到多了一个“我的电脑”图标,在这里你可以设定它的安全等级。将它的安全等级设定高些,这样的防范更严密。
七.ActiveX组件的分类:
1.自动化服务器:
可以由其他应用程序编程驱动的组件。
自动化服务器至少包括一个,也许是多个供其他应用程序生成和连接的基于IDispatch的接口。自动化服务器可以含有也可以没有用户界面(UI),这取决于服务器的特性和功能。
2.自动化控制器:
那些使用和操纵自动化服务器的应用程序。
3.控件:
ActiveX控件等价于以前的OLE控件或OCX。
一个典型的控件包括设计时和运行时的用户界面,唯一的IDispatch接口定义控件的方法和属性,唯一的IConnectionPoint接口用于控件可引发的事件。
4.文档:
ActiveX文档,即以前所说的DocObject,表示一种不仅仅是简单控件或自动化服务器的对象。
ActiveX文档在结构上是对OLE链接和模型的扩展,并对其所在的容器具有更多控制权。
一个最显著的变化是菜单的显示方式。一个典型的OLE文档的菜单会与容器菜单合并成一个新的集合,而ActiveX文档将替换整个菜单系统,只表现出文档的特性而不是文档与容器共同的特性。
5.容器:
ActiveX容器是一个可以作为自动化服务器、控件和文档宿主的应用程序。
八.ATL是什么?
ATL是ActiveX Template Library,即“ActiveX模板库”。用来开发ActiveX组件的。
九.COM是什么?
COM(Component Object Model,组件式对象模型)
1.COM不是一种面向对象的语言;
2.COM是一种与源代码无关的二进制标准;
3.是组件之间相互接口的规范;
4.是OLE和ActiveX的共同基础;
5. 其作用是使各软件组件和应用软件能够用一种统一的标准方式进行交互;
COM所建立的是一个软件模块与另一个软件模块之间的链接,而当这种链接建立之后,模块间就可以通过称之为“接口”的机制来进行通信。COM标准增加了保障系统和组件完整的安全机制,并扩展到分布式环境。
十.DCOM是什么
DCOM是Microsoft的分布式COM技术,扩展了组件对象模型(COM)技术,使其能够支持在局域网、广域网甚至Internet上不同计算机的对象之间的通讯。使用DCOM,你的应用程序就可以在位置上达到分布性,从而满足你的客户和应用的需求。
因为DCOM是世界上领先的组件技术COM的无缝扩展,所以你可以将你现在对基于COM的应用、组件、工具以及知识转移到标准化的分布式计算领域中来。当你在做分布式计算时,DCOM处理网络协议的低层次的细节问题,从而使你能够集中精力解决用户所要求的问题。
DCOM(分布式组件对象模型,分布式组件对象模式)是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。DCOM基于组件对象模型(COM),COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口(运行在Windows95或者其后的版本上)。
Microsoft Distributed Component Object Model(DCOM)是Component Object Model(COM)的扩展,它支持不同的两台机器上的组件间的通信,而且不论它们是运行在局域网、广域网、还是Internet上。借助DCOM你的应用程序将能够任意进行空间分布。
由于DCOM是COM这个组件技术的无缝升级,所以你能够从你现有的有关COM的知识中获益,你的以前在COM中开发的应用程序、组件、工具都可以移入分布式的环境中。DCOM将为你屏蔽底层网络协议的细节,你只需要集中精力于你的应用。
例如,你可以为一个网站创建应该页面,其中包括了一段能够在网络中另一台更加专业的服务器电脑上处理(在将它们发送到发出请求的用户之前)的脚本或者程序。使用DCOM接口,网络服务器站点程序(现在以客户端对象方式发出动作)就能够将一个远程程序调用(RPC)发送到一个专门的服务器对象,它可以通过必要的处理,并给站点返回一个结果。结果将发送到网页浏览器上。
DCOM还可以工作在位于企业内部或者除了公共因特网之外的其他网络中。它使用TC/IP和超文本传输协议。DCOM是作为Windows操作系统中的一部分集成的。DCOM将很快在所有的主流UNIX平台和IBM的大型服务器产品中出现。 DCOM替代了OLE远程自动控制。
在提供一系列分布式范围方面,DCOM通常与通用对象请求代理体系结构(CORBA)相提并论。DCOM是微软给程序和数据对象传输的网络范围的环境。CORBA则是在对象管理组织(OMG)的帮助下,由信息技术行业的其他商家提供赞助的。
基于分布式环境下的COM被称为DCOM(Distributed COM,分布式组件对象模型)。DCOM是ActiveX的基础,它实现了COM对象与远程计算机上的另一个对象之间直接进行交互。DCOM规范定义了分散对象创建和对象间通信机制,规范本身不依赖于任何特定编程语言和操作系统,但目前该标准只在Microsoft Windows平台实现。
十一.如何启用DCOM
1.方法一
打开“分布式COM 配置属性”对话框。
在“默认属性”选项卡上,选择“启用该计算机上的分布式 COM”复选框。
2.方法二
单击“开始”,单击“运行”,然后键入“ dcomcnfg”,也可以打开“分布式 COM 配置属性”对话框。
启用 DCOM 后,该机既可以用 DCOM 发送请求,也可以在同时设置了“默认安全性”选项卡上的“启用远程连接”的情况下,接收其他计算机的请求。
十二.MTS是什么?
MTS Microsoft Transaction Server , 用于在程序级进行事务操作,使用事务与应用紧密结合起来.
微软事务服务器(MTS)是Windows NT的一个基于组件的事务处理系统,它合并了事务处理监视器和对象请求代理的特性。MTS定义了一种编程模型,并且提供运行环境以及一个图形化的管理工具以管理企业应用程序。微软消息队列服务器通过接收和发送消息同其他应用程序通信。
十三.COM+是什么?
COM+并不是COM的简单升级,COM+的底层结构仍然以COM为基础,它几乎包容了COM的所有内容,COM+综合了COM、DCOM和MTS这些技术要素,它把COM组件软件提升到应用层而不再是底层的软件结构,它通过操作系统的各种支持,使组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统,因此,COM+与操作系统的结合更加紧密。
COM+不再局限于COM的组件技术,它更加注重于分布式网络应用的设计和实现。
COM+继承了COM几乎全部的优势,同时又避免了COM实现方面的一些不足,把COM、DCOM和MTS的编程模型结合起来,继承了它们的绝大多数特性,在原有的特性上增加了新的功能。
十四.COM+的新增服务:
COM+不仅继承了COM的所有优点,而且还增加如下一些服务,比如
1. 队列服务;
2. 负载平衡;
3. 内存数据库;
4. 事件服务等;
5. 事件模型;
6. 对象库;
7. 队列组件;
8. 组件的管理;
9. 目录信息
队列服务对于分布式应用非常有意义,特别是在现在网络速度很慢的情况下,这种机制可以保证应用系统能够可靠地运行。在应用系统包含大量节点但服务器又繁忙的情况下,客户应用程序可以把它们的请求放到队列中,当服务器负载比较轻的时候再处理这些请求;
又如COM+提供了负载平衡服务,它可以实现动态负载平衡,而且COM+应用程序的负载平衡特性并不需要编写代码来支持,客户程序和组件程序都可以按通常的方式实现。获得负载平衡特性并不是用程序设计的方式来实现的,而是通过配置实现分布式应用程序的负载平衡,如上所讲的队列服务,其实也反映了一种负载平衡。
十五.COM+的主要特性:
(1) 真正的异步通讯。COM+底层提供了队列组件服务,这使客户和组件有可能在不同的时间点上协同工作,COM+应用无须增加代码就可以获得这样的特性。
(2) 事件服务。新的事件机制使事件源和事件接收方实现事件功能更加灵活,利用系统服务简化了事件模型,避免了COM可连接对象机制的琐碎细节。
(3) 可伸缩性。COM+的可伸缩性来源于多个方面,动态负载平衡以及内存数据库、对象池等系统服务都为COM+的可伸缩性提供了技术基础,COM+的可伸缩性原理上与多层结构的可伸缩特性一致。
(4) 可管理和可配置性。管理和配置是应用系统开发完成后的行为,在软件维护成本不断增加的今天,COM+应用将有助于软件厂商和用户减少这方面的投入。
(5) 易于开发。COM+应用开发的复杂性和难易程度将决定COM+的成功与否,虽然COM+开发模型比以前的COM组件开发更为简化,但真正提高开发效率仍需要借助于一些优秀的开发工具。
COM+标志着Microsoft的组件技术达到了一个新的高度,它不再局限于一台机器上的桌面系统,它把目标指向了更为广阔的企业内部网,甚至Internet国际互连网络。COM+与多层结构模型以及Windows操作系统为企业应用或Web应用提供了一套完整的解决方案。
十六.Windows DNA是什么
Windows DNA是Windows Distributed interNet Applications Architecture 的缩写,如果直译成中文,是 "Windows 分布式集成网络应用体系结构" 的意思
所谓“三层结构”(3 tiers)是指一种客户机/服务器体系结构。早期的客户机/服务器只有客户机和装有数据库的服务器两层,随着信息系统结构的复杂和规模的日益扩大,两层结构体系很快向三层结构的客户机/服务器体系演化,就是在客户端和数据库之间加上应用服务器。
Windows DNA简介
Microsoft推出Windows DNA 这一套体系结构是为了创建一个构造基于Microsoft Windows平台的应用程序的框架,而这套结构则能够将个人计算机和Internet 统一和集成起来。Windows DNA打开了一个能够同时充分发挥个人计算机和Internet的能力的新模式。
在最高的层次上,Windows DNA通过将核心服务高度集成到操作系统中,使计算机在内部网和公共网上都能够充分发挥协同工作的能力。这使我们的开发人员可以更容易地创建复杂的,能够支持大量用户的网络应用程序。更加重要的是,Windows DNA提供了一种基于开放式协议和公共接口的具有高度协作能力的框架,并允许客户对现存的系统扩充新的功能,如Web。这种开放的模型具有很强的扩展功能,第三方的厂家也可以创建他们的兼容的产品以扩展的这一结构。Windows DNA应用使用一套标准的基于Windows 的服务,可以满足各个层次最新的分布式应用程序的需求,如用户界面和导航,业务处理和存储等。
Windows DNA的核心是将Web和客户机/服务器的应用开发模型通过一套公共对象模型集成起来。Windows DNA使用一套公共服务集,如组件、动态 HTML、Web浏览器和服务器、脚本、事务处理、消息队列、安全性、目录、数据库和数据访问、系统管理以及用户界面等。这些服务在各个层次上以同一种方式开放给应用程序使用。
另外由于 Windows DNA是在W3C和IETF等制定的标准上构建的,所以它充分支持开放式的Web功能。
利用Windows DNA提供的优势,开发人员可以构建全新的应用程序,包括电子商务和其它个人之间及企业之间的通信应用,由于充分利用了标准网络服务和先进的基于组件的开发模式,开发人员可以比以往更快地开发出全新的应用。Windows DNA支持和旧有的计算机软硬件之间的集成和扩展,所以UNIX和一些大型机的系统在Windows DNA模式下仍然可以使用。
Windows DNA为网络应用提供了所有最基本的组件,所以开发人员可以把精力集中在产品的创新上,而无须关注底层结构和服务的构造。今天Windows DNA大部分的组件已被Microsoft的客户和合作伙伴广泛地利用了。在不远的日子里,随着Microsoft Windows NT 5.0操作系统和COM+(组件对象模型COM的增强版)的出现,将使Windows DNA的结构和组件更易于被开发人员创建和使用。
Windows DNA为应用程序带来了哪些变化
Windows DNA的应用程序和当今大多数的应用程序有着本质的区别。这是因为Windows DNA使开发人员可以充分利用Internet和传统基于LAN的客户机/服务器系统各自的优势,使应用程序更加易于创建且功能更加强大。
1.和Web结合:
Windows DNA充分利用了Internet的优势,通过Microsoft Internet Information Server, Windows DNA的应用可以提供用动态HTML语言创建的用户界面。这样就给出了一个简单的浏览器的界面,集中的维护和高效的软件发送模型可以为用户提供最新的软件。通过Microsoft Internet Explorer 4.0, Windows DNA提供了对各种客户端操作系统的广泛支持,包括Windows NT , Windows 95, Windows CE, Macintosh和UNIX。
2.易于管理:
通过Microsoft首创的零管理方案(Zero Administration),Windows DNA结构和它的组件都可以被集中地管理。这样网络管理员无须手工调整每个用户的PC就可以安装和更新应用程序。
3.动态:
Windows DNA可以通过COM+中新增加的侦听功能动态地改变它的配置和能力。所以如果一旦业务条件或者其它环境因素改变了,应用程序逻辑也会自动随之改变。
4.支持固定或移动用户:
差不多40%的个人计算机是所谓“膝上型计算机”,即意味着这些计算机是用于一个没有联网的环境中。所以我们的重要的任务之一就是充分考虑这些用户的需求。Windows DNA中包含了这样一种功能:当移动用户接入网络中时,智能地将数据和函数进行分区和存储。这样当用户离线时,仍可以使用一些特定的应用程序。
5. Internet 和Intranet的透明性:
由于Windows DNA将Internet和客户机/服务器工作模式集成起来,用户可以如同浏览Web一样地浏览应用程序。通过提供单一的集成化的结构将Intranet和Internet紧紧捆绑起来,Windows DNA降低了系统维护和人员培训的费用。
6.更进一步的集成:
Windows DNA结构不仅和网络紧密结合,而且和网络数据以及现存的应用程序都紧密联系。Windows DNA并没有构建一个独立的数据和应用的底层结构,而是将现存的系统进行扩展,使之能够共享数据和应用逻辑,并为它们创建可以在Web上使用的接口。
总而言之,Windows DNA将各种客户的各种系统集成起来,包括从基于页面的HTML应用程序到基于代码的Windows应用程序的用户界面,移动或是离线的用户,结构化的或是非结构化的存储,基于Web的或是基于客户机/服务器的应用程序。而且它还在充分发挥分布式计算资源的能力的同时,提供了集中管理的工具以降低系统部署和技术支持的开销。
Windows DNA是如何改变应用程序的开发工作的。
使用Windows DNA,开发人员可以用同样的底层结构和工具开发所有的应用,从最大的Fortune 500内部信息系统到Web TV的“频道向导”。他们可以选择最适合自己的开发风格和工具,从基于局域网的到基于Web的。由于Windows DNA提供了一套扩展的、标准的、可以共同工作的系统服务,IT专家将可以致力于开发业务的解决方案而不再充当系统集成工作者的角色。他们的公司,同样的,将可以致力于业务工作以提高市场竞争力而不是努力帮助雇员以使之掌握技术的使用。
造成这一变革的主要原因是:
1.内置的可扩展性。
Windows DNA可以用同一套应用程序逻辑和工具集支持一个用户或是几万个并发用户的应用程序。由于开发人员无须在构建扩展性和管理能力上花费时间和精力,他们可以构建更加丰富的应用程序。
2.基于组件的结构。
Windows DNA使用一种经过广泛测试的、交叉平台的组件主干——COM。所有Microsoft的工具、应用和系统产品都提供公开发布的基于COM的可扩展接口。COM是第三方厂家将其产品集成到Windows DNA中的主要方式。COM使各种解决方案由一块块可重复使用的软件组件构成,使开发人员能够快速地构建和测试应用程序。
3.众多的供应商。
开发人员可以从大量供应商所提供的组件、服务和工具中挑选出自己所需要的,使它们共同工作以创建Windows DNA的应用。
4.任意的编程语言。
Windows DNA支持来自各家厂商的多种编程语言,有Microsoft, Borland International Inc. 以及Sybase Inc. 等等。
5.互操作时一致的编程模型。
无论是基于主机或是UNIX的应用程序,甚至是来自Solaris平台的产品都可以通过COM为程序员所利用。
Windows DNA近观
Windows DNA由一组分布式的应用程序服务、分布式的底层服务和公共接口构成。它们包括:(表1)
服务
接口
相应的产品
应用程序服务:
Web服务器
HTML
Internet Information server
Web浏览器
HTML
Internet Explorer
脚本
VBScript, JScript
“Denali,” Dynamic HTML
事务处理服务
OLE Transactions
MTS
消息队列服务
“Falcon” API
MMQS
数据库
ODBC, OLE DB
Microsoft SQL Server
邮件和协作
MAPI, POP3
Outlook, Exchange Server
Java虚拟机
Java
Microsoft Java虚拟机
统一的数据访问
ADO, OLE DB, ODBC
多种
底层服务:
目录
ADSI
Active Directory, Windows NT Server
安全性
SSL
Windows NT Server, Internet Explorer
网络
TCP/IP,管道,Winsock等
Windows家族
远程文件和打印
CIFS, SMB
Windows家族
组件
COM, DCOM, ActiveX
Windows家族
这些应用服务、底层服务和公共接口在一个多层的框架中进行操作,而COM和其他的标准协议则作为各个应用层之间的粘合剂。
Windows DNA服务
工具
用户界面和导航
分布式的操作环境
COM
HTML/脚本编写
基本HTML
动态HTML
窗体
Native
管理
组件的创建
事务处理
目录
快速应用程序的开发(RAD)
Web
服务器
事务
处理
消息
队列
脚本
安全性
小组开发
文件系统和存储
网络
文件
系统
数据库
邮件
存储
其他
存储
基本服务
Windows DNA将多种重要的编程模式统一起来。通过使用脚本和组件,Windows DNA为开发人员提供了在各种编程模式之间进行切换,以最终实现其应用目标的简单途径。例如,一个HTML的开发人员可以将用Microsoft Visual Basic编程系统创建的脚本直接嵌入到一个页面中作为动态的调用。这个脚本然后又可以调用一个用Java编写的控件。这个控件再调用远程服务器上的一个C++的对象,以便和后台基于SQL的数据库进行数据交换。这一套系统中的每一层次都可以进一步集成,共享一套公共的安全性、目录和网络的服务。
这个HTML的开发人员无须了解这个远程对象是如何构造的,它又是如何与数据库交互的,就可以充分地利用这一功能构建一个Web页面。Windows DNA可以将一个应用程序的不同部分嵌在一起,方便地在其间交换数据和执行流程,即使这些部分是用不同的编程模式开发的。
Windows DNA展望
Microsoft将在三到五年中分三个阶段推出Windows DNA结构。第一步已在今天的Windows产品中有所体现,包括Windows NT Workstation 4.0和Windows NT Server 4.0, Internet Explorer 4.0, Internet Information Server, Microsoft Transaction Server, Microsoft Visual Studio开发系统和其他的微软产品。今天无数的用户已经开始利用分布式的应用开发低成本的解决方案。Microsoft计划在1998年的夏天推出Windows NT 5.0,这其中将包括目录服务和分布式管理能力,可以通过网络集中地安装、维护和管理应用程序。无须对现有的应用软件进行重新设计,今天的Windows DNA结构完全可以利用这些新的性能,这将是整个计划的第二步。第三步,同样是在1998年,Microsoft将计划推出COM+。这是一种完全的组件对象模式的解决方案,组件将更易于被创建和动态的使用。
随着Windows DNA技术的进一步的发展,开发人员将进入一个崭新的*王国。
微软Windows DNA是综合PC、客户机/服务器以及Internet/Intranet计算模式为一体的应用体系结构,基于Windows DNA的三层结构客户机/服务器体系就成为一种事实上的标准。
基于Windows DNA的三层结构把与客户有关的应用放在中间层来处理。中间层可以放在多台机器上,实现分布式处理,用户访问中间层,也就是在中间层实现联机事务处理(OLTP)。
十七.微软技术发展路线图
DDE -> OLE -> OLE automation -> ActiveX -> COM -> DCOM(MTS + MSMQ) -> COM+
附录:技术术语的缩写
1.OLE
OLE是Object Link Embeded,即对象的链接和嵌入
2.OCX
OCX是OLE Control Extension,是OLE控件的文件扩展名
3.COM
COM是Component Object Model,即组件对象模型
4.ATL
ATL是ActiveX Template Library,即活动模板库
5.MTS
MTS是Microsoft Transaction Server微软事务服务器
6.DCOM
DCOM是Distributed Component Object Model,即分布式组件对象模型
7.RPC
RPC是Remote Procedure Call,远程过程调用
8.DTC
DTC是Distributed Transaction Coordinator
9.ADO
ADO是ActiveX Data Objects
10.DDE
DDE是Dynamic Date Exchage动态数据交换
11.DNA
Windows DNA即基于Windows平台的网络分布式应用体系结构
1997年9月微软公司正式发布了Windows DNA