什么是ActiveDocument(OLE文档对象

来源:百度文库 编辑:神马文学网 时间:2024/04/27 09:48:22
到现在为止,对于用户在Internet比较熟悉的文档种类,我们还没有进行太多的讨论。例如,用户非常熟悉刚在本地硬盘上修改过的Word文档,但他们在Internet上使用真正干练的ActiveX控件却是不完全熟悉的。对于使用只有程序员喜欢的方式来显示专用页元素的脚本语言,我们也要讨论(用户大概不会全都对创建JavaScript的最新技术感兴趣)。当然,这就会带来差不多每个人都会问到的问题:对于用户而言,除了一点点信息、几个窗体以及那眼花缭乱的ActiveX控件,Internet到底是个什么玩艺儿? 那么,ActiveDocument为你提供一个答案,它们是对每个人说来都可用的在Web页上创建内容并显示数据的一种手段。
但是,ActiveDocument却远远不止是共享信息的一种方式,你可以使用它们正儿八经的干点事。考虑一下这种场景吧:你的公司拥有自己的内部网,公司的雇员们需要时可以在世界上任何地方进入这个网,他们使用这个网获得自己的e-mail并完成各种各样的其它任务。现在你的老板告诉你,要求市场开发部提交报告,而这时大部分销售代表都在外工作着,你怎么样才能完成这一工作呢?
注释 Netscape Navigator和早期版本的Internet Explorer ,通过使用帮手(helpers)让你看到非标准文档。浏览器启动应用程序的一个完整拷贝,并把Web站点上的文件内容传递给它。这种办法的问题是,启动另一个应用会使用更多的内存,而且你与Internet服务器也没有现场连接,所以对文件所作的改变不会立即反映到服务器中去。尽管Microsoft在Internet Explorer3.0及以上版本中仍然使用“帮手”(helpers)一词,但从用户的观点来看两者的意义却是完全不同的。
在这种情况下,ActiveDocument就是答案。使用第8章中讨论过的标记,在HTML 文档中建立到该文档的链接。当用户单击文档引用时,他们在浏览器中看到的是文档的可编辑版本,这个浏览器的菜单和工具栏发生了一些变化。图11.1中显示的是在Internet Explorer浏览器窗口中显示的Word for Windows文档。请注意浏览器所有特色仍然完整无损,变化了的只是文档显示的方式。这种特定技术并不是什么新货色,它被称之为在位编辑(in-place editing)。大多数OLE2服务器现在都能向OLE2客户机提供这种功能,你可以试一下Word forWindows或CoreDRAW!单击 OLE对象时,菜单和工具栏会随时改变得与客户机上的菜单和工具栏匹配。最大的差别在于,这是跨越Internet连接在浏览器中正在发生的事。
注 ActiveDocument使用称之为在位(inplace)编辑的OLE2特色,它让你在客户端中编辑文档而不是作为一个独立的服务器进行编辑。

注释 如果在基于LAN的Internet服务器上测试这个示例的话,可能会出现一个对话框,问你是否想打开或保存文件。多数情况下,在一个现场(live)Internet连接的连接中测试时,肯定会出现这个对话框(取决于你是如何设置浏览器安全性的)。简单打开文件,就会看到如图11.1所示的效果。
你还会注意到另外一个差别。如果改变了这个文本的内容,然后在InternetExplorer浏览器工具栏上单击Back按钮,就会看到如下图所示的对话框,它询问你是否想改变文件。如果单击Yes,就会看到典型的File Save(保存文件)对话框。遗憾的是,使用这一技术保存文件将把文件保存到你的本地硬盘中棗在我们这里这项特性没有什么用处,但也许在别的地方有用。还有其它保存文件的方法,可以使用File(文件)|Save (另存为)命令,你还能够使用File(文件)|Send To(发往)| Web Publishing Wizard(发布向导)命令,真正地将文件送回Web服务器。这正是我们所要的。(Internet Explorer 与Windows的某种组合不提供File|Send To|Web Publishing Wizard命令,这就是说,必须先把文件存在本地硬盘,然后再用Web Publishing Wizard命令将它发往Web服务器)。本章后面一节“使用Web Publishing Wizard”中,将讨论使用Web PublishingWizard所需的步骤。

技巧 对某些情况来说,本节讨论的每种技术的帮助都不太大。例如,你可能想向Web服务器邮寄文档,而且希望每个邮件单独到达。这时,你会告诉用户使用File|SendTo|Mail Recipient(邮件收件人)命令。显然,这就意味着你需要整理所有收到的文档,但是,当其它方法无效时,这种方法却能够使用。
技巧 当前的HTTP1.0规范不允许用户向WWW服务器发布文档,新的HTTP1.1规范修正了这一点。如果你希望允许用户从Web页面上向服务器发布文档,就应提供一个使用1.1规范的服务器。因为不必编写通常的脚本或者在连接中跳来跳去,所以你不仅可以节省时间和精力,而且,可以减少电话支持数量,从而对用户而言事情也就更简单了。(Netscape和Microsoft产品的所有当前版本都支持该1.1规范,如果你拥有任一家供货商产品的老版本,可以查看一下自己的文档。)
ActiveXDocument的变化也使得程序员必须考虑对OLE的支持。在客户机有三级对象参与。对象可以简单地出现在查看区,也可以占据整个窗口,还可以占据整个应用框架。现在来比较一下这三级对象的不同之处。
以前,你可以创建一个对象并将它放在容器中。OLE1出现后,容器只是简单地显示一个图标,说明对象的存在。如果希望编辑对象,可以双击容器中的对象图标。Windows将在另一个窗口中形成该文档的完整拷贝。这正是某些人所说的对象简单地出现在浏览区的意思。
OLE2改变了客户机和服务器交互的方式。现在,你可以真正看到对象的内容了。例如,如果在字处理文档中放入一个电子表格对象,不必双击该对象就能看到它的内容。它就是窗口级的参与者。客户机和服务器共享窗口;客户机显示它的数据,然后依靠服务器显示对象内部信息。OLE2还提供了在位替换操作。大部分情况下,双击对象都会启动一个进程之外的(out-of-process)服务程序,它占据整个客户机框架。服务器占据了一般留作客户机使用的菜单和工具栏。从用户角度来看,应用程序是一样的;只是改变了工具,以满足用户编辑对象的需求。
注 当你创建了一个与外部文档的连接时,OLE1只是显示一个图标;OLE2则显示真正的文档内容并允许进行在位编辑。
通过使用浏览器,ActiveDocument将该技术从桌面系统扩展到了Internet上。现在浏览器工具将会自动更新,以适应用户的需要,用户不必再打开一个其它的程序来编辑文档。一个进程之外的服务程序将负责更新浏览器菜单和工具栏,以适应应用程序的一般需要。实际上,Windows的未来版本将会做得更好。
注 当你单击窗口应用程序中的对象时,进程外的服务程序实现你看到的菜单和工具栏的修改。
Windows 95和Windows NT 4.0使用的都是资源管理器式界面。如果你用右键单击与某个已注册的应用程序相关的文档,就能看到一个有多种选项的菜单。最常见的选项是打开或打印文档。大部分情况下你能看到使用Quick View实用程序浏览文档内容的选项。
用户界面在不久的将来也可能有所改变。双击文档能进行在位操作。服务器将真正接管Explorer的菜单和工具栏。用户再也不必离开Explorer去打开另外一个应用程序窗口。另外,Internet站点就像硬盘一样出现在Explorer中,并组合了目前的浏览器的功能。
程序员们很欢迎这些变化吗 ? 并不全是。有些人已经在抱怨该技术只是加强了Microsoft 对计算机世界的控制。当然,只有在你不能安装另一个服务器来替代Internet Explorer时才会发生这种情况棗这几乎是不可能的事。随着计算技术日趋成熟,ActiveDocument将会成为一种特别重要的技术。这也正是本章为什么重要的原因──本章的目的正是使你跟上这种日新月异的技术的发展,以便你可以使用它来满足目前的计算需求。
创建连接
现在,你已经了解了使用ActiveDocument的结果,并讨论了该技术为什么重要的原因,本节将介绍实现它的HTML代码。程序列表11.1显示了用于创建该示例的代码,这个示例虽然很短但很实用。它没有增加任何特别功能,从而使你可以看到创建ActiveX 文档链接的最小需求。可以看出,代码中只是使用了一个简单的链接。所有该应用程序后面的“魔法”都存在于Internet Explorer中。第8章已经用这种链接来显示Web 站点上的其它页了。

好了,现在浏览器中已经有了一个可以编辑的文档了。这确实不是一件特别困难的事情。由于文档仍在浏览器中。所以可以节省内存。只有一个应用程序处于运行状态,所以尽管实际中要花费一些额外的处理时间和内存来浏览及处理文档,但比起运行两个应用程序来说,这样做的花费要少得多。例如,在位激活功能这一特色就是使用进程外服务程序的结果。进程外服务程序实际上是DLL 的一种“漂亮”的形式,它能提供与客户机应用程序进行通讯的适宜接口。关键在于:DLL 比完整的应用程序占用的内存要少得多,并且也没有理由担心什么显示问题(这是客户机的工作)。本章“ActiveDocument结构概述”一节将介绍这种DLL的一些需求情况。
注 ActiveDocument使用进程外服务程序(通常是一个DLL)来实施在位编辑。
还有两种其它的方法可以创建ActiveDocument连接,不过本章将不用多少时间来讨论这些方法。Microsoft Web Browser Control 允许你浏览Internet上任意类型的文档,包括那些一般与Internet并无关系的文档,如Word for Windows文档。另外,在这方面还有一些高级的标记属性能提供很大帮助。你可能要花费一些时间去了解第8章中有关标记的知识,然后就可以到所列的Web站点上去下载有关的技术规范。实际上标记的高级属性目前正处于不断发展变化中:这也正是本章不作介绍的原因。
使用Web Publishing Wizard
你不必依赖那些老方法来保持文档为最新状态。利用Web PublishingWizard,只要稍作努力就能使Web服务器上的文档保持最新状态。现在对文档的更改将不会像原来的浏览器技术那样只出现在自己的本地机器上。实际上它们会出现在Internet服务器上。由于提供了使用Web Publishing Wizard (以及可能的高级的设置连接信息)的已经编写好的过程,因此,就可以允许雇员从甚至很远的地方对HTML页进行修改了。
Web链接 学习本章的这一节时,你需要有一份Web Publishing Wizard的拷贝。你在“Explorer Send to ”菜单上应该能够看到“WebPublishing Wizard”(右击某文件,然后在上下文相关菜单中查找)。另外,如果你在浏览器中打开一个文档,那么在Word的“File|SendTo”菜单中也能看到“Web Publishing Wizard”项(但正常打开Word时不会看到这个菜单项)。你可以从http://www.microsoft.com/windows/software/webpost/default.htm 下载 Web Publishing Wizard。Windows 98 用户在添加/删除程序属性对话框的Windows Setup标签中,可能会发现Web PublishingWizard出现于Internet文件夹中。Web Publishing Wizard也是作为不同的Internet编程工具的一部分由Microsoft提供安装的,所以在安装之前应看看Web Publishing Wizard是否可用。
那么,怎么开始呢? 下面的过程将帮助你进行第一次的实践。第一次尝试之后,你可以将它们总结为简单的四步过程,一旦通过第一阶段后,我们将看一下这个过程的部分内容。我们先从图11.1所示的文档起步,并且假定该文档已经编辑过了。现在要做的是将所做的修改保存到Internet站点上去。1. 使用“File|Save As”命令显示“File Save”对话框。在将文件发送给Web服务器之前,必须先在本地机上保存它。可能以后Microsoft会修改这个过程,但现在你还是需要花点时间做一个本地拷贝。将文件命名为Web站点页的名字。在本例的Internet站点中,文件名为TESTDOC.DOC(如图11.1中Internet Explorer的标题栏所示)。
2. 在Word 或Windows Explorer中使用File|Send To|Web Publishing Wizard 命令来显示Web Publishing Wizard 对话框(如果使用WindowsExplorer发送它,要首先选中文件或文件夹)。

3. 单击Next,如果你使用的是Web Publishing Wizard的老版本,或者从开始菜单启动Web Publishing Wizard,你将看到下一页,如下图所示。在某些情况下,Web Publishing Wizard将自动把一个缺省的文件名放在File(文件)或Folder (文件夹)域中。现在,你还用不到该文件名。(如果你使用的是新版本的产品,那么在启动Web Publishing Wizard之前,就要选择一个文件 ,你就会看到一个对话框,询问你将使用哪一个Web服务器连接,这时请跳过第5步)。

4. 单击Browse Files(浏览文件)按钮,系统显示Browse 对话框(它的外观与标准的File Open对话框相似)。找到刚才保存的文档的本地拷贝,然后单击Open。现在就能在File(文件)或Folder(文件夹)域中看到Web文档的名字了。单击Next。
5. 如果你先前曾定义了Web服务器连接,就能看到一个包含着连接名称的下拉式列表框。你可以选择其中之一,或者单击New按钮,定义一个新的连接。该例中,假定需要一个新连接。(如果确实不需要新连接,可以选择已有的一个连接然后跳到第14步)无论你单击了New按钮,或是以前从未定义过服务器连接,都会看到如下图所示的对话框(该对话框来自于Web Publishing Wizard的最新版本,它包含有一个描述域和一个命令按钮,而老版本有两个域)。该对话框是你开始定义客户机与Internet服务器之间连接的地方。幸运的是,这些工作只要做一次就可以了。

注释 老版本的Web Publishing Wizard在这个对话框中提供了两个域,第一个是连接名,第二个是创建的连接类型。可在Web PublishingWizard 的新版本上单击对话框中的Advanced按钮来访问第二个域。
6. 为Internet连接输入一个名字。在绝大多数情况下,如果只需要一项内容的话,保持My Web Site不变就可以了。从第二个列表框中选择Internet ServiceProvider(Internet服务供应者)(Web Publishing Wizard的最新版的用户需要单击Advanced 按钮)。如果是为一个LAN内部网站点建立连接,那么,当使用老版本的 Web Publishing Wizard时,可以选择Other Internet Provider 选项,或者在使用新版的 Web Publishing Wizard时自动提供Select Service Provider选项。
7. 单击Next,就可以看到下一页面,如下图所示。

注意,你需要定义一个到Internet服务器的连接。在URL域中简单地输入自己的站点名。使用Web Publishing Wizard新版本的用户还需要提供与远程Web站点相对应的本地目录。这是Web Publishing Wizard寻找发送到Web服务器上文件的地方。绝大多数情况下使用缺省目录也就可以了。如果你使用Web PublishingWizard,那么请跳到第9步。
8. 单击Next,Web Publishing Wizard就会询问你用于发布信息的URL,除非使用非正常安装,否则Web Publishing Wizard提供的缺省URL就工作得很好。
9. 单击Next,就能看到下一页,如下图所示。该页允许你选择连接的类型: LAN或拨号方式。不要被对话框中的描述弄糊涂,就像为Internet建立连接一样,你可以很容易地为内部网建立拨号连接。

10. 在LAN连接(没有调制解调器的连接)或拨号连接之间选择一项。如果你选择的是拨号连接方式,那么还需要在列表框中选择一种拨号连接。单击NewDial-UP Connection按钮,可以创建一个新的连接定义。
11. 单击Next,Web Publishing Wizard会显示下一页,该页简单说明你所提供的信息中需要验证的信息。单击Next将开始对信息进行验证。如果你要建立LAN连接,几乎立刻就会得到如下图所示的错误消息。别担心,下面几步会告诉你如何解决这个问题。如果Web Publishing Wizard成功地找到了你的站点,你就可以跳转到第15步了。

12. 单击OK,关闭错误消息对话框,你会看到扩展连接配置的第一页,如下图所示。

这就是你选择文件传输方式的地方。如果你是通过拨号连接方式访问Internet站点,就可以选择FTP或HTTP文件传输方式。其中的HTTP方法只对使用HTTP版本1.1及以上版本的Web站点可用。如果你使用的是LAN,那么FTP和Windows File Transfer选项都可以使用。这里不同的连接还需各种不同的定义。接着,系统将继续显示Windows File Transfer选项,这也正是你经常需要使用的选项。
技巧 如果使用的是LAN连接,应尽可能使用Windows File Transfer方式,因为它比较快。FTP连接需要一个附加的文件传输层,这在LAN环境中是不需要的。不过,在WAN上,FTP方式能提供附加的安全保护层。
13. 单击Next,就能看到如图11.2所示的下一页。在这里,连接问题变得明显了。Web Publishing Wizard几乎总是不能找到文件正确的目标UNC(统一命名约定)。原因很简单:大部分情况下该名字都被服务器隐藏起来了。你需要给自己的存贮目录提供一个完整的UNC,如图11.2所示。确保提供的是一个UNC名,而不是标准的DOS驱动器和目录位置。使用UNC的原因是,它允许你使用同一种登记项技术,而不管服务器使用什么文件系统。
14. 单击Next,Web Publishing Wizard显示下一页,该页简单说明要验证你所提供的信息。单击Next开始验证过程。这次,你将会看到一条操作成功的消息。

15. 单击Finish,完成文件传输过程。在Web Publishing Wizard为你拷贝完文件时,你可以看到一个文件传送对话框。文件传送完后,可以看到如下图所示的成功对话框。此时你已经修改了该文档,访问Web站点的任何人都能自动看到所做的修改。

一旦你首次完成上述设置步骤,用户就可以只用简单的四步完成文件传送过程。而你需要做的就是将文档保存到本地驱动器上。利用File|Send To|WebPublishing Wizard命令启动该Wizard,选中文件并选择一个连接,然后单击Finish就可以完成整个过程(即上面所列步骤1到步骤4)。
技巧 网络管理员可以在每台机器上只执行这个任务一次,用以减少用户的支持电话。遗憾的是(至少到本书写作时),还没有办法像修改注册表或向一个目标机器拷贝文件那样自动完成上述任务。