Microsoft Exchange 2000 中的新开发功能
Microsoft Exchange 2000 中的新开发功能
Thomas Rizzo
Microsoft Corporation
2000年9月
摘要:本文档提供有关 Microsoft Exchange 2000 中新开发功能的指南。
目录
[*]简介
[*]Exchange 2000 解决方案类型
[*]引入 Web 存储系统
[*]Web 存储系统和 Office 文档
[*]来自 Web 存储系统中的寄存 Web 应用程序
[*]访问 Exchange 2000 中的数据
[*]Exchange 2000 半结构化数据
[*]Exchange 2000 中的 MAPI 支持
[*]引入 ADO 和 OLEDB 2.5
[*]引入 Exchange 2000 协作数据对象
[*]XML 和 Exchange 2000
[*]Web 存储系统事件
[*]工作流应用程序
[*]实时协作
[*]更多信息
简介
与 Microsoft® Windows® 2000 操作系统紧密结合的 Microsoft® Exchange 2000 Server 是为满足从小型机构到大型分布式企业等各种规模的商业企业的信息传递和协作需求而设计的。与客户端软件 Microsoft® Outlook® 2000 一起,Exchange 提供了一个高度可靠的、可伸缩的、易于管理的消息传递和协作基础结构。其创造性的新型 Microsoft Exchange Web 存储系统(Web Storage System)将 Exchange 的可靠性和可扩展性与 Web 的易访问性和开放性相结合,不仅是一个商业应用软件平台,而且提供了一个强大的知识库。Exchange 2000 会议服务器为数据和视听会议服务提供了一个平台,并为创建新的协作途径建立基础。本文档提供了 Microsoft Exchange 2000 的新开发功能的指南。
Exchange 2000 解决方案类型
Microsoft Exchange 2000 为开发人员建立消息传递和协作解决方案提供了一个平台。使用 Exchange 2000 提供现成的协作服务,您可建立一系列解决方案,包括消息传递、线程化讨论、日程安排、联系人管理、工作流或实时协作,以及利用这些现有协作服务自定义的解决方案。通过提供文档服务,Exchange 2000 也为开发以文档为核心的应用程序提供了一个很好的环境。本文档的结尾部分讨论了一些可在 Exchange 2000 平台上建立起来的各种协作解决方案类型。
引入 Web 存储系统
Microsoft Exchange 2000 通过 Web 存储系统为开发人员在应用程序中利用协同技术引入了一个革命性的方法。Web 存储系统提供了现成的协同服务和可编程性能,所以可通过协作增强现有应用程序性能,或者生成新的协同工作应用程序。首次在 Microsoft Exchange 中引入的 Web 存储系统支持多种访问协议和对象模型,从而为客户和开发人员提供了无与伦比的易访问性。最后,Web 存储系统允许开发人员利用现有的开发技能和工具来生成协作应用程序。正如可从它的名字中猜出的那样,Web 存储系统是通过基于 Web 的标准(如 HTML 和 XML,以及工业标准如 ADO/OLEDB)来提供上述这些功能的。下图列出了可用来访问 Web 存储系统的一些方法。
http://www.microsoft.com/china/msdn/Archives/library/images/newdevfeaturese2k1.gif
图 1.可访问 Web 存储系统的各种客户端程序或开发工具
为向您演示如何从这些不同客户端程序中访问 Web 存储系统,下图显示了当访问 Web 存储系统中的数据时所见到的视图。
请点击此处,查看完整的图片。
图 2. 从 Microsoft Outlook 访问 Microsoft® Office 文档
http://www.microsoft.com/china/msdn/Archives/library/images/newdevfeaturese2k3.gif
图 3. 使用 Microsoft Office 2000 中的 Web 文件夹(Web Folders)来访问相同的 Office 文档
请点击此处,查看完整的图片。
图 4. 使用 Windows 资源管理器和包含在 Exchange 2000 中的可安装文件系统(IFS)来访问相同的文档
Web 存储系统和 Microsoft Office 文档
Web 存储系统为 Microsoft® Office 文档建立了一个很大的存储库,这是因为 Office 文档属性会被自动地提升为顶级属性,您可使用 Web 存储系统所提供的各种数据访问方式查询这些属性。例如,从 Outlook 中,您可以直接向 Outlook 视图加入内置式的和自定义的 Office 文档属性。此外,从 Web 或 Microsoft® Visual Studio® 应用程序中,您可使用 WebDAV 或者 ADO 直接查询 Office 文档属性。下面的“数据访问”一节包含了分别使用 ADO 和 WebDAV 查询 Office 文档属性的例子。
来自 Web 存储系统中的寄存 Web 应用程序
除了能使用不同的客户程序来访问 Web 存储系统中的信息之外,Web 存储系统也可直接运行 Web 应用程序。通过将 Web 文件(如 HTML,活动服务器页 (ASP) 或者图形)放到 Web 存储系统中,可生成一个指向这些数据的虚拟目录,并让一个 Web 应用程序寄存于其中。这种功能使您可以将数据和应用程序集成到一个位置,同时又可利用 Web 存储系统的高级复制和安全特性。另一个好处是,通过将信息存储在文件系统中,您可对属性进行自定义,还可对事件进行编程以增强 Web 存储系统的功能。下面的一组图演示了将 Web 应用程序寄存于 Web 存储系统是多么容易。
请点击此处,查看完整的图片。
图 5. Exchange 2000 的可安装文件系统使 Microsoft Windows 资源管理器可以在 Exchange 中浏览和存储 Web 应用程序
http://www.microsoft.com/china/msdn/Archives/library/images/newdevfeaturese2k6.gif
图 6. Internet 信息服务中的虚拟目录向导可生成虚拟目录,指向存放于 Exchange 2000 中的 Web 应用程序
请点击此处,查看完整的图片。
图 7. 直接从 Exchange 2000 运行 Web 应用程序
访问 Exchange 2000 中的数据
Microsoft Exchange 2000 引入了许多新的用于检索和设置数据的数据访问方法。虽然大多数数据访问方式是 Exchange 2000 下 Web 存储系统本身固有的,但是还有一些方式,如 MAPI 访问方式,是特定于 Exchange 系统的。下面的图表概要说明了 Exchange 2000 的所有不同的数据访问方法。通过选取最适合您的应用程序和技能的访问方法,可以快速地添加或查询存储在 Exchange Server 中的数据。
http://www.microsoft.com/china/msdn/Archives/library/images/newdevfeaturese2k8.gif
图 8. Exchange 2000 的各种数据访问方式。这些不同的方式使您能利用您的开发工具和技能。
Exchange 2000 半结构化数据
通过使用上面的数据访问方式,您可以访问 Exchange 2000 中的半结构化数据。半结构化数据是指,Exchange 中包含的数据是树状集合或项目,而不象关系数据库那样排列成明确的表和行。通过具有这种层次结构的命名和存储环境,Exchange 对于存储的数据类型可以非常灵活,并且可对层次存储结构中的任何节点赋予自定义属性。这意味着,在相同的文件夹或者文件夹树中,可有许多不同类型的数据,如电子邮件信息、讨论、联系人、图象、Web 文件或者其它类型数据。而且,分层的存储结构使您可以进行对树的操作,如复制或移动。下图演示了分层存储结构。
http://www.microsoft.com/china/msdn/Archives/library/images/newdevfeaturese2k9.gif
图 9. Exchange 2000 支持分层的、半结构化的存储,从而使开发人员可存储不同类型的数据,并且对数据进行树操作
Exchange 2000 中的 MAPI 支持
开发人员应认识到的关键事项之一是:Exchange 2000 仍支持 MAPI。这意味着使用 MAPI 的客户程序(如 Microsoft Outlook)仍可在 Exchange 2000 中运行。直接或间接地使用 MAPI 的应用程序,如 Collaboration Data Objects 1.2 或者 Outlook Object Model 也依旧可运行。
引入 ADO 和 OLEDB 2.5
随着 Windows 2000 的发布,也同时发布了新版本的 ADO 和 OLEDB。此新版本 2.5 提供了对记录和流对象的支持以及 URL 绑定,从而使开发人员可对半结构化信息应用这些技术。一旦您知道数据的路径,记录对象可允许您直接绑定数据,而不必执行查询操作。流对象使您可获得数据的原始表示,无论这些数据是文本、XML 或是其它格式。下图概要说明了 ADO 2.5 对象模块。
http://www.microsoft.com/china/msdn/Archives/library/images/newdevfeaturese2k10.gif
图 10. ADO 2.5 对象模块
当您部署 Exchange 2000 时,Exchange 将为 Exchange 数据安装一个 OLEDB 2.5 提供程序。这意味着在 Exchange 中您可以利用 ADO 或者 OLEDB。由于 ADO 是一个广为人知的对象模型,您可以利用您的技能或使用工具来编写运用 Exchange 数据的 ADO 应用程序。下面是从 ASP 应用程序中抽取的程序代码示例,说明了应如何使用 ADO 来与 Exchange 相连,如何使用 SQL 风格的语句对记录集进行查询,以及如何将记录集显示到 Web 页。
请点击此处,查看完整的图片。
图 11. 连到 Exchange 上并用记录集检索数据的 ADO 2.5 应用程序
ADO with Exchange 2000
Path to Exchange Server:
NameTypeValue
如要获得更多使用 ADO 和 OLEDB 来检索 Exchange 中数据的信息,请参考本文末尾的更多信息一节。
引入 Exchange 2000 协作数据对象
ADO 为开发人员提供了一种简单的方法,使他们可以运用他们已熟悉的对象模型在 Exchange 2000 中存取数据。ADO 并不提供协作语义(如生成会面请求、联系人,或者 MIME 格式的电子邮件消息),而是让您获得数据记录集,并根据您的应用程序需求在记录集的行上设定属性。为了在 ADO 和 OLEDB 上提供协作语义,Microsoft 为 Exchange 2000 创建了合作数据对象(Collaboration Data Objects,CDO)。Exchange 2000 的 CDO 在 OLEDB 上建立,并提供较高级别的提供协作语义的对象。
http://www.microsoft.com/china/msdn/Archives/library/images/newdevfeaturese2k13.gif
图 13. CDO 和 ADO 对象模型间的交互
使用 Exchange 2000 的 CDO,开发人员可创建 HTML 格式的电子邮件消息,反复进行的会议,或者活动目录中的联系人。由于 Exchange 2000 的 CDO 基于现有的 ADO 接口,所以开发人员可以对 CDO 直接使用现有的 ADO 集合和属性。例如,Exchange 2000 的 CDO 提供对基层的 ADO 字段集合的访问,使得开发人员能够运用字段的集合修改资源的属性。
CDO 对象模型主要由五个关键对象组成,这些对象包含一些属性、方法和子对象。这五个对象是:
[*]消息对象:用以创建、发送、响应和管理 Web 存储系统中的消息项。
[*]约会对象:用以创建和管理 Web 存储系统中的约会项。
[*]日历消息对象:用以创建、发送、响应和管理 Web 存储系统中与日历相关的消息。
[*]人员对象:用以创建和管理 Web 存储系统以及活动目录中的用户和联系人信息。
[*]地址对象:用以解决活动目录或者联系人文件夹中的地址问题,并检索用户空闲/忙状态。
下面的代码示例说明了应如何与 ADO 一起使用某些 CDO 对象。示例中,一个已有的 ADO Record 对象通过采用 CDO 数据资源对象(Datasource Object)被绑定,并且关于该项的信息通过采用顶级的 CDO 属性进行输出。本例中的项是一个约会项。
XML 和 Exchange 2000
Microsoft Exchange 2000 提供了原始的 XML 文档存储。通过提供这种原始的支持,开发人员可以存储 XML 文档,并且可以运用 XML 对 Microsoft Exchange 添加数据或从中检索数据。Exchange 2000 支持网络分布式授权和版本化(Web Distributed Authoring and Versioning,WebDAV)协议。WebDAV 是超文本传输协议(HyperText Transfer Protocol,简称 HTTP)的一种扩展,它规定了应如何进行文件处理操作,使对 Web 的读写都很容易。采用 WebDAV 命令,您可以锁定资源,获得属性,或者改变属性。这是一种强大的功能,因为它搭载在 HTTP 上。WebDAV 可以穿过防火墙和代理服务器。下表列出了您可以在 Exchange 2000 中使用的 WebDAV 命令。
表 1. WebDAV 方法
方法
说明
Move
将一个资源或集合移到一个新的位置
Copy
将一个资源或集合复制到一个新的位置
MkCol
生成一个新的集合。对于 Exchange 来说,这是一个新的文件夹。
PropFind
从资源中获得属性
PropPatch
设定资源的属性
Search
使用 SQL 语句来进行一次查询
Lock
锁定资源
Unlock
将资源的锁释放
为了在 Web 应用程序中使用 WebDAV 协议,Internet Explorer 5.0 带有一个名为 ServerXMLHTTP 的组件。您仍需要发出正确格式的 WebDAV 请求,但是 ServerXMLHTTP 组件简化了该操作。ServerXMLHTTP 对象具有几种属性和方法,可与 HTTP 服务器建立起通信,发送请求,并处理结果。ServerXMLHTTP 方法执行打开与 HTTP 服务器的连接的实际操作。表 2 概括了这些方法。除了这些方法之外, ServerXMLHTTP 组件也支持一些属性,使您能够检查请求的状态,检索服务器返回的值,并查看请求中是否发生了任何错误。表 3 列出了这些属性。
表 2. ServerXMLHTTP 对象方法
方法
说明
Abort
取消当前 HTTP 请求。
GetAllResponseHeaders
从响应信息中检索所有的标头字段(header fields)。
GetResponseHeader
从响应信息正文中获得一个 HTTP 标头值。
Open
打开一个与 HTTP 服务器的连接。
SetRequestHeader
设定一个请求的标头字段。
Send
向 HTTP 服务器发送请求。可包含正文。
表 3. ServerXMLHTTP 对象属性
属性
值
说明
OnReadyStateChange
事件处理器参考
仅用于异步操作。指定当就绪状态发生改变时(例如当数据从服务器上返回时)调用的事件处理器。
ReadyState
整型
说明异步操作的状态:未初始化(0),正在加载(1),已加载(2),交互(3),或者已完成(4)。
ResponseBody
变量数组
将响应信息正文作为数组返回。
ResponseStream
Istream
将响应信息正文作为一个 ADO Stream 对象返回。
ResponseText
字符串
将响应信息正文作为一个文本字符串返回。
ResponseXML
XMLDocument 对象
返回响应信息正文,并视为已被 MSXML XMLDOM 语法分析器分析过。
Status
长型
由服务器返回的 HTTP 状态码。
StatusText
字符串
HTTP 响应行状态。
下面的代码示例使用了 ServerXMLHTTP 对象,以从 Exchange 2000 中获取 XML 数据,并把信息显示在 Web 页上。此例演示了如何使用 ServerXMLHTTP 对象的方法、属性和事件来从 Exchange 2000 中获得数据。示例中使用了可扩展样式表语言(Extensible Stylesheet Language,XSL)将 XML 格式转换为 HTML。有关 XSL 的更多信息,请参考本文末尾的更多信息一节。
请点击此处,查看完整的图片。
图 14. 作为 XML 访问 Exchange 2000 中信息的应用程序示例
ServerXMLHTTP/XML Sample Application
Name
Content Class
Last Modified
Size (bytes)
javascript:window.open
('');
window.event.returnValue=false;
this.nodeTypedValue
List Folders or Contents
Enter URL:
Show Debugging Information
StatusResponse
Web 存储系统事件
Web 存储系统事件提供了一种机制,通过这种机制,每当存储库中的某一项被保存、删除、移动、复制或修改,应用程序都可执行代码。Web 存储系统事件在服务器上运行,客户端不可知。这意味着无论导致事件的客户机的情况如何,应用程序代码都将运行。使用 Web 存储系统事件,您可建立应用程序逻辑,使之在以下情况时执行:客户机是类似于 Microsoft Outlook 的 MAPI 客户程序,或者是类似于 Microsoft® Internet Explorer 或 Outlook Web Access (OWA) 的 HTTP 程序,或者是 Win32® 程序(如任何一个 Microsoft Office 应用程序组件)。您甚至可以建立一个当消息通过 SMTP、IMAP 或 NNTP 传递时将会运行的应用程序逻辑。
将应用程序逻辑与要访问数据和将数据推送到服务器上的客户机分离开来,使您避免对每一个可能访问数据的客户程序重写代码。它也保证了无论数据项到达存储库时客户机是否连接着,或客户机是否安装了该应用程序,应用程序逻辑始终会运行。
Web 存储系统支持许多不同的事件。这些事件可被归类为同步、异步或系统事件。同步事件在将修改提交到存储库前发生。异步事件主要是通知,在某一项目被保存或删除之后发生。Web 存储系统保证异步事件的传送。这意味着即使存储库在事件触发之前关闭了,也将调用应用程序池。在这种情况下,事件将在存储库重新启动时触发。
Web 存储系统应用程序是通过事件池(Event Sink)利用事件处理机制生成的。事件池是一些代码片断,由一个定义的触发器激活,如接收到新消息。代码可用 Microsoft® Visual Basic®、Microsoft® Visual C++®、Visual Basic、Scripting Edition(VBScript),或者任何支持组件对象模型(Component Object Model,COM)的其它语言来编写。
一些您可以用 Web 存储系统事件构建的应用程序例子包括通知(notification)、工作流(workflow)、验证(validation)甚至维护应用程序(maintenance application)。
工作流应用程序
术语“工作流”描述了基于业务过程建模的应用程序,例如费用报告审批系统。典型的工作流应用程序包含以下一些内容:
[*]表单传递和审批
[*]文档审核和发布
[*]问题跟踪
您可以用任何编程语言从头编写这些应用程序,也可以使用内置的工作流引擎和 Exchange 2000 服务器提供的专门的工作流建模工具来简化任务。基于 Web 存储系统事件的工作流引擎提供了内置功能,可跟踪工作流过程实例的状态。所谓工作流过程实例,是指经过工作流的事项。
建模工具使您能指定业务的整体设计或流程,该业务处理简单、高级表述(即过程定义)。例如,在一个费用报告中,您可以定义一个过程,使总计小于 $50 的报告直接发送到您的会计部门,而总计等于或者大于 $50 的报告则传给经理以进行审批。
建模工具使您能够定义文档的不同状态,如提交、需要审批或者已获准。您通过使用 VBScript 中的操作来定义状态间的转换。您可以很容易地修改或者扩展过程定义,而不必重写所有的基本应用程序代码。图 15 说明了 Microsoft Exchange 2000 工作流设计器(Workflow Designer)。利用该设计器,您可以描绘业务流程,并执行业务逻辑来创建工作流应用程序。
请点击此处,查看完整的图片。
图 15. Microsoft Exchange 2000 的工作流设计器
实时协作
Microsoft Exchange 2000 对协作进行了革新,它不仅包含现成的实时协作功能,也提供一些组件,使向应用程序添加实时协作的操作简单易行。利用这些组件,开发人员可直接向应用程序添加即时传递消息(Instant Messaging),并只需进行极少的编码甚至无需编码。这些组件为开发人员提供了可用到应用程序中的方法、属性和事件。下图是一个 Exchange 2000 的 Web 应用程序,它带有一个内置即时消息传递功能,是使用 Microsoft Exchange 2000 的实时协作组件实现的。
请点击此处,查看完整的图片。
图 16. 一个使用即时消息传递组件来联机显示指导者可用性的 Exchange 2000 培训应用程序
更多信息
有关上述主题和 Microsoft Exchange 2000 的更多信息,请访问以下站点。在这些站点,您可以找到白页、应用程序实例、手册以及 Exchange 2000 SDK。
[*]MSDN 联机 Exchange 开发人员中心(英文)
[*]Microsoft Exchange Web 站点(英文)
[*]Microsoft 出版社书库(英文)
[*]Microsoft Outlook 和 Exchange 编程,第二版(英文)
页:
[1]