Web服務框架發展與REST服務開發
一、目前流行的WebService框架介紹:
①Apache Axis2
Apache Axis2相比Apache Axis1更加有效、更加模塊化、更加面向xml,支持容易插件模塊擴展新功能和特性,例如安全和可靠。Apache Axis2是基於Apache AXIOM,它是一 個高性能、pull-based XML對象模型。Apache Axis2的關鍵特性:
l 解析xml更快。采用自己的對象模型和StAX (Streaming API for XML)。
l 更低的內存占用。
l 支持熱部署。新服務加入到系統,無需重啟服務。
l 支持異步webservice、
l 更加靈活。引擎給開發人員提供了充足的自由度可擴展客戶頭信息處理、系統管理、
l 更加穩定性。
l 支持WSDL1.1、WSDL2.0。
l 方便集成其他組件(Add-ons)。幾個web services已經被集成,包括:WSS4J for security (Apache Rampart), Sandesha for reliable messaging, Kandula which is an encapsulation of WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity.
l 良好的擴展性。
②Apache Axis2
Apache CXF是一個開源服務框架。Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,現在已經正式更名為 Apache CXF 了,以下簡稱為 CXF。CXF 繼承了Celtix和XFire兩大開源項目的精華,比如:JAX-WS and JAX-RS,主要特性包括:
l 支持Web services標準。包括:SOAP、the WSI Basic Profile、WSDL、WS-Addressing、WS-Policy、WS-ReliableMessaging、WS-Security、WS-SecureConversation和WS-SecurityPolicy.
l 支持不同類型前端開發模型。CXF實現了JAX-WS APIs,支持JAX-RS開發。
l 容易使用。CXF設計的簡潔和直觀,具有簡潔APIs迅速的構建基於代碼的服務,Maven插件使得工具集成更加容易、JAX-WS API支持、Spring 2.x XML使得配置更加容易。
l 支持二進制和遺留協議。CXF被設計為可插拔的架構,在不同的傳輸協議結合下,不僅支持XML,也支持非XML類型綁定,例如:JSON和CORBA。
③Apache Axis2
Dubbo是Alibaba開源的分布式服務框架,它最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地松耦合)。
二、概念介紹
①、Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在Web上提供的軟件服務,使用WSDL文件進行說明,並通過UDDI進行註冊。
②、SOAP協議:簡單對象訪問協議,簡單對象訪問協議是交換數據的一種協議規範,是一種輕量的、簡單的、基於XML的協議,它被設計成在WEB上交換結構化的和固化的信息。SOAP作為webService三要素SOAP、WSDL、UUID之一, SOAP用來描述傳遞信息的格式, WSDL 用來描述如何訪問具體的接口, uddi用來管理,分發,查詢webService 。 SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議(HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。SOAP使用基於XML的數據結構和超文本傳輸協議(HTTP)的組合定義了一個標準的方法使用Internet上各種不同操作環境中的分布式對象。
③、JAX-WS規範是一組XML web services的JAVA API,JAX-WS允許開發者可以選擇RPC-oriented或者message-oriented 來實現自己的web services。
在 JAX-WS中,一個遠程調用可以轉換為一個基於XML的協議例如SOAP,在使用JAX-WS過程中,開發者不需要編寫任何生成和處理SOAP消息的代碼。JAX-WS的運行時實現會將這些API的調用轉換成為對應的SOAP消息。在服務器端,用戶只需要通過Java語言定義遠程調用所需要實現的接口SEI(service endpoint interface),並提供相關的實現,通過調用JAX-WS的服務發布接口就可以將其發布為WebService接口。在客戶端,用戶可以通過JAX-WS的API創建一個代理(用本地對象來替代遠程的服務)來實現對於遠程服務器端的調用。當然 JAX-WS 也提供了一組針對底層消息進行操作的API調用,你可以通過Dispatch 直接使用SOAP消息或XML消息發送請求或者使用Provider處理SOAP或XML消息。
通過web service所提供的互操作環境,我們可以用JAX-WS輕松實現JAVA平臺與其他編程環境(.net等)的互操作。
三、
Web服務框架發展與REST服務開發