使用 SOAP 扩展修改 SOAP 消息
作者: , 出处:IT专家网社区, 责任编辑: 叶江,
2007-01-22 15:00
SOAP扩展允许通过更改往返于Web服务或Web服务客户端的SOAP消息来增加Web服务功能……
调用 SOAP 扩展方法的顺序
既然已经了解了 SOAP 扩展重写的方法,那么现在了解一下,在整个 Web 服务方法调用过程中,Web 服务基础结构何时调用 SOAP 扩展方法。下面的步骤假设 SOAP 扩展既运行于客户端又运行于服务器上。如果 SOAP 扩展不同时运行于客户端和服务器上,则 .NET Framework 将忽略与运行于其中之一上的 SOAP 扩展相关联的步骤。
客户端准备请求消息
- 客户端对代理类调用方法。
- 在客户端上创建 SOAP 扩展的新实例。
- 如果这是第一次在客户端上用该 Web 服务执行该 SOAP 扩展,则对运行于客户端上的 SOAP 扩展调用 GetInitializer 方法。
- 调用 Initialize 方法。
- 调用 ChainStream 方法。
- 在 SoapMessageStage 设置为 BeforeSerialize 的情况下调用 ProcessMessage 方法。
- 客户端计算机上的 ASP.NET 将 Web 服务方法的参数序列化为 XML。
- 在 SoapMessageStage 设置为 AfterSerialize 的情况下调用 ProcessMessage 方法。
- 客户端计算机上的 ASP.NET 通过网络将 SOAP 消息发送到承载该 Web 服务的 Web 服务器上。
服务器端接收请求消息并准备响应
- Web 服务器上的 ASP.NET 接收该 SOAP 消息。
- 在 Web 服务器上创建 SOAP 扩展的新实例。
- 在 Web 服务器上,如果这是第一次在服务器端使用该 Web 服务执行该 SOAP 扩展,则对运行于服务器上的 SOAP 扩展调用 GetInitializer 方法。
- 调用 Initialize 方法。
- 调用 ChainStream 方法。
- 在 SoapMessageStage 设置为 BeforeDeserialize 的情况下调用 ProcessMessage 方法。
- ASP.NET 反序列化 XML 中的参数。
- 在 SoapMessageStage 设置为 AfterDeserialize 的情况下调用 ProcessMessage 方法。
- ASP.NET 创建实现 Web 服务的类的新实例并调用 Web 服务方法,同时传入反序列化的参数。该对象驻留在与 Web 服务器相同的计算机上。
- Web 服务方法执行其代码,最终会设置返回值和任何输出参数。
- 在 SoapMessageStage 设置为 BeforeSerialize 的情况下调用 ProcessMessage 方法。
- Web 服务器上的 ASP.NET 将返回值和输出参数序列化为 XML。
- 在 SoapMessageStage 设置为 AfterSerialize 的情况下调用 ProcessMessage 方法。
- ASP.NET 通过网络将 SOAP 响应消息发送回 Web 服务客户端。
客户端接收响应消息
- 客户端计算机上的 ASP.NET 接收 SOAP 消息。
- 在 SoapMessageStage 设置为 BeforeDeserialize 的情况下调用 ProcessMessage 方法。
- ASP.NET 将 XML 反序列化为返回值和任何输出参数。
- 在 SoapMessageStage 设置为 AfterDeserialize 的情况下调用 ProcessMessage 方法。
- ASP.NET 将返回值和任何输出参数传递到代理类的实例。
- 客户端接收返回值和任何输出参数。
- 本文关键词:

