簡體   English   中英

學習Java Web服務需要學習什么?

[英]What to learn to do Java web services?

我最后一次使用Java Servlets和JSP進行Java Web開發。 我從未真正使用過EJB。 我記得我在開發Web服務\\動態網站方面的經驗,這些網站的速度很慢(在開發時間方面)和痛苦(在易於部署方面)。

如今大多數企業使用什么來開發基於Java的網站? 您是否使用AXIS或其他框架來進行Web服務? 您是否使用JSP或其他技術作為前端?

當前的標准是使用JAX-WS(用於SOAP Web服務)和JAX-RS(用於RESTful Web服務)。

這些是具有多個實現的標准。 JAX-WS有Metro,CXF等.JAX-RS有Jersey,RESTEasy等。

我會按順序學習這些

  • 休息
  • XSD
  • WSDL
  • JAX- *
  • 備擇方案? (Thrift,Avro,協議緩沖區等)

從2004年開始,工具支持以及易於開發也已經走過了漫長的道路。隨着對輕量級框架的關注越來越多(部分歸功於Spring),在Java中實現Web服務變得更加容易。

在決定實施Web服務之前,您需要回答一個簡單的問題。 肥皂或REST.I建議你形成自己的觀點,但這是我能想到的,在我的頭頂。

SOAP的優點:

  1. 出色的工具支持。
  2. 最流行的技術。
  3. JAX-WS標准非常成熟。
  4. 易於開發。 (將POJO轉換為Web服務的注釋支持)。
  5. 示例METRO,Axis ......

肥皂的缺點。 (問羅伊菲爾丁......)

  1. 膨脹的協議。
  2. 協議的定制是可能的,但很復雜。 (使用wsdl綁定等..)
  3. 客戶端需要復雜的庫來序列化和反序列化soap消息。
  4. 像Android這樣的平台本身不支持SOAP。

在臃腫的Web服務協議羅伊Fieldings咆哮后, web服務 ,他長出了常識的說法使用互聯網的SOA的背部骨,有對REST一個平緩的動作。 谷歌和亞馬遜等更敏捷的公司采用了REST,並且正在支持基於REST的Web服務。

REST的優點:

  1. 非常輕量級的協議
  2. 主要基於HTTP,因此大多數客戶都知道如何使用。 (但REST不必是HTTP)。
  3. 錯誤管理和像Cache這樣的想法基於成熟的Internet技術。
  4. Java具有出色的REST庫。 Sun自己的Jersey是一個優秀的Jax-RS參考實現,有Restlet,Jboss Rest Framework和Spring REST(雖然不符合JAX-RS)。

REST的缺點:

  1. 相對較差的工具支持。
  2. REST中的安全性實現有點困難。
  3. 面向資源的設計和實現對於一些傳統的程序員和架構師來說可能是新的。

我喜歡澤西島的REST。 它具有驚人的框架,出色的支持,出色的文檔,良好的測試支持庫。

無論哪種方式,我都會下載Netbeans IDE並使用它來開發基於REST或SOAP的Web服務的骨架代碼。 Netbeans讓它很容易上手。 一旦熟悉了代碼,就可以切換到自己喜歡的IDE。 (順便說一句,除了原型設計之外我不會使用Netbeans,它會嘗試做很多事情並且大部分都做得很糟糕......無論如何我的意見)

我的偏好是Apache Avro(在@ rodrigoap的回答中提到)。 我現在工作的地方,我們有一個面向服務的架構,並使用Avro進行內部服務。 我們之所以選擇它,是因為它快速,穩定,可以運行http(很容易通過Tomcat服務),可以自動生成客戶端類,並可以使用多種語言。 客戶端類的生成對我們來說是一個很大的特性,因為它意味着我們只處理Java對象並讓Avro處理序列化並通過網絡發送內容。 不必處理許多不同的網址也很好。 Avro Web服務由單個servlet托管,Avro負責如何將每個請求映射到實現類中的相應方法。

為了再次參考@ rodrigoap的答案,他在Avro的列表中放置了其他幾個選項,對於外部訪問的Web服務,我同意這些是更好的選擇,因為您的外部服務用戶可能對使用不感興趣Avro只是因為你可能已經選擇了它。

如果您對一個示例感興趣,這里有一個示例Avro Web服務項目,可以查看它是如何工作的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM