扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:佚名 来源:Microsoft 2007年11月17日
关键字: Web Services 管道技术 软件
下载 Web Services Enhancements 1.0 for Microsoft .NET(英文)。
简介Web Services Enhancements 1.0 for Microsoft .NET (WSE) 是一个类库,用于实现高级 Web 服务协议。WSE 的体系结构模型基于处理入站和出站 SOAP 消息的过滤器管道。过滤器可以与 ASP.NET Web 服务基础结构集成在一起,也可以单独使用。本文深入探讨了 WSE 管道技术的工作原理,介绍了有关单独过滤器和过滤器管道的工作原理、配置默认管道的方法、创建自定义过滤器的方法以及 DIME 适合图片的特点。
以过滤器为中心的模型WSE 是一种将高级 Web 服务协议应用到 SOAP 消息的引擎。它要求向出站 SOAP 消息写入标头,从入站 SOAP 消息读取标头;它还要求转换 SOAP 消息正文。例如,按照 WS-Security 规范中定义的那样加密出站消息正文和解密入站消息正文。在 WSE 中,这种功能通过过滤器来实现。输出过滤器向消息写入标头,输入过滤器从消息读取标头并检查标头的有效性。此外输出和输入过滤器都可以转换消息的内容。图 1 说明了 WSE 过滤器模型。
图 1:Web Services Enhancements 的过滤器模型
使用单独的过滤器了解 WSE 如何使用过滤器的最好方法是从一个简单的例子开始。WSE 提供了一对过滤器,用于读写时间戳标头。时间戳标头包含了一些元素,用来表示消息的创建时间和过期时间,指明消息的周期以及何时可以认为该消息失效。时间戳过滤器在 Microsoft.Web.Services.Timestamp 命名空间中定义。顾名思义,TimestampOutputFilter 是一个输出过滤器,用于向 SOAP 消息写入时间戳标头;而 TimestampInputFilter 是一个输入过滤器,用于从 SOAP 消息读取时间戳标头。以下是它们各自的定义:
public class TimestampOutputFilter : SoapOutputFilter public class TimestampInputFilter : SoapInputFilter |
两个类都有一个 ProcessMessage 方法,该方法带有一个 SoapEnvelope 类型的参数。Microsoft.Web.Services.SoapEnvelope 类是标准 .NET XML DOM API System.Xml.XmlDocument 的扩展。它具有验证逻辑,可以验证包含有效 SOAP 消息的文档内容;它还具有一些快捷方法和属性,可以创建和访问消息的特定部分,即 Envelope、Header 和 Body 元素。
以下是一个使用时间戳过滤器的简单应用程序。
static void Main(string[] args) // 打印原始消息 // 创建时间戳输出过滤器 // 打印输出过滤后的消息 // 创建时间戳输入过滤器 // 处理消息,读取时间戳标头 // 打印输入过滤的消息 |
本程序首先创建一个 SoapEnvelope 对象,并添加空白的消息正文。然后,创建一个 TimestampOutputFilter 并使用它来处理 SoapEnvelope,向消息写入时间戳标头。最后,该程序创建一个 TimestampInputFilter 并使用它来处理 SoapEnvelope,从消息读取时间戳标头。程序执行的每一步都将消息内容打印到控制台。以下是输出结果(已经过格式编排)。
原始消息:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body/> </soap:Envelope> |
输出过滤后的消息:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <wsu:Timestamp xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"> <wsu:Created>2002-11-14T19:03:27Z</wsu:Created> <wsu:Expires>2002-11-14T19:08:27Z</wsu:Expires> </wsu:Timestamp> </soap:Header> <soap:Body /> </soap:Envelope> |
输入过滤后的消息:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> </soap:Header> <soap:Body /> </soap:Envelope> |
原始的消息只包含一个空白的 Body 元素,没有其他内容。当 TimestampOutputFilter 处理消息时,它用表示消息创建时间和过期时间的元素写入时间戳标头。而当 TimestampInputFilter 处理消息时,则读取时间戳标头。如果到了过期时间,TimestampInputFilter 将抛出一个异常。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者