从WCF到Java Webservices的互操作似乎出奇的问题。有什么好的资源吗?


13

在最近的项目中,我们基于.Net的开发团队的任务是与全球各地基于Java的Web服务进行集成,我们确实遇到了很多令人惊讶的事情(当然,我们再也不会感到惊讶了)因为WCF生成的XML不被Java服务接受。

似乎也没有太多关于此主题的信息,我们从Yaron Nave出色的WCF博客http://webservices20.blogspot.com以及MSDN WCF论坛http:上 获得了一些不错的技巧。//social.msdn.microsoft.com/Forums/zh-CN/wcf/threads

这里有没有人真的感觉到自己对此有所了解,并且知道有关该主题的权威资源?对书籍,博客或任何网站上的提示感兴趣。

编辑:
我对设置此线程上可接受的答案感到
不满意,因为两个最佳答案中的每一个都有一些价值:1.我们可能最终会做更多的HTTP Webrequest实现,而不是与WCF对抗。
2.但是WCF Express Interop Bindings 1.0也是一个非常明智的技巧。


我对WCF一无所知,但是它是在生成基于SOAP的XML数据包还是仅由RESTful服务使用的XML块?
马丁·维尔堡

1
返回XML,JSON或RDF + XML。
艾伦B

您能否举一些WCF客户端和Java Web服务之间出了什么问题的示例?您是说webservice = soap还是其他名称?
2012年

1
进入具体问题不在此问题的范围内,您可以查看我在堆栈溢出时的个人资料作为示例。在这里,我只想听听其他人是否与基于其他平台的Web服务交互的WCF(或一般.Net)客户端有相同的问题。
比昂

Answers:


15

啊,是的……SOAP,自负的计算圣杯。一种通用语言,承诺在世界各地的系统之间进行互操作。

然后,您将了解Java与PHP和.NET上的SOAP实现之间的区别。甚至在WebSphere SOAP服务和Apache SOAP客户端之间。没关系处理不同的WS-I兼容性标准。现在,请告诉我为什么您需要针对为兼容性而构建的协议的兼容性标准,然后谈论具有讽刺意味的(我的意思是真正的讽刺,而不是Alanis Morrissette品牌的讽刺)。

在使两个SOAP端点都处于同一平台上时,您唯一不会遇到问题的地方是它们都在同一平台上,并且在大多数情况下,该平台将具有更有效的远程操作协议。

在这里我要说的是,在大多数情况下,SOAP是无用的。现在使用小写肥皂,我每天都用它,我很感谢大多数人都这样做。

话虽这么说,如果你坚持要把头撞在砖墙上。这是一个很好的起点。Microsoft具有一组绑定,可以与大多数主要Java服务器进行互操作。当然,有趣的部分是找出哪些功能与您要集成的哪些服务一起工作。


5
SOAP是新的CORBA :)
gbjbaanb 2012年

我似乎在客户端集成项目中经常以某种方式成功地做到这一点。YMMV显然。
David J. Liszewski 2015年

9

我认为您的观察非常准确。基于XML通信的高层次的实现通常是不同的平台不兼容,即使他们两个所谓的“SOAP”。实施中的细微差别(可能都在所实施的标准范围内)会在实际使用中产生问题。

我对服务提供商的建议: 使用简单的实现,而不是非常复杂且理论上更好的实现。例如,如果不需要,则不要包括任何极其复杂的身份验证方案。

我对服务使用者(我想是您)的建议: 在与您不同的平台上与高层实现进行通信时,请降级为较低级别的实现。如果您只想弄清楚要发送的实际XML是什么,然后使用正常的良好编码实践来完成此操作,而又不是坚持使用自己平台的高级实现的另一种选择,那么这突然变得非常简单。

希望它不是太抽象。简而言之,当您在连接到Java平台的.NET平台上时,您可能想简单地在HttpWebRequest中组装标头和xml并以这种方式发送。


4

您在使用PHP Web服务时也会遇到同样的问题。

我们对此的唯一答案是将协议类型更改为REST而不是SOAP。我们从来没有使SOAP的东西能够互操作,对于Simple来说,是如此的多!


在大多数情况下,我们绝对没有办法以任何方式更改现有的Web服务,无论如何,我们都必须使用SOAP连接到它们。因此,恐怕没有答案为您解决。;)
比昂(Bjørn

1
在这种情况下,“没有选择以任何方式更改现有的Web服务”;振作起来,您会遇到困难。我刚从两周的头痛中恢复过来,试图从java / android调用wcf / soap Web服务。我的救助是,我(与您不同)可以访问该服务,并使其公开REST / JSON终结点。要走的路。如果你可以的话。
2012年

@Bjørn哦,很好,那么很抱歉告诉您,但是使用技术术语,您很烦。我猜唯一的答案是停止使用WCF并使用其他SOAP客户端。
gbjbaanb 2012年

我们的团队正在为您的回答大笑和哭泣。:)谢谢先生们。
比昂
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.