技术开发 频道

将 WSE 3.0 Web 服务迁移到 WCF


【IT168技术文档】

  将 WSE 3.0 Web 服务迁移到 Windows Communication Foundation (WCF) 的好处包括:提高性能,支持其他传输协议、其他安全方案和 WS-* 规范。 在从 WSE 3.0 迁移到 WCF 之后,Web 服务的性能最多可以提高 200% 到 400%。 有关 WCF 所支持的传输协议的更多信息,请参见选择传输方式。 有关 WCF 所支持的方案的列表,请参见常用安全方案。 有关 WCF 所支持的规范的列表,请参见 Web 服务协议互操作性指南。

  以下几节提供了有关如何将 WSE 3.0 Web 服务的特定功能迁移到 WCF 的指导。
常规信息

  WSE 3.0 和 WCF 应用程序领域包括网络级互操作和一组常用术语。 WSE 3.0 和 WCF 应用程序可以基于二者均支持的 WS-* 规范集进行网络级互操作。 在开发 WSE 3.0 或 WCF 应用程序时,需要使用一组常用的术语,例如,WSE 中的关守安全断言的名称以及身份验证模式的名称。

  尽管 WCF 和 ASP.NET 或 WSE 3.0 编程模型之间存在许多相似方面,但它们仍然是不同的。 有关 WCF 编程模型的详细信息,请参见基本编程生命周期。
Note注意:

  若要将 WSE Web 服务迁移到 WCF,可以使用 ServiceModel Metadata Utility Tool (Svcutil.exe) 工具来生成客户端。 另一方面,该客户端还包含可以用作 WCF 服务起点的接口和类。 所生成的接口将 OperationContractAttribute 属性 (attribute) 应用于将 ReplyAction 属性 (property) 设置为 * 的协定的成员。 当 WSE 客户端调用具有此设置的 Web 服务时,将引发以下异常:“Web.Services3.ResponseProcessingException:WSE910:在处理响应消息的过程中发生错误,可以在内部异常中找到该错误”。 若要缓解此问题,可以将 OperationContractAttribute 属性 (attribute) 的 ReplyAction 属性 (property) 设置为非 null 值,例如 http://Microsoft.WCF.Documentation/ResponseToOCAMethod

  安全性
  使用策略文件保护其安全的 WSE 3.0 Web 服务

  WCF 服务可以使用配置文件来保护服务的安全,该机制与 WSE 3.0 策略文件相似。 在 WSE 3.0 中,当使用策略文件来保护 Web 服务的安全时,可以使用关守安全断言或自定义策略断言。 关守安全断言严格映射到 WCF 安全绑定元素的身份验证模式。 WCF 身份验证模式和 WSE 3.0 关守安全断言不仅名称相同或相似,而且还使用相同的凭据类型来保护消息的安全。 例如,WSE 3.0 中的 usernameForCertificate 关守安全断言映射到 WCF 中的 UsernameForCertificate 身份验证模式。 下面的代码示例演示一个使用 WSE 3.0 中的 usernameForCertificate 关守安全断言的最小策略如何映射到自定义绑定中使用的 WCF 中的 UsernameForCertificate 身份验证模式。

  WSE 3.0
<policies> <policy name="MyPolicy"> <usernameForCertificate messageProtectionOrder="SignBeforeEncrypt" requireDeriveKeys="true"/> </policy> </policies>
  WCF
<customBinding> <binding name="MyBinding"> <security authenticationMode="UserNameForCertificate" messageProtectionOrder="SignBeforeEncrypt" requireDerivedKeys="true"/> </binding> </customBinding>
  若要将策略文件中指定的 WSE 3.0 Web 服务的安全设置迁移到 WCF,必须在配置文件中创建一个自定义绑定,并且必须将关守安全断言设置为它的等效身份验证模式。 此外,当 WSE 3.0 客户端与服务进行通信时,必须将自定义绑定配置为使用 2004 年 8 月版 WS-Addressing 规范。 当所迁移的 WCF 服务不需要与 WSE 3.0 客户端进行通信并且必须保持同等安全性时,请考虑使用 WCF 的具有适当安全设置的系统定义绑定,而不是创建自定义绑定。

  下表列出了 WCF 中的 WSE 3.0 策略文件和等效自定义绑定之间的映射。
<usernameOverTransportSecurity /> <customBinding> <binding name="MyBinding"> <security authenticationMode="UserNameOverTransport" /> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> <mutualCertificate10Security /> <customBinding> <binding name="MyBinding"> <security messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" authenticationMode="MutualCertificate" /> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> <usernameForCertificateSecurity /> <customBinding> <binding name="MyBinding"> <security authenticationMode="UsernameForCertificate"/> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> <anonymousForCertificateSecurity /> <customBinding> <binding name="MyBinding"> <security authenticationMode="AnonymousForCertificate"/> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> <kerberosSecurity /> <customBinding> <binding name="MyBinding"> <security authenticationMode="Kerberos"/> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> <mutualCertificate11Security /> <customBinding> <binding name="MyBinding"> <security authenticationMode="MutualCertificate"/> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding>
0
相关文章