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

时间:2010-08-11 10:26:33

标签: java .net wcf web-services wsdl

如何开发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- *功能,因为它被某些API覆盖。如果我们包含这样一个事实,即API中通常只支持有限的一组WS- *特性,那么我们就完全搞乱了。 SOAP消息的逆向工程非常耗时。

3 个答案:

答案 0 :(得分:1)

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

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

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

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

我觉得你有能力在这个wiki答案中提出自己的见解,请随意:How to write web services in java

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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