MAPI 和 RPC over HTTP

 

上一次修改主题: 2005-05-23

在 Microsoft Outlook 中配置 Exchange Server 传输服务时,Outlook 使用 MAPI 与 Exchange Information Store 服务通信。这些 MAPI 调用全部都是基于 RPC 的。尽管 RPC 调用在 LAN 或 WAN 环境中能够很好地工作,但在 Internet 上使用时通常效果不好,这是因为有防火墙和其他安全设置。使用更早版本的 Exchange 时,想对 Exchange 进行 MAPI 访问的外部 Outlook 用户必须首先与其所在组织的专用网络建立 VPN 连接。

RPC 代理运行在 IIS 计算机上。它接受来自 Internet 的 RPC 请求,并通过 Internet 有效地连接到 RPC 服务器程序,然后运行远程过程调用,而不会首先需要 VPN 连接。它还对这些请求执行身份验证、有效性验证和访问检查,而不会在防火墙上打开多个端口。这是在称为 RPC-over-HTTP 代理(即 RPC 代理)的中介的帮助下完成的。

如果请求通过了所有测试,则 RPC 代理将请求转发给执行实际处理的 RPC 服务器。使用 RPC over HTTP,RPC 客户端和服务器不直接通信,而是使用 RPC 代理作为中介。

RPC over HTTP

RPC over HTTP 使客户端程序能够使用 Internet 来运行由远处网络上的服务器程序所提供的过程。RPC over HTTP 通过所建立的 HTTP 端口来路由它的调用。因此,它的调用可以跨越客户端和服务器网络上的网络防火墙。RPC 代理位于 RPC 服务器的网络上。RPC 代理建立并维护与 RPC 服务器的连接。它充当代理,将远程过程调用调度给 RPC 服务器,并将服务器的答复跨越 Internet 返回给客户端程序。

RPC over HTTP 对服务器端和客户端都有要求,下表详细列出了这些要求:

实现 RPC over HTTP 的要求

客户端要求

使用 Service Pack 1 或更高版本的 Microsoft Windows XP Professional

来自 Microsoft 知识库 331320 的修补程序

Microsoft Office Outlook 2003

服务器端要求

Exchange 服务器上的 Microsoft Windows Server 2003

所有前端和后端服务器上的 Exchange Server 2003

全局编录服务器上的 Windows Server 2003

RPC 代理服务器上的 Windows Server 2003

客户端程序使用 HTTP 作为传输协议发出 RPC 时,客户端上的 RPC 运行时库将与 RPC 代理取得联系。根据是否要求 RPC 客户端使用 HTTP 或 HTTPS,将分别使用 TCP 端口 80 或 TCP 端口 443。RPC 代理与 RPC 服务器程序取得联系,并建立 TCP/IP 连接。客户端和 RPC 代理将维持其跨 Internet 的 HTTP 或 HTTPS 连接。

如果存在防火墙,客户端到 RPC 代理的 HTTP 或 HTTPS 连接可以穿过防火墙(需要合适的访问权限)。然后,服务器可以运行 RPC,并通过 RPC 代理使用该连接来答复客户端。

如果客户端或服务器由于任何原因而断开连接,则 RPC 代理将检测到连接已断开,并结束 RPC 会话。只要会话继续,RPC 代理就会维持它与客户端和服务器之间的连接。它会将 RPC 从客户端转发给服务器,并将答复从服务器发送给客户端。

通过创建字符串绑定,RPC 客户端程序可以通过 Internet 来路由它的 RPC 调用,字符串绑定采用以下形式:

[object_uuid@]ncacn_http:rpc_server[endpoint,HttpProxy=proxy_server:http_port,'rpcproxy'=rpc_proxy:rpc_port]

其中:

  • object_uuid 指定 RPC 对象的全局唯一标识符 (UUID)。
  • ncacn_http 选择 RPC over HTTP 的协议序列规范。
  • rpc_server 是正在运行 RPC 服务器进程的计算机的网络地址。服务器地址必须以可见形式指定,并且能够被 RPC 代理计算机而不是客户端理解。因为客户端不直接连接到服务器,所以它不解析服务器的名称,也不建立与它的连接。RPC 代理代表客户端建立连接。因此,rpc_server 必须是可被 RPC 代理识别的名称。
  • endpoint 指定 RPC 服务器进程用于侦听 RPC 的 TCP/IP 端口。
  • HttpProxy 可选,指定在 RPC 客户端网络上的 HTTP 代理服务器,例如,Microsoft Proxy Server。如果已选择代理服务器,而没有指定端口号,那么,默认情况下,如果不请求 SSL,则 RPC 存根将使用端口 80,如果指定 SSL 则使用端口 443。
  • RPCProxy 指定充当与 RPC 服务器联系的代理的 IIS 计算机的地址和端口号。只有当 RPC 服务器进程与 RPC 代理驻留在不同计算机上时,才需要指定该设置。如果不指定端口号,那么,默认情况下,如果不指定 SSL 则 RPC 客户端存根将使用端口 80,如果指定 SSL (HTTPS),则使用端口 443。

RPC 虚拟目录

尽管 RPC over HTTP 是 Windows Server 2003 功能而不是 IIS 功能,但它是作为运行在协议虚拟服务器内部的 Internet 服务器应用程序编程接口 (ISAPI) 扩展而实现的。当安装 RPC 代理服务时,将在默认网站下面创建 RPC 虚拟目录。应当将 SSL 与基本身份验证配合使用。

RPC over HTTP 和 Microsoft Exchange Information Store 服务

虽然 RPC over HTTP 被实现为协议虚拟服务器,但 ExIPC 并未参与通信进程。使用 RPC over HTTP 的 Outlook 客户端被视为常规 MAPI 客户端,并且它们使用与 Exchange 信息存储的 MAPI 接口来与 Microsoft Exchange Information Store 服务通信。