Web Services介紹
這個教學部份討論Java EE 6 web Service技術,這個技術包含了Java API for XML Web Service(JAX-WS)以及Java API for RESTful Web Service(JAX-RS)
什麼是Web Services?
Web services是client和server應用程式透過World Wide Web's(WWW) HyperText Transfer Portocol(HTTP)來進行溝通的協議。
根據World Wide Web Consortium(W3C)所描述,web services提供一個可共用的標準在不同的軟體之間,可以在多種的平台和框架上執行。 Web services的特色是有著優越的共用性以及延伸性,以及由於使用XML的容易處理性,它們可以用寬鬆成對的結合來達成複雜的運作。
Web Service的型態
在概念等級上,一個service是一個軟體元件提供一個可透過網路連接的終端點。服務使用者和提供者使用訊息的交換來實行需求和回應資訊在一個self-containing文檔型態內。
在技術層面上,web services可以以不同方式被實做,將被我們討論的兩種web serivces型態可以被分類為"Big" web services和 "RESTful" web services
在Java EE 6, JAX-WS為"Big" web services提供功能, Big services使用遵守Simple Object Access Protocol(SOAP)標準的XML訊息,在這樣的系統裡,通常都會有一個機器可讀的運作敘述被提供在Web Services Description Language(WSDL)
SOAP訊息格式和WSDL介面定義語言讓更多人開始採用,現在也有很多開發工具存在,例如NetBeans IDE,減少了開發web service applications的複雜度。
一個SOAP-base設計一定要包含下列元素
一個正式的契約一定要被建立來描述web service提供的介面,Web Services Description Language(WSDL)可以被使用來描述契約的細節,可能包含web services的訊息,運作,連結以及地點。你也可以處理SOAP訊息在一個JAX-WS service而不需要發要一個WSDL。
Web service的地址的命名要有意義,最好是常見的單字,例如Transactions, Security, Addressing...etc
架構需要處理飛同步的處理和呼叫,在這個例子裡,WSRM和APIs例如JAX-WS被提供為基礎架構的標準作為它們的client端非同步呼叫的支援, can be leverage out of the box
在Java EE 6, JAX-RS提供REpresentational State Transfer(RESTful)功能的Web Services,
REST相當適合基本和獨特的整合情境,RESTful web services經常和HTTP整合更勝於與SOAP-based services它並不需要XML message或是WSDL服務的API定義。
Project Jersey是一個已經被發行的JSR311參考實做,JAX-RS:Java API for RESTful Web Services,Jersey實做支援宣告定義在JSR-311,讓它更容易給開發者使用Java和Java JVM來建立RESTful web services ,Jersey也加入了一些不在JSR定義的額外特色。
因為RESTful web servies使用現存的知名W3C/IETF標準(HTTP,XML,URL,MIME)以及有著相當輕量的結構,使得services可以使用極小的工具來建立。開發RESTful web servies是不貴的,以及有著相當低的被採用障礙。你可以使用任何一個開發工具來減少開發RESTful web services的複雜度,例如NetBeans IDE。
現實世界使用RESTful web services是大部分的blog網站,RESTful被認為在大部分的blog網站裡介入下載XML檔案(RSS或是Atom格式)包含連結到其他資源的列表,其他的網站和web applications使用REST-like開發者介面來連結資料,包含Twitter和Amazon Simple Storage Service(S3). Amazon S3,buckets和objects可以被製造、列表和取得,始用REST-style HTTP介面或是SOAP介面。
參考http://netbeans.org/kb/docs/websvc/twitter-swing.html
使用NetBeans IDE來製作出一個簡單、圖形的、REST-based client來表示Twitter的訊息time line,以及讓你瀏覽和更新的你Twitter狀態。
一個RESTful設計可以被完成在下列狀況:
web services是完全的stateless,一個好的測試被認為是「互動是否可以存活在server重新啟動後」
一個caching架構可以來平衡效能,如果web service回傳的資料並不是動態產生而是可以被暫存,那麼caching架構可以增加效能,然而開發者應該要注意這點,因為在大多數的伺服器caches被限制在HTTP GET方法。
No comments:
Post a Comment