开发人员无能为力破坏了Web服务的互操作性?

您如何开发Web服务以及如何创建WSDL? 你在WSDL中包含了什么?

这个问题是基于开发人员没有正确使用WSDL的观察。 WSDL描述了该服务。 我认为服务描述应该包括使用该服务所需的一切。 因此,如果我使用任何WS- *协议,我必须包含描述该用法的WS-Policy。

我经常访问与WCF相关的MSDN论坛 – 用于创建Web服务的.NET API。 几乎每天都会出现类似的问题:“我有Java安全的Web服务,我需要在.net客户端中使用该服务”。 第一个答案通常要求该Java Web服务的WSDL。 不幸的是,WSDL几乎每次只描述方法和消息。 安全信息完全缺失=> WSDL没有描述该服务,因为基于WSDL中的信息,您无法使用该服务!

Java世界的情况如何? 你使用WS政策吗? 如果您没有足够的技巧来编写WSDL,您是否有支持工具来为您创建WSDL? 当一个团队必须使用其他团队提供的服务时,您如何分享有关服务的信息?

我还从其他角度提出了一些问题:Java开发人员在使用.NET创建的Web服务时遇到了哪些问题?

在许多不同平台必须通过Web服务进行通信的项目中,我觉得这很痛苦。 开发人员不共享单一语言(应该是带有策略的WSDL),并且大多数时候他们无法解释他们使用的WS- *function,因为它被某些API覆盖。 如果我们包含这样一个事实,即API中通常只支持有限的一组WS- *特性,那么我们就完全搞乱了。 SOAP消息的逆向工程非常耗时。

你到底想要什么样的答案? 关于互操作性问题或Web服务规范的复杂性的长期咆哮? 或确认简单的事情确实可以互操作?

在开发项目之后,我们不得不提供用Java编写的Web服务,以便由另一个团队在.NET中使用,简单的工作非常好。

但是一旦我们离开这个简单的场景,它就会开始变得混乱。 安全,身份validation,MTOM,是一场噩梦,至少是因为琐事。

Javaland中有很多工具和实现。 我知道Sun Metro堆栈背后的团队做了很多工作,并投入了大量精力来使事情与微软互操作。 但是我不知道其他实现或工具。

我觉得你有能力在这个wiki答案中提出自己的见解,感觉自由: 如何用java编写Web服务 。

Metro堆栈根据需要自动生成给定Web服务的WSDL。 很有用。

我使用过的每个Web服务堆栈,无论是Java还是.Net都是从代码中自动生成WSDL的。 我听说过一些,我认为Spring-WS是Java世界中的一个,它应该从WSDL生成服务代码,或者他们称之为“契约优先服务开发”,但我没有使用它然而。