【问题标题】:Which proper WCF binding to use?使用哪个正确的 WCF 绑定?
【发布时间】:2012-04-05 08:15:42
【问题描述】:

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

  1. 部署在Intranet支持模拟/委托
  2. 可与使用未知技术的客户端进行互操作
  3. 支持客户端和服务器之间的事务流
  4. 尽可能使用证书(放弃“传输”安全模式)

我们需要在 basicHttpBindingwsHttpBinding 之间做出选择。

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

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

提前致谢

【问题讨论】:

  • 请参阅this other SO question on the topic 以获得答案
  • 对于内部 .NET 客户端,您可以使用一个带有 netTcpBinding 的端点 - 快速、紧凑、易于使用。对于非 .NET 客户端,您可以设置 wsHttpBinding 端点。一项服务 - 两个端点 - WCF 的强大功能之一!

标签: wcf wcf-binding basichttpbinding wshttpbinding


【解决方案1】:

如果要支持事务流,则需要使用wsHttpBinding。 basicHttpBinding 就是这样一个basic 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 生成一个工作代理,那么您应该能够从任何客户端使用该服务。

【讨论】:

  • Java wsimport 工具的绝妙建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多