EWS 应用程序和 Exchange 体系结构
了解 EWS 在 Exchange 体系结构中的工作原理,并了解 EWS 所依赖的协议。
Exchange Web Services (EWS) 是一种跨平台 API,使应用程序能够访问邮箱项目,例如电子邮件、会议和来自Exchange Online的联系人、Exchange Online作为Office 365的一部分,或从 Exchange Server 2007 开始的 Exchange 的本地版本。 EWS 应用程序 可以通过在基于 SOAP 的 XML 消息中发送请求,在本地或远程访问邮箱项目。 SOAP 消息在应用程序和服务器之间发送时嵌入在 HTTP 消息中,这意味着只要应用程序可以通过 HTTP 发布 XML,它就可以使用 EWS 访问 Exchange。
Exchange 体系结构概述
下图显示了 EWS 应用程序在与 Exchange 2013 和 Exchange Online 通信时使用的身份验证方法和通信路径。 从 EWS 应用程序的角度来看,通信路径相同,身份验证方法仅略有不同:main区别在于你对 Exchange 后端的可见性。
图 1. EWS 应用程序和 Exchange 本地体系结构
图 2 显示了图 1 中所示的相同通信路径,EWS 应用程序在与 Exchange Online 通信时使用的路径。
图 2. EWS 应用程序和Exchange Online体系结构
下面是关系图中显示的组件:
EWS 应用程序 - 可以是 客户端、门户或服务应用程序, 并且可以安装在客户端或 Exchange 本地客户端访问服务器上。 如果使用 EWS 托管 API 开发 EWS 应用程序,则必须在客户端上安装 EWS 托管 API 程序集,并由 应用程序重新分发。
SOAP XML 消息 — SOAP 信封中的 XML 消息,嵌入到符合客户端访问服务器上的 Services.wsdl 文件的 HTTP/S 消息中。 建议将 HTTPS 用于本地 Exchange,并且是Exchange Online所必需的。
身份验证方法 - EWS 消息包括基本、NTLM (Windows 集成身份验证) 或 OAuth 身份验证信息(作为 HTTP 有效负载的一部分)。
负载均衡器 — 负载均衡器将消息分发到客户端访问服务器阵列中的客户端访问服务器。 此组件仅在 Exchange 本地体系结构中可见。
客户端访问服务器阵列 - 客户端访问服务器被组织到一个名为“客户端访问服务器阵列”的负载均衡组中。 单个客户端访问服务器提供身份验证、受限重定向和代理服务。 客户端访问服务器本身不执行任何数据呈现,并且不会在客户端访问服务器上排队或存储任何数据 - 它是精简且无状态的;它只需对请求进行身份验证,执行自动发现查找,然后将请求代理到邮箱服务器。 客户端访问服务器与托管用户数据的邮箱服务器保持 1:1 关系。 HTTP 协议 (使用自签名证书通过 SSL 进行保护,) 客户端访问服务器和邮箱服务器之间使用。 此组件仅在 Exchange 本地体系结构中可见。
自动发现服务 — 自动发现服务通过访问 Active Directory 域服务 (AD DS) 来执行服务发现,以检索邮箱版本以及托管用户数据的活动副本的邮箱服务器的位置。
EWS 服务 — EWS 服务由三个文件描述:Services.wsdl、Messages.xsd 和 Types.xsd 以及 EWS 托管 API 程序集。 Services.wsdl 描述客户端和服务器之间的协定,Messages.xsd 定义请求和响应 SOAP 消息,Types.xsd 定义 SOAP 消息中使用的元素。 Messages.xsd 和 Types.xsd 始终包含架构的最新版本,尽管存在架构的早期版本。 请注意,Services.wsdl、Messages.xsd 和 Types.xsd 在客户端访问服务器上可用,但实际上并不用于架构验证 ,它们仅供参考。 EWS 托管 API 程序集是为服务器端 EWS 客户端应用程序提供的,并且部署在所有Exchange Server角色上,而不仅仅是客户端访问服务器。 此组件仅在 Exchange 本地体系结构中可见。
功能可用性基于应用程序面向的 EWS 架构版本。 由于 EWS 架构是向后兼容和向前兼容的,因此如果创建面向早期架构版本(如 Exchange 2007 SP1)的应用程序,则应用程序还将适用于更高架构版本(例如 Exchange 2010 SP2 服务)以及Exchange Online。 由于功能和功能更新由架构驱动,因此建议使用面向要在客户端应用程序中实现的 EWS 功能的最早通用代码库。 许多应用程序可以面向 Exchange2007_SP1 版本,因为 Exchange 2007 SP1 架构包含几乎所有用于处理 Exchange 存储中的项目和文件夹的核心 Exchange 功能。 有关详细信息,请参阅 EWS 客户端功能。
数据库可用性组 (DAG) — 邮箱服务器被组织为高度可用的 DAG,该 DAG 可以部署在一个或多个数据中心。 邮箱服务器包含邮箱数据库,并处理该服务器上活动邮箱的所有活动。 处理、呈现和存储数据的所有组件都在邮箱服务器上。 客户端不直接连接到邮箱服务器;所有连接均由客户端访问服务器处理。 此组件仅在 Exchange 本地体系结构中可见。
Exchange Online和Exchange Online作为Office 365的一部分 — 托管消息传送解决方案,将 Exchange 功能作为基于云的服务提供。
当 EWS 应用程序从 Exchange 存储请求信息时,将创建符合 SOAP 标准的 XML 请求消息并将其发送到 Exchange 服务器。 当 Exchange 服务器收到请求时,它会验证客户端提供的凭据,并自动分析所请求数据的 XML。 然后,服务器生成一个 SOAP 响应,其中包含表示所请求的强类型对象及其属性的 XML 数据。 XML 数据在 HTTP 响应中发送回应用程序。 然后,应用程序对 XML 进行反序列化,并使用数据来修改强类型对象。
EWS 应用程序必须支持的协议和标准
若要与 Exchange 服务器通信,EWS 应用程序必须支持以下协议和标准。
表 1. 协议
协议 | 如何使用 |
---|---|
HTTP/S |
使 EWS 应用程序能够通过网络访问 Exchange 数据库数据,而不管客户端是位于 Internet 还是 Intranet 上。 |
SOAP 1.0 |
Forms消息有效负载周围的信封。 EWS 通过使用 SOAP 信封的不同部分来实现 SOAP 协议,以启用不同的功能。 SOAP 标头用于模拟并提供版本控制数据。 SOAP 正文提供有关要运行的操作以及提交到操作的数据的信息。 SOAP 依赖于 WSDL 来描述要调用的操作。 |
WSDL 1.0 |
描述 Services.wsdl 文件中用于调用 EWS 操作的绑定、操作和属性。 此文件以及引用的架构文件包括 EWS 应用程序和 Exchange 服务器之间的协定,通常与特定于供应商的工具一起使用,以创建特定于平台的应用程序。 WSDL 文件位于 EWS 虚拟目录中,该目录位于网站的根目录中。 |
传输层安全性 (TLS) /SSL |
在 Internet 或 Intranet 上提供安全的 Web 通信。 TLS 允许应用程序对服务器进行身份验证,或者允许服务器对 EWS 应用程序进行身份验证。 它还通过加密通信提供安全通道。 TLS 是安全套接字层 (SSL) 协议的最新版本。 |
XML/XSD |
为 Exchange 服务器和客户端之间的信息交换提供通用消息格式。 XML 向客户端应用程序提供复杂的 Exchange 数据库数据,但在定义的结构中。 XML 的美妙之处在于,即使 EWS 应用程序和服务器不共享通用平台,它也能进行数据交换。 |
此外,EWS 应用程序必须支持以下身份验证标准:
基于 SSL 的基本身份验证,适用于面向本地 Exchange 的应用程序。
针对面向本地 Exchange 的应用程序的基于 SSL 的 NTLM 身份验证。
OAuth 2.0 令牌身份验证,适用于面向Exchange Online、受信任的合作伙伴应用程序以及与 Lync Server 2013 和 SharePoint Server 2013 的互操作性的应用程序。