2010-08-11 74 views
3

您如何开发Web服务以及如何创建WSDL?你在WSDL中包含什么?由开发人员无能打破Web服务互操作性?

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

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

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

我也有其他观点的问题:Java开发人员必须使用.NET中创建的Web服务时遇到什么问题?

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

+0

psst ...“残疾”是指当您需要轮椅时。大概你的意思是“无能”。 – 2010-08-11 10:33:31

+0

谢谢,我改变了标题。 – 2010-08-11 10:55:50

回答

1

你究竟期待什么样的答案?关于互操作性问题或Web服务规范的复杂性的长篇大论?或者确认简单的事物确实可以互操作?

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

但是一旦我们离开简单的场景,它就会变得混乱。安全性,认证,MTOM,是一场噩梦,至少从微不足道。

还有很多在Javaland的工具和实现。我知道Sun Metro堆栈背后的团队做了一项伟大的工作,并投入了大量精力,使其能够与Microsoft进行互操作。然而,我不知道其他实现或工具。

我觉得你有能力在这个维基答案中提供你自己的见解,感觉自由:How to write web services in java

+0

感谢您的回复,我会毫不犹豫地检查维基答案。这个问题是问你如何描述你的服务以及为什么描述通常不完整?我同意WS- *规范很复杂,但是当您必须与WSDL中未正确描述的服务集成并且您没有工作客户端来检查SOAP消息的正确格式时,这是真正的噩梦。 – 2010-08-11 13:06:43

1

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

+0

是的,这是非常有用的功能。在Java开发工具中是否很常见? – 2010-08-11 13:12:59

+0

Metro是Java 6的一部分,所以是的。 – 2010-08-11 14:59:16

1

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

+0

但是,那些自动生成的WSDL是否包含用于安全性,可靠消息传递等高级设置的WS-Policies,还是只描述Web服务方法和传输的消息?这就是我想说的。如果您使用WS-Security和WSS-UserName令牌配置文件,则必须以某种方式描述它。通过WS-Policy可以实现,但WSDL中通常缺少这些信息。 – 2010-08-11 13:47:18