2010-05-11 23 views
16

編寫有效的Web服務雖然這樣可能出現的Java Web Services重複,我想知道從哪裏開始和continue.In過去,我已經投入了這麼多的時間來尋找從哪裏開始,但我無法。在閱讀有關Web服務的頁面時,有太多的行話和混亂(至少對我來說!)。有很多術語 - 比如Web服務和其他我不知道的術語,如JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB's。該用戶組可以整合並提供易於理解和遵循的Java Web服務的高級概述嗎?我感謝您的好意,並感謝您的幫助。如何用Java

回答

33

這確實是一個理解Web服務的叢林。 wikipedia頁面很不錯,但是仍然缺乏一些元素。

我舉報了這個答案,因爲社會的維基,所以隨時更新它,或糾正。這只是一個基礎。

一個臃腫項:

首先,術語Web服務被用來指代很多東西。雖然許多人使用它來指代基於SOAP的Web服務,但該術語可以用來表示通過Web界面提供的任何服務;這是一個混亂的來源。

實施和設計風格:

  • 基於SOAP的 - SOAP仍然是Web服務的事實標準。 SOAP是描述消息和異常交換的HTTP協議。 SOAP隨着以後添加的所有WS-* standards從簡單的事情發展到非常複雜的事情。最重要的是:WS-Policy,WS-Security,WS-Addressing,WS-Transaction。另一個重要的規範是MTOM的大消息。
  • RESTful - 術語RESTful涉及服務無狀態並且所有相關信息都作爲參數傳遞的事實。而不是使用像SOAP這樣的協議,使用普通的HTTP 動詞,例如, Get,Put,Delete,Update
  • 無國籍 - WS通常是無狀態的。處理的業務有時依賴於用來將請求和響應一起匹配的所謂相關標識符(使用WS-Addressing);這與在Cookie中存儲會話標識符相同,因爲HTTP是無狀態的。
  • 有狀態 - 有一些建議,有狀態的WS,但我不很瞭解。

實施和技術堆棧:

  • 的Servlet - 最低級的方式來實現WS:你基本上解析請求,並通過自己全吐了HTTP響應。
  • EJB - 由於EJB3,EJB可以很容易地暴露爲Web服務。當然,需要一個EJB容器。
  • Apache Axis - 曾經是一個流行的技術堆棧,現在正在衰落。
  • Apache CXF - 另一個流行的選擇。
  • JBossWS - 又一個流行的選擇。
  • JAX-WS - 來自Sun的官方Web服務棧,非常好。到目前爲止,我知道,這個replaces JAX-RPC只是簡單地改名爲JAX-WS。

相關的概念和術語:

  • WSDL - 定義Web服務合同/界面,基於SOAP的WS的情況。
  • 合同優先 - 指技術能夠支持任何預先提供的WSDL的事實。與實現基於Web服務實現的WSDL的實現技術相反,在這種情況下WSDL不能總是根據需要進行定製
  • 簡介 - 爲了簡化這個混亂,他們已經介紹了配置文件,這些配置文件是需要支持互操作性的相關規範/功能組。主要的是WS-I Basic Profile。
  • UDDI和發現 - 似乎有人認爲Web服務將在公共註冊中發佈,以便被潛在的消費者發現。我不認爲這個願景獲得了很大的動力。
+0

+1詳細的,但要點概述。 – CoolBeans 2010-05-11 14:52:59

+0

+1非常好的帖子 - 我今天非常需要的東西,夠方便的。 – aperkins 2010-05-11 19:28:09

+0

有人可以與eclipse,axis2,tomcat – 2010-06-02 07:58:30