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

3
如何开发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,是否有支持工具可供您创建?当一个团队必须使用其他团队提供的服务时,您如何共享有关服务的信息?
我还有另一个问题:当Java开发人员必须使用.NET创建的Web服务时,他们遇到了什么问题?
在许多项目中,不同的平台必须通过Web服务进行通信,这让开发人员感到非常痛苦。开发人员没有共享单一语言(应该是带有策略的WSDL),而且大多数时间他们无法解释他们使用了哪些WS-*功能,因为它被某个API覆盖了。如果我们考虑到只有有限的WS-*功能集通常受到API支持,那么就会出现完全混乱的情况。反向工程SOAP消息确实非常耗时。

嘘...“残疾”是指你需要轮椅。你可能是想说“无能”。 - Michael Borgwardt
3个回答

1
你究竟希望得到什么样的回答?是关于互操作性问题或网络服务规范复杂性的冗长抱怨?还是确认简单事物确实具有互操作性的证明?
在一个项目中,我们不得不编写用Java编写的Web服务以供另一个团队在.NET中使用。简单的东西运作得相当不错。
但是一旦离开简单场景,情况就开始变得混乱起来。安全、身份验证、MTOM都是噩梦,至少远非易事。
在Javaland中有很多工具和实现。我知道Sun Metro堆栈背后的团队做了大量的工作,并投入了大量的精力,使其与Microsoft的互操作性也得以实现。但我不知道其他实现和工具的情况。
如果您觉得自己有足够的见解来为这个维基答案提供帮助,请随意查阅:如何在Java中编写Web服务

谢谢回复,我一定会查看那个维基百科的答案。这个问题是在询问您如何描述您的服务以及为什么描述通常不完整?我同意WS-*规范很复杂,但当您必须与WSDL中没有正确描述且没有工作客户端来检查SOAP消息正确格式的服务集成时,它真的是一场噩梦。 - Ladislav Mrnka

1

Metro堆栈可以按需自动生成给定Web服务的WSDL。非常有用。


是的,那是非常有用的功能。在Java开发工具中它很常见吗? - Ladislav Mrnka
Metro是Java 6的一部分,所以是的。 - Thorbjørn Ravn Andersen

1

我使用过的每个Web服务堆栈,无论是Java还是.Net,都是从代码自动生成WSDL。我听说过一些在Java世界中的框架,比如Spring-WS,它可以从WSDL生成服务代码,或者所谓的“契约优先服务开发”,但我还没有使用过。


但是,这些自动生成的WSDL文件是否包含高级设置(如安全性、可靠消息等)的WS策略,还是仅描述Web服务方法和传输的消息?这就是关键所在。如果您使用WS-Security和WSS-UserName令牌配置文件,则必须以某种方式进行描述。这可以通过WS-Policy来实现,但这些信息通常在WSDL中缺失。 - Ladislav Mrnka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接