附录
FrontPage 远程过程调用协议
FrontPage 客户端和 FrontPage
服务器扩展使用基于 HTTP 和 HTML 的远程过程调用 (RPC)
协议来相互通讯。当 FrontPage
客户端需要服务器扩展做某件事情的时候,客户端会向服务器发送一个
POST 请求。
这个 POST 请求会被传送到站点里面正在创作的三个 DLL 之一。
- 浏览阶段操作的请求被发送到 Shtml. dll 或 Shtml.exe。
- 创作阶段操作的请求被发送到 Author.dll
- 管理操作的请求被传送到 Admin.dll
POST 请求的正文包括形式为 「method=command」 的命令,其中 「command」
是指 FrontPage 客户端要服务器执行的命令。
服务器扩展执行命令并返回一个 「200 OK」
响应以响应请求。响应消息的正文包含该命令所返回的信息,该信息按嵌套的名称/值对的形式表示。
消息正文使用以下通用格式:
<html> <head></head> <body> <p>item1=value <p>item2=value <p>item3=<ul> <li>item3.1=value <li>item3.2=value <ul> <li>item3.3.1=value <li>item3.3.2=value </ul> </body> </html>
这里有一个 FrontPage 客户 /服务器扩展部分对话的例子来解释 RPC
协议如何工作。在这个例子中, FrontPage
客户和运行服务器扩展的服务器创建一个连接,并确定当前运行的服务器扩展的版本。

为解释清楚,这段程序已作了些编辑并省略了不重要的部分。
GET /_vti_inf.html HTTP/1.0 Date: Fri, 17 Apr 1998 02:05:31 GMT User-Agent: Mozilla/2.0 (compatible; MS FrontPage 3.0) Host: fp4
服务器返回文件作为响应。客户端读取响应并找出与 「FPShtmlScriptUrl」
相关的值,这个值告诉客户端将 POST
请求发送到何处以执行浏览阶段命令。现在它已经知道要将 POST
请求发送到何处,它会询问服务器所运行的服务器扩展的版本:
POST /_vti_bin/shtml.dll/_vti_rpc HTTP/1.0 User-Agent: MSFrontPage/4.0 Content-Type: application/x-www-form-urlencoded method=server version
服务器扩展处理 「method=server version」 请求并且返回其版本信息:
HTTP/1.0 200 OK Server: Microsoft-IIS/3.0 Date: Fri, 17 Apr 1998 02:04:43 GMT Content-type: application/x-vermeer-rpc <html><head><title>RPC packet</title></head> <body> <p>method=server version <p>server version= <ul> <li>major ver=3 <li>minor ver=0 <li>phase ver=2 <li>ver incr=926 </ul> </body> </html>
|