比较 Exchange Online 和 Exchange 本地客户端编程
了解创建适用于本地Exchange Online和 Exchange 的 EWS 托管 API 或 EWS 客户端应用程序的设计注意事项。
在大多数情况下,无论目标是Exchange Online、Exchange Online作为Office 365的一部分还是 Exchange 本地服务器的一部分,Exchange 中的客户端和 Web 服务都将以相同的方式工作。 但是,存在一些例外,你需要确保应用程序能够处理它们。 使用本文中的信息可帮助你将客户端设计为面向本地Exchange Online和 Exchange。
自动发现客户端编程注意事项
自动发现 为 Exchange 客户端提供配置信息。 客户端应用程序可以通过以下三种方式之一发现其配置信息,具体取决于客户端是面向本地Exchange Online还是 Exchange。
表 1. 自动发现服务类型和 Exchange 适用性
自动发现服务类型 | 适用对象 |
---|---|
SOAP 自动发现 |
从 Exchange 2010 开始的本地 Exchange Exchange Online和版本 |
POX 自动发现 |
从 Exchange 2007 开始的本地 Exchange Exchange Online和版本 |
服务连接点 (SCP) 查找 |
从 Exchange 2007 开始的本地 Exchange 版本 |
除了客户端配置信息,SOAP 和 POX 自动发现还会返回 Exchange 服务版本,并指示服务是否由 Exchange Online 托管。 此信息在不同的元素中返回,具体取决于使用的自动发现类型。
表 2. 返回服务版本和Exchange Online托管信息的自动发现元素
自动发现服务类型 | 包含服务版本的 XML 元素 | 指示用户是否具有Exchange Online帐户的 XML 元素 |
---|---|---|
SOAP 自动发现 |
使用 CasVersion 文本值设置 (SOAP) 元素。 |
使用 UserMSOnline 文本值设置 (SOAP) 元素。 |
POX 自动发现 |
ServerVersion (POX) |
MicrosoftOnline |
确保客户端捕获此信息,以便它可以面向 Exchange 服务器上可用的 功能集 。 这可用于根据用户的邮箱是否位于 Exchange Online 或 Exchange 本地组织中来确定客户端是否可以期望不同的行为。
在面向Exchange Online的应用程序中测试和记录文件
Exchange Online不提供对本地 Exchange 服务器上可用的 EWS 协议日志文件、EWS 性能计数器和 EWS 相关服务事件的访问权限。 但是,在发现应用程序与 EWS 交互时的性能时,对这些项的访问非常有用。 请确保针对测试 Exchange 本地服务器测试应用程序,以便优化其性能。 如果可能,可以更改测试服务器上的限制设置,以匹配Exchange Online的限制设置,以便评估应用程序连接到Exchange Online时的行为方式。
提示
可以使用 EWSRelentless 工具执行 EWS 负载测试。 可以将此工具与测试服务器、EWS 协议日志、EWS 性能计数器、服务事件和 EWS 限制设置结合使用,以便更好地了解 EWS 在负载下的性能。
限制设置和Exchange Online
Exchange Online的 EWS 限制设置的默认值与本地 Exchange 的默认值不同。 此外,无法更改Exchange Online限制设置。 可以使用 Exchange 命令行管理程序 cmdlet 发现 Exchange 本地的限制设置;但是,不会为Exchange Online启用这些 cmdlet。
Exchange 命令行管理程序 cmdlet 和配置设置
许多 cmdlet 可以直接或间接影响本地 Exchange Online 和 Exchange 中的 Web 服务 API。 cmdlet 在 Exchange Online 中不适用于以下项:
限制设置
虚拟目录设置
身份验证设置
有关可用于Exchange Online的 cmdlet 的详细信息,请参阅 Exchange Online 中的 PowerShell cmdlet。 有关可用于本地 Exchange 的 cmdlet 的详细信息,请参阅 Exchange 2013 cmdlet。
客户端相关性和网络负载均衡器
大多数 EWS 通信不要求客户端参与维护与 Exchange 的相关性。 邮箱事件的订阅确实要求客户端提供 Cookie 和其他信息,以保持与 Exchange 服务器(为用户维护邮箱事件队列)的相关性。 Exchange Server 2010 使用 exchangecookie 跨网络负载均衡器维护客户端相关性。 从 Exchange 2013 开始的本地 Exchange Exchange Online和版本使用 X-AnchorMailbox 标头、X-PreferServerAffinity 标头和 X-BackEndOverrideCookie Cookie 来维护邮箱通知的相关性。
身份验证
客户端可以使用基本或 OAuth 通过 Exchange Online 进行身份验证。 从 Exchange 2013 开始的本地 Exchange 版本默认使用 NTLM;但是,也可以将本地 Exchange 配置为使用基本身份验证。
客户端延迟诊断
Exchange Online收集客户端延迟诊断(如果报告)。 这有助于 Microsoft 支持人员排查Exchange Online的连接问题。 Exchange 本地不会收集客户端延迟诊断。 如果客户端面向本地 Exchange,则客户端无法向服务器报告延迟诊断。
EWS 托管 API 中的功能
EWS 托管 API 公开一些特定于本地 Exchange 的功能,例如服务点连接查找,以及特定于Exchange Online的某些功能,例如客户端延迟报告。 请注意,在 EWS 托管 API 中实现某些功能之前,可以在 Exchange Online 中实现。
以下 EWS 托管 API 功能仅适用于Exchange Online:
客户端延迟报告
基本预身份验证
请求在响应中返回 RequestId 的功能
Exchange Online计划和Exchange Server版本中的 API 功能
不同的Office 365和Exchange Online计划或标准版和企业版Exchange Server中可能提供不同的功能集。 请注意,某些 API 功能可能不适用于客户端应用程序,具体取决于托管用户邮箱的Exchange Online计划或Exchange Server版本。
由于功能可用性可能会更改,因此建议检查Exchange Online计划和Exchange Server版本,以评估功能可用性如何影响客户端。 还可以通过使用 GetServiceConfiguration 操作 或发送实现这些功能的操作的测试请求,将客户端设计为检查功能可用性。 如果该功能不可用,则来自服务器的响应将进行指示。
其他注意事项
面向本地 Exchange 时,可以执行以下操作,但不能Exchange Online:
创建安装在 Exchange 服务器上的客户端。
安装自定义 传输代理 ,这些代理可能会影响使用 EWS 和其他客户端创建和发送的消息的传递和内容。