2009-12-14 35 views
1

我們有一些獨立的設備將通過HTTP將XML消息發送到任意處理軟件(可能由我們開發,可能是第三方)。這些消息相對簡單,並符合現有模式。沒有具體的答覆是必要的。通過HTTP以簡單,中立的方式發送XML

我突然發現自己迷失在一個Web服務技術行業的行話中。我想要以下內容:

  1. 保持設備儘可能簡單,而不是綁定到任何特定的技術,如SOAP(除非有利)。
  2. 使其儘可能簡單地消耗消息。例如,我可以通過HTTP發送XML,但接收者必須手動處理消息(我認爲)。如果任何人都可以使用類似WSDL的工具輕鬆創建任何語言的消費者,那將是非常棒的。

請幫助填補我理解中的巨大空白......並指出我的方向正確。謝謝!

更新:我應該讓自己更清楚一點。我並不反對使用任何「技術」,我只是尋求建議來取得良好的平衡。獨立設備的功能非常有限,但足以通過HTTP發送XML消息 - 我不想將這些事情複雜化得比我更多。

然後,我當然可以只使用和手動處理XML消息.....但如果有一種方法來生成此代碼(我可以從WSDL生成代碼的方式),它會很整潔。我得到的是一個.xsd,它們自己描述這些信息,僅此而已。

回答

1

繼上面有關WADL的評論,你也可以嘗試WSDL 2.0。雖然尚未廣泛採用,但WSDL 2.0確實包含對REST風格服務的良好支持。 Apache Axis2支持WSDL 2.0,我認爲它在其WSDL2Java工具中包含支持。

+0

在閱讀此響應之前,我剛讀了一篇關於WSDL 2.0的文章。好時機! :)我認爲它可能適合。 – Boden

1

你可以編程方式做一個XML的表單發佈嗎?

C# Programmatic Form Post

+0

在那篇文章中,我沒有看到太多XML的提及。你能澄清嗎? –

+1

而不是「string postData =」item1 = 11111&item2 = 22222&Item3 = 33333「;」你會做類似「string postData =」xml = World「; –

+0

@Robert Harvey:由於XML只是一個字符串,所有服務器需要做的就是接受一個字符串並且(可能)返回一個字符串(ex 。一個XML響應)。不會贏得任何比賽的聰明,但它的工作原理,並將與任何可以通過HTTP通話(Java,C#,Delphi等)兼容 – KevinRF

2

我知道你說你想遠離特定的技術,走像SOAP,除非他們是有益的,但是那定義良好的技術有一個主要好處是一組工具,用於在解析的消息一致的方式。話雖如此,我認爲SOAP並不適合你。

我想瞄準RESTful architecture,因爲這些消息只是簡單的XML,並且有用於發佈和使用各種語言的REST式消息的庫。通常,使用REST可以使用比SOAP等類似技術更快的速度,但仍然有學習的範例。

編輯:您可以使用WADL來描述您的服務,其中描述了RESTful架構幷包含任何相關架構。然後,您可以使用WADL2Java工具或其他WADL工具來生成端點存根。我認爲這種方法在利用現有模式而不必更改客戶端代碼的情況下關閉了您想要執行的操作。 Here is a sample WADL file以及一些關於它的信息。

+0

關於REST的好處以及它是真的只有XML是客戶端可以非常簡單的生成你喜歡的XML併爲你的目標資源做一個HTTP POST雖然RESTful服務通常用在資源訪問是首要任務的時候,但它們還有一個額外的好處, JAX-WS(https://jax-ws.dev.java.net/)支持REST for Java服務器,Sprin g Web服務(http://www.springsource.org/spring-ws)支持REST,就像Spring框架的其他部分一樣。 – Zach

+0

對不起,Spring Web服務的鏈接被破壞。這是一個工程:http://static.springsource.org/spring-ws/sites/1.5/ – Zach

1

在我看來,你想在這裏兩個矛盾的事情。任何提供工具的東西都將是一項特定的技術。

但是一個可能性是這樣的:

Apache CXF具有純XML HTTP上的約束力。

但它不會以任何語言創建消費者。爲此,我真的不能建議除SOAP或REST以外的其他任何東西。

+0

我想我可能要找的是一種方法來生成消費服務基於架構(XSD)的信息。我不想對發送的消息進行「SOAP化」。 – Boden

+0

如果您已經擁有該消息的模式,那麼您已經達到了SOAP的75%左右。您可以創建一個嵌入該模式的簡單WSDL,並使用WSDL2Java生成服務端點。最困難的部分是編寫WSDL腳手架,但甚至不是很難(IMO)。 – Zach

+0

@Zach - 謝謝。我必須修改信息嗎?在這種情況下更改發件人以更改郵件是最難的部分。如果不是那麼它是如何SOAP?有沒有辦法做到我想要的而不修改消息本身? – Boden