使用 SOAP 扩展修改 SOAP 消息
SOAP扩展允许通过更改往返于Web服务或Web服务客户端的SOAP消息来增加Web服务功能……
SOAP 扩展允许开发人员通过更改往返于 Web 服务或 Web 服务客户端的 SOAP 消息来增加 Web 服务的功能。例如,您可以实现加密或压缩算法以便与现有的 Web 服务一起运行。
要理解 SOAP 扩展如何工作,首先理解 Web 服务的生存期是很有用的。
下图概要介绍了从客户端到 Web 服务的调用的主要阶段。
Web 服务生存期剖析
正如您看到的,.NET Framework 在 Web 服务计算机和 Web 服务客户端计算机上的各阶段中对 XML 进行序列化和反序列化。可以将 SOAP 扩展插入基础结构以在每个序列化和反序列化阶段的之前和之后都检查或修改 SOAP 消息。例如,加密 SOAP 扩展可能在 .NET Framework 序列化客户端参数之后加密 SOAP 消息的 XML 部分,然后在 .NET Framework 反序列化 SOAP 消息之前在 Web 服务器上解密 SOAP 消息。这些阶段(SOAP 扩展可能在这些阶段中检查或修改 SOAP 消息)是在 SoapMessageStage 枚举中定义的。在这种情况下,在 AfterSerialize 阶段加密 SOAP 扩展,在 BeforeDeserialize 阶段解密 SOAP 扩展。
通常,当 SOAP 扩展修改 SOAP 消息的内容时,必须在客户端和服务器上都进行修改。也就是说,如果在客户端上运行了 SOAP 扩展并加密了 SOAP 消息,则相应的 SOAP 扩展必须在服务器上解密 SOAP 消息。如果未解密该 SOAP 消息,则 ASP.NET 基础结构不能将 SOAP 消息反序列化为对象。
当然,不修改 SOAP 消息的 SOAP 扩展(例如仅记录 SOAP 消息的 SOAP 扩展)可以只在客户端或服务器上运行。在这种情况下,接收方接收与在 SOAP 扩展不运行并且 ASP.NET 基础结构可以反序列化 SOAP 消息的情况下相同的 SOAP 消息。另外,如果 SOAP 扩展不以一种使反序列化不能实现的方式对 SOAP 进行修改,则 SOAP 扩展不需要既运行在客户端又运行在服务器上。
- 本文关键词:


