尽管 Visual Studio 和 .NET Framework 2.0 为基本 Web 服务的开发提供了支持,但最近几年,客户还是要求高级 Web 服务功能,包括端对端安全、路由和邮件附件。Web Services Enhancements (WSE) 3.0 是全面支持 .NET Framework 2.0 的扩展版本和 Visual Studio 2005 的插件,用于构建安全的 Web 服务。WSE 3.0 发布于 2005 年 11月,正好与 Visual Studio 2005 同时发布,实现最新的行业支持 WS-* 规范。
现在,WS-Security 规范系列在很大程度上已日臻完善,WSE 3.0 的主要目标是为开发人员提供这些安全规范的第一个完整实现。因此,WSE 3.0 支持下列 WS-* 规范(请参阅附录以了解版本信息):
XML、SOAP、WSDL
WS-Security
WS-Trust
WS-SecureConversation
WS-Addressing
MTOM
对安全的关注也是 WSE 3.0 支持 MTOM 的原因之一。直接 Internet 消息封装 (Direct Internet Message Encapsulation, DIME) 中的安全附件要求传输级别的安全性,然而可通过使用传输级或消息级的安全性对 MTOM 附件加以保护。结果就是开发人员可以利用消息级别安全性的某些优势,例如端对端安全和对不同凭证类型的支持,来保护 Web 服务附件。
WSE 3.0 同时还引入了一套“交钥匙”安全方案。这些方案是高级别安全构造块,能够确保底层 Web 服务通信的安全,让开发人员集中精力于服务的业务逻辑。新的配置编辑器也让创建和维护 WSE 策略文件更为轻松。GUI 向导创建和配置交钥匙方案,无需开发人员再去查看策略文件中的 XML 表示。WSE 3.0 还可通过策略来定义安全会话,如此任何给定服务都可担当安全性令牌服务 (Security Token Service, STS) 角色。
WSE 3.0 版本的主要目标之一是提供到 WCF 的路径,为构建安全、可靠和事务式 Web 服务提供统一的编程模型和运行时。采用交钥匙安全方案后,WSE 3.0 即具备与 WCF 的互操作性,并可使用 WCF 来提供一些对等编程模型。
ASMX 2.0 支持 WS-I Basic Profile 1.1 和 SOAP 1.2。这意味着,它支持 XML 1.0、XML 架构定义 (XSD)、Web 服务描述语言 (WSDL)、SOAP 1.1、SOAP 1.2 以及编译时的基本配置文件一致性验证。WSE 3.0 通过提供对某些更高级的 WS-* 协议的支持,来补充 ASMX 2.0 的功能。目前,当您需要使用以下一个或多个功能来增强 ASMX 服务时,通常会使用 WSE 3.0:
? 基于消息的安全性 (WS-Security)
? 高效的二进制数据传输 (MTOM)
? 可选的宿主环境
? 自定义声明性策略管道
基于消息的安全性和 MTOM 是人们在 ASMX 项目中启用 WSE 的两个主要原因。还有一个好消息是,您不必修改服务逻辑就可以这样做。WSE 3.0 通过 ASMX 提供的扩展点来利用 ASMX。这使您能够利用各种 WSE 3.0 功能,而不必学习新的编程模型 — 您需要做的就是运行 WSE 设置工具并选择所需的选项。
在 ASMX 项目中启用 WSE 3.0 的另一个原因是,要利用它的策略管道扩展性模型。WSE 使您能够插入对进入和离开终结点的 SOAP 消息执行预处理和后续处理的筛选器。该扩展点比 ASMX SOAPExtension 框架更易于使用,因为它提供的功能可以创建能够与 WSE 提供的现有声明性安全策略相结合的自定义声明性策略。您决定“启用”WSE 可能只是为了具有该扩展选项,或者至少是为了使用改进的 SOAP 消息诊断跟踪功能。
有了 WSE 2.0,大多数开发人员在需要进行自定义宿主时就抛弃了 ASMX。现在,WSE 3.0 使您能够执行 ASMX 类型的自定义宿主,这就更没有问题了。导致您单独使用 WSE 消息处理 API 的主要情况是,需要实现可选的消息交换模式,例如,双工通信、多播或发布/订阅情况。消息处理类 SOAPSender 和 SOAPReceiver 使您能够实现任何类型的高级消息处理模式。
WSE 3.0介绍
http://msdn2.microsoft.com/en-us/library/Aa529246.aspx