2010-08-11 101 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