有谁知道使用WCF为非.NET客户端公开SOAP接口的任何问题吗?

时间:2020-03-06 14:29:27  来源:igfitidea点击:

有谁知道使用WCF为非.NET客户端公开SOAP接口的任何问题吗?例如与其他SOAP库不兼容吗?

这样一来,便可以将SOAP接口公开给第三方,以便与我们的软件集成。

解决方案

通常,一切正常。显然,这将取决于我们使用的客户端,并不是每个人都正确实现SOAP。

P.S.如果我们希望得到更具体的答案,可以请改写问题?

WCF遇到的一些问题领域:

  • 它生成WSDL,该WSDL跨越多个URL。也就是说,模式的一部分在一个URL上,另一部分在不同的URL上,依此类推。"主要" WSDL URL(一个在服务名后仅带有"?WSDL"的URL)通过xsd:import引用了其他URL。元素。许多SOAP客户端(例如.NET Delphi之前的版本)在使用这种习语时都遇到了巨大的困难。因此,我们实际上必须"展平"WSDL,以便在实践中实现互操作性。这里给出一种解决方案。
  • WCF生成XML名称空间的方式与ASMX Web服务不同。 WCF倾向于将任何服务或者数据协定放入其自己选择的名称空间中。同样,一些SOAP客户端对此有困难。我们可以通过向ServiceContract和DataContract属性添加显式命名空间来提高互操作性级别。
  • 许多SOAP客户端无法像WCF客户端那样很好地处理错误。例如,代理生成代码不会为WSDL中声明的错误创建客户端对象。当然,故障仍然会传递给客户端,但是客户端必须做更多的工作才能确定故障是什么类型。

WS- *标准堆栈的版本也可能是互操作性问题,例如某些Java实现支持的WS-Addressing(2003)版本,例如WCF不支持Oracle BPEL,后者支持较早的草案和1.0版本,但不支持较早的版本2003年一