Internet 浏览器程序一般都使用Hypertext Transport Protocol (HTTP) 作为浏览World Wide Web的主要方法。因此,在今天HTTP 在大多数计算机上被广泛使用。微软已经扩展了Internet Information Server (IIS) 的能力来使用HTTP提供远程过程调用服务。
Microsoft RPC-over-HTTP 部署(RPC over HTTP)允许RPC 客户端安全和有效地通过Internet 连接到RPC 服务器程序并执行远程过程调用。这是在一个名称为RPC-over-HTTP 代理,或简称为RPC 代理的中间件的帮助下完成的。
RPC 代理运行在IIS 计算机上。它接受来自Internet 的RPC 请求,在这些请求上执行认证,检验和访问检查,如果请求通过所有的测试,RPC 代理将请求转发给执行真正处理的RPC 服务器。通过RPC over HTTP,RPC 客户端不和服务器直接通信,它们使用RPC 代理作为中间件。选择该模型有许多原因。
使用HTTP 作为 RPC 传输
RPC-over-HTTP 让客户端程序使用Internet 来执行远距离网络上的服务器程序提供的过程。RPC over HTTP 通过已经建立的HTTP 端口来封装它的调用。这样的话,它的调用能够跨越客户端和服务器网络中的网络防火墙。
RPC over HTTP 将它的调用路由给位于 RPC 服务器网络中的RPC 代理。RPC 代理建立和维护到RPC 服务器的连接。它作为一个代理,调度到RPC 服务器的远程过程调用并通过Internet将服务器的回复发送给客户端应用程序。如下图1所示。

该图显示了客户端应用网络中的防火墙。对于RPC over HTTP 操作来说这不是必须的。然而,如果客户端网络确实有防火墙的话,它也将需要一个像Microsoft Proxy Server 的代理服务器程序。
当客户端程序使用 HTTP 作为传输发出一个远程过程调用,客户端上的RPC 执行库联系 RPC 代理。取决于RPC 客户端是否被请求使用 HTTP 或 HTTPS(HTTP 加SSL)端口80 或端口 443分别被使用。RPC 代理联系 RPC 服务器程序并建立一个TCP/IP 连接。客户端和RPC 代理通过Internet维护他们的HTTP或HTTPS 连接。客户端到RPC 代理的HTTP或HTTPS 连接能够穿越防火墙(受限于适当的访问权限)如果存在的话。接着服务器能够执行远程过程调用并通过RPC 代理将连接回复给客户端。RPC 代理是一个运行在IIS的上下文中的ISAPI 扩展。
如果客户端或服务器因为某种原因失去连接, RPC 代理将检测到并结束 RPC 会话。只要会话继续, RPC 代理将维护它到客户端和服务器的连接。它将来自客户端的远程过程调用转发给服务器,然后将来自服务器的回复发送给客户端。
RPC 客户端程序通过创建一串字符形式的绑定,能够通过Internet 封装它自己的RPC 调用:
[object_uuid@]ncacn_http:rpc_server[endpoint,HttpProxy=proxy_server:http_port,RpcProxy=rpc_proxy:rpc_port]