2011-05-04 29 views

回答

62

自頂向下意味着您先從WSDL開始,然後使用Java創建所有必要的腳手架。

自下而上意味着您從Java方法開始,並從中生成WSDL。

SOAP意味着所有調用的URL都是相同的,並且只有Java方法的參數不同。 REST意味着URL加上調用的HTTP方法反映了要完成的操作。

+2

對於SOAP vs REST,我認爲你的回答是公平的,考慮到OP在研究之前所要求的努力量......但仍然有一些可能會進一步挖掘的文章: http://en.wikipedia.org/wiki/Representational_State_Transfer和 http://en.wikipedia.org/wiki/SOAP – 2011-05-04 22:19:58

+1

@AnonyAccioly請問您的評論是否適合作爲更好的部分你自己的答案? – 2013-08-19 11:13:06

+0

@ThorbjørnRavnAndersen:一些更正:在REST中,URL並不反映要完成的「操作」!它是HTTP方法(即GET,POST等),它反映了在由URL標識的資源上執行的操作。 – 2014-09-14 07:12:09

7

@mad_programmer - 您的意思是用自下而上或自上而下的方法構建Web服務。 首先,您將開始將類和業務邏輯編程爲java代碼,然後從中生成Web服務合約(即WSDL)。後一種方法意味着相反(從WSDL生成類存根)。

5

支持andersen的答案,我想補充一點。 基本上人們傾向於使用自下而上的方法,因爲在大多數情況下,我們已經開始編寫bean,業務邏輯等的過程,然後在持久層中創建web服務,wsdl等。 在新建項目中,我們可以使用自頂向下的方法,在這裏我們只寫wsdl,構建骨架將爲您提供bean,實現,接口等。但是,記住計算機不能生成你想要的邏輯。所以,你仍然需要完成整個項目並填補空白。

4

當項目從頭開始時添加到答案通常的方法是創建一個非常基本的接口,然後從中創建一個WSDl。這將使您無法編寫複雜的WSDl。然後,我們可以直接在WSDl中添加項目特定的操作,並且一旦WSDl完成,我們可以採用自頂向下的方法。

+0

我喜歡這個答案,因爲這樣可以避免在編寫xsd和wsdl文件時出現手動人爲錯誤。但是,您認爲生成的wsdl文件可以通過各種JAX-WS實現進行移植嗎? – YogendraJ 2016-12-28 04:21:23

7

Contract-first versus Contract-last

自下而上:方法利用問題的高級別定義,並將其細分爲子。

合同末尾。有以下優勢喜歡自下而上的開發風格。

  • 守則第一
  • 初始階段很容易發展。

缺點:

  • 維護是非常非常難。
  • 緊耦合

自上而下:想到的基本功能和將需要的零件。

合同優先。選擇自頂向下的開發風格有以下原因。

1.脆弱 在你的web服務合同(WSDL和您的XSD)的合同,最後的發展結果風格從Java契約(通常接口)產生。如果您使用這種方法,您將無法保證合同會隨着時間的推移保持不變。每次更改Java代碼並重新部署它時,可能會對Web服務合同進行後續更改。 另外,並非所有的SOAP堆棧都會從Java合約生成相同的Web服務合約。這意味着改變你當前的SOAP堆棧(不管出於何種原因),也可能會改變你的Web服務合同。 當Web服務合同發生更改時,必須指示合同用戶獲得新合同,並可能更改其代碼以適應合同中的任何更改。 爲了使合同有用,它必須儘可能保持不變。如果合同發生變化,您必須聯繫您服務的所有用戶,並指示他們獲得合同的新版本。

2.性能 當Java的自動轉換成XML,有沒有辦法可以肯定的,什麼是跨線發送。一個對象可能引用另一個引用另一個對象的對象等。最後,虛擬機堆中的一半對象可能會轉換爲XML,這會導致響應時間變慢。 使用契約優先時,您明確描述了在哪裏發送XML,從而確保它正是您想要的。

3.可重用性 在單獨的文件中定義架構允許您在不同的場景中重用該文件。

4.版本 儘管合約必須儘可能長時間保持不變,但它們確實有時需要更改。在Java中,這通常會產生一個新的Java接口,如AirlineService2,以及該接口的一個(新)實現。當然,舊服務必須保留,因爲可能還有尚未遷移的客戶。 如果使用合同優先,我們可以在合同和實施之間有一個寬鬆的耦合。這種寬鬆的耦合使我們能夠在一個類中實現兩種版本的合同。

tldr;

enter image description here

自上而下與自下而上層次

enter image description here 圖片來源:Google圖片

enter image description here

0

在自上而下的定義,你會做什麼第一。即您的wsdl。 然後你繼續實際的發展。 儘管看起來很難首先創建wsdl,但是它的推薦 (Refer Eclipse)在長期內會簡化您的開發。

正好相反發生在自下而上。 我們從代碼部分開始,然後使用內置工具創建wsdl。 這可能在開始時看起來很容易,但是當您隨代碼的複雜程度而變大時,會產生很多混亂。

相關問題