2012-06-20 35 views
9

Web服務是一項功能,可以通過網絡(Http)由其他程序訪問。爲了澄清一下,當你在PHP中創建一個輸出HTML的網站時,它的目標是瀏覽器,並且通過擴展瀏覽器中的人閱讀頁面。網絡服務不針對人類,而是針對其他計劃。RESTful Web應用程序是什麼意思?

  1. SOAP和REST是創建Web服務的兩種方式。糾正我,如果我 是錯的?
  2. 什麼是我可以創建WebService的其他方法?
  3. 這是什麼意思完全REST風格的Web應用程序?
+3

這可能屬於http://programmers.stackexchange.com甚至[Google](http://google.com)。 – lanzz

+0

廣告。 1 不一定。這兩種方式都是Big Web Services和RESTful Web Services。這比使用或不使用SOAP要複雜一點。 SOAP可以按照REST使用。 Ad。 3 閱讀Roy Fielding的論文以找出答案。我還建議閱讀ROA(面向資源的體系結構),這比REST本身的概念更具體。它也是最常用的RESTful設計。它經常與REST本身混淆。 – toniedzwiedz

+0

HTTP服務的網站也不是針對人類的,但首先在HTTP瀏覽器上;)因此,WWW服務超文本文件*是一個web服務。 – hakre

回答

4
  1. 正確
  2. 的W3C定義了一個「Web service」爲「軟件設計成支持可互操作的網絡上的機器到機器的交互系統」。
  3. 完全REST風格的服務是堅持全部或Roy Fielding的論文Architectural Styles and the Design of Network-based Software Architectures中闡述的架構約束。這是一個長時間的閱讀,有很多解釋。一個好的開始將是熟悉Richardson Maturity Model注意:大多數聲稱爲RESTful的Web服務僅在該模型中的level 2
0

我認爲要理解什麼是完全RESTful服務,您必須瞭解RESTful服務和標準Web服務之間的區別。這是相當不錯的exaplained在JEE6教程由Oracle:

NonRESTful Web服務(在Java作爲JAX-WS):大Web服務使用 遵循簡單對象訪問協議的XML消息(SOAP)標準,XML語言定義一個 消息體系結構和消息格式。這樣的系統通常包含由服務提供的操作的機器可讀的描述,編寫在Web服務描述 語言(WSDL)中,XML語言用於語法上定義接口。 SOAP消息格式和WSDL接口定義語言已經獲得了廣泛採用的 。許多開發工具(如NetBeans IDE)可以減少開發Web服務應用程序的複雜性。 基於SOAP的設計必須包含以下元素。

■必須建立正式的合同來描述Web服務提供的接口。 WSDL可用於描述合同的細節,其中可能包括消息,操作,綁定和Web服務的位置。您也可以在不發佈WSDL的情況下處理JAX-WS服務中的SOAP 消息。

■體系結構必須解決複雜的非功能性需求。許多網絡服務規範解決了這些要求,併爲它們建立了一個通用的詞彙表。例子包括交易,安全,尋址,信任,協調等。

■體系結構需要處理異步處理和調用。在這種情況下,標準提供的基礎架構(如Web Services Reliable Messaging (WSRM))和API(如JAX-WS)及其客戶端異步調用 支持可以直接使用。在Java EE 6中,JAX-RS爲Web服務提供了具有代表性的狀態傳輸(RESTful) 功能。RESTful Web服務(在Java中爲JAX-RS) REST非常適合基本的即席集成場景。 RESTful Web服務, 往往更好地與HTTP比基於SOAP的服務集成,不需要XML消息 或WSDL服務的API定義。項目Jersey是JAX-RS規範的生產就緒參考實現。 Jersey實現了對JAX-RS規範中定義的註釋的支持,使開發人員可以輕鬆使用 構建使用Java和Java虛擬機(JVM)的RESTful Web服務。

Web服務的類型 因爲RESTful Web服務使用現有的知名W3C和因特網工程任務 組(IETF)標準(HTTP,XML,URI,MIME),並有一個輕量級的基礎設施, 允許服務要建使用最少的工具,開發RESTful Web服務的價格便宜,因此採用的障礙非常低。您可以使用開發工具(如NetBeans IDE)進一步降低開發RESTful Web服務的複雜性。 滿足以下條件時,可以使用REST風格的設計。

■網絡服務是完全無狀態的。一個好的測試是考慮交互 是否可以在服務器重新啓動後繼續存在。

■一個緩存基礎設施可以利用性能。如果Web服務 返回的數據不是動態生成的並且可以緩存,則可以利用服務器和其他中介提供的高速緩存基礎結構來提高性能。但是,開發人員必須小心,因爲對於大多數服務器,此類緩存僅限於 HTTP GET方法。

■服務生產者和服務消費者對上下文有相互理解並傳遞內容。因爲沒有正式的方式來描述Web服務接口,所以雙方必須在描述數據交換的模式和帶有意義處理方式的模式之間達成一致。在現實世界中,將服務作爲RESTful實現公開的大多數商業應用程序還分發所謂的 增值工具包,其描述了流行編程 語言中的開發人員的接口。

■帶寬就顯得尤爲重要,需要加以限制。 REST是 限定輪廓設備,諸如PDA和移動電話,對哪些報頭 並且在XML有效載荷SOAP元素的附加層的開銷必須限制特別有用的。

■可通過 REST風格輕鬆實現Web服務交付或聚合到現有網站。開發人員可以使用諸如JAX-RS和異步的技術,帶有XML(AJAX)的JavaScript以及Direct Web Remoting(DWR)等工具包在其Web應用程序中使用 服務。服務可以是 ,這些服務可以使用XML公開,並由HTML頁面使用,而不會顯着重構現有網站架構的 。現有的開發人員將更加高效,因爲他們將 添加到他們已經熟悉的內容中,而不必從頭開始使用新技術從 開始。

決定Web服務的哪些類型的使用

基本上,你想通過網絡的整合使用RESTful Web服務,並在擁有先進 服務質量的企業應用集成方案中使用大 Web服務( QoS)要求。

■WebServices:解決了企業 計算中普遍存在的高級QoS要求。 [..]

■REST類型:使得更容易寫應用於一些或所有的REST風格的制約,以誘導在應用所需的性質,如鬆耦合 (演進的服務器是不容易的web應用打破現有的客戶端),可伸縮性(從小增長開始)和架構簡單化(使用現成的組件,如代理或HTTP 路由器)。您將選擇爲您的Web應用程序使用JAX-RS,因爲許多類型的客戶端更容易使用RESTful Web服務,同時允許服務器端發展和擴展。客戶可以選擇使用服務的一些或全部方面,並將其與其他基於網絡的服務混合使用。

相關問題