哪个适当的WCF绑定使用?

时间:2012-03-20 19:59:17

标签: wcf wcf-binding basichttpbinding wshttpbinding

我有以下标准来帮助我选择WCF Http绑定。我的服务需要:

  1. 部署在 Intranet 支持模拟/委派
  2. 可与使用未知技术的客户互操作
  3. 支持客户端和服务器之间的事务流程
  4. 尽可能使用证书(丢弃“传输”安全模式)
  5. 我们需要在 basicHttpBinding wsHttpBinding 之间做出决定。

    以下是关于这三点的一些注释和问题:

    1. 我相信带有“Message”安全模式的wsHttpBinding和“Windows”clientCredentialType将允许我执行委派。
    2. 在第1点中选择的实施委派的安全配置似乎确实使互操作性变得复杂,我是对的吗? WS- *标准(wsHttpBinding)绝对可以互操作,但结合“消息”安全性和“Windows”凭证,任何 WS- *兼容客户端可以调用我的服务吗?
    3. 我相信wsHttpBinding似乎是支持事务流的方式吗?
    4. 在我们的情况下,使用没有证书的“Message”安全性似乎更简单了吗?
    5. 提前致谢

1 个答案:

答案 0 :(得分:1)

如果要支持事务流,则需要使用wsHttpBinding。 basicHttpBinding实际上只是一个基本 XML Web服务。 MS声称它支持WS-I Basic Profile v1.1,但它看起来更像v1.2,因为你可以将MTOM与该绑定结合使用。

两者都具有高度的互操作性:wsHttpBinding是许多WS- *标准的实现;它不支持的是旧的仅限SOAP的客户端。这包括使用.NET 2.0样式Web服务引用的任何人,以及许多形式的基于Java的SOAP代理。

通过安全性,您可以开始获得更多wsHttpBinding带来的好处。但是,如您所述,basicHttpBinding无法执行Windows凭据,这将限制您的互操作性。我怀疑您会发现使用Windows凭据验证非Windows客户端非常困难,但正如您所指出的那样,这是实现模拟的唯一方法。对于在Windows上运行的非WCF客户端,您可能会有更多的运气,因为客户端仍然可以访问登录用户的身份验证令牌。

了解安全模式将如何影响非WCF客户端的最佳方法是发布服务的绑定并针对它们运行Java wsimport工具;如果它可以从您的WSDL生成工作代理,那么您应该能够使用来自任何客户端的服务。