seasun  
          在不斷模仿、思考、總結中一步一步進步!
          公告
          •     我的blog中的部分資源是來自于網絡上,如果您認為侵犯了您的權利,請及時聯系我我會盡快刪除!E-MAIL:shiwenfeng@aliyun.com和QQ:281340916,歡迎交流。

          日歷
          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          常用鏈接

          隨筆分類

          good blog author

          積分與排名

          • 積分 - 81762
          • 排名 - 700

          最新評論

          閱讀排行榜

           

           CXF
          最新版本:2.2.2開源服務框架,可以通過API,如JAX-WS,構建和開發服務。服務可以使多種協議的,例如SOAP, XML/HTTP, RESTful HTTP,  CORBA,并可以工作與多種傳輸協議之上,如HTTPJMSJBI

          主要特性

          ·支持Webservice標準:包括SOAP, the Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security

          • 前端(Frontend):支持多種前端編程模型。CXF實現了JAX-WS API。它包含一個簡單的前端,可以創建客戶端和端點而不需要注釋。既支持協議優先的WSDL開發,也支持代碼優先的Java開發。
          • 易用性:可以通過簡單的API快速構建代碼優先的服務,簡化模具集成的Maven插件,支持JAX-WS API,支持Spring 2.0 XML來配置一個子網訪問協議。
          • 支持二進制和遺留協議:提供了一個插件式的體系結構,支持XML和非XML類型的綁定,如JSON CORBA

          目標

          · 整體

          高性能
          可擴展
          直觀易用

          ·支持的標準

          JAX-WS, JAX-WSA, JSR-181, and SAAJ
          SOAP 1.1, 1.2, WS-I BasicProfile, WS-Security, WS-Addressing, WS-RM
          WS-Policy
          WSDL 1.1
          2.0
          MTOM

          · 多種傳輸,綁定,數據綁定和格式

          綁定: SOAP, REST/HTTP
          數據綁定: JAXB 2.0, Aegis, XMLBeans. (將在下一版本中支持Castor JiBX)
          格式: XML, JSON
          傳輸: HTTP, Servlet, JMS, and Jabber transports
          可擴展 API 允許附加的綁定,支持附加的消息格式,如CSV

          · 靈活的部署

          輕量級容器: Tomcat 或 基于Spring的容器中部署服務
          JBI
          集成: 作為服務引擎部署在JBI容器中,如 ServiceMix, OpenESB Petals
          SCA
          集成: SCA容器中部署,例如Tuscany
          J2EE
          集成: J2EE應用程序中部署服務,如 Geronimo, JOnAS, JBoss, WebLogic, WebSphere
          獨立式 Java client/server

          · 支持多種編程語言

          完全支持 JAX-WS 2.0 client/server 編程模型
          JAX-WS 2.0
          同步, 異步 和 one-way API's
          JAX-WS 2.0
          動態請求接口 (DII) API
          支持打包和未打包的形式
          XML
          消息 API
          支持 JavaScript and ECMAScript 4 XML (E4X) - both client and server
          Support for CORBA with Yoko
          Support for SCA withTuscany
          Support for JBI with ServiceMix

          · 代碼生成

          Java to WSDL
          WSDL to Java
          XSD to WSDL
          WSDL to XML
          WSDL to SOAP
          WSDL to service  

          Axis
          最新版本:1.4

          AxisApache組織推出的SOAP引擎,Axis項目是Apache組織著名的SOAP項目的后繼項目, 但是Axis不僅僅是一個SOAP引擎,它還包括:

          1)個獨立運行的SOAP服務器

          2)一個servlet引擎的插件,這個servlet引擎可以是Tomcat

          3)WSDL的擴展支持

          4)一個將WSDL的描述生成JAVA類的工具

          5)一些示例代碼

          6)還有一個監控TCP/IP包的工具

          主要特性

          · 速度: Axis 使用 SAX (event-based) 語法分析,與早期版本的 Apache SOAP 相比,速度有顯著提高。

          · 靈活性:Axis體系結構使開發者可以自由的向引擎中插入擴展。

          · 穩定性:Axis 定義了一組公共的接口。

          · 面向組件的部署:可以簡單地定義可復用的處理機網絡,來實現應用程序的通用處理方式或分發給合作者。

          · 傳輸框架:有一個簡潔的設計傳輸的抽象,引擎的核心完全獨立于傳輸。We have a clean and simple abstraction for designing transports (i.e., senders and listeners for SOAP over various protocols such as SMTP, FTP, message-oriented middleware, etc), and the core of the engine is completely transport-independent.

          · 支持WSDLAxis 支持WSDL1.1,可以簡單的構建訪問遠程服務的樁(stub,還可以自動將部署的服務從Axis導出為機器可識別的描述。

          Axis2
          最新版本:1.5

          體系結構
          Axis2
          具有模塊化體系結構,由核心模塊和非核心模塊組成。據說,Axis2 核心是純 SOAP 處理引擎,并沒有包含 Java™ API for XML-based RPC (JAX-RPC) 概念作為其核心的一部分。同時,Axis2 體系結構的設計充分考慮了以下原則:

          邏輯和狀態分離,以提供無狀態處理機制,因為 Web 服務是無狀態的。
          所有信息位于一個信息模型中,允許對系統進行掛起和恢復。
          能夠在不更改核心體系結構的情況下擴展功能,能以最小或沒有核心更改的情況下直接支持新 Web 服務規范。


          Axis2
          核心體系結構包括以下核心和非核心組件:
          核心組件
          XML
          對象模型 (AXIOM)
          SOAP
          處理模型:處理程序框架
          信息處理模型:上下文和描述
          其他組件
          部署模型
          傳輸
          客戶機 API
          核心生成模型  

          主要特性
          · 
          速度 - Axis 使用 SAX (event-based) 語法分析,與早期版本的 Apache SOAP 相比,速度有顯著提高。

          · 內存占用低- Axis2 was designed ground-up keeping low memory foot print in mind.

          · AXIOM - Axis2 comes with its own light-weight object model, AXIOM, for message processing which is extensible, highly performant and is developer convenient.

          · 熱部署 - Axis2 is equipped with the capability of deploying Web services and handlers while the system is up and running. In other words, new services can be added to the system without having to shut down the server. Simply drop the required Web service archive into the services directory in the repository, and the deployment model will automatically deploy the service and make it available for use.

          · 異步web服務 - Axis2 now supports asynchronous Web services and asynchronous Web services invocation using non-blocking clients and transports.

          · 支持MEP - Axis2 now comes handy with the flexibility to support Message Exchange Patterns (MEPs) with in-built support for basic MEPs defined in WSDL 2.0.

          · 靈活性 - Axis體系結構使開發者可以自由的向引擎中插入擴展。

          · 穩定性 - Axis 定義了一組公共的接口。

          · 面向組件的部署 -可以簡單地定義可復用的處理機網絡,來實現應用程序的通用處理方式或分發給合作者。

          · 傳輸框架 -有一個簡潔的設計傳輸的抽象,引擎的核心完全獨立于傳輸。We have a clean and simple abstraction for designing transports (i.e., senders and listeners for SOAP over various protocols such as SMTP, FTP, message-oriented middleware, etc), and the core of the engine is completely transport-independent.

          · 支持WSDL - Axis 支持WSDL1.1,可以簡單的構建訪問遠程服務的樁(stub,還可以自動將部署的服務從Axis導出為機器可識別的描述。

          · 插件 - Several Web services specifications have been incorporated including WSS4J for security (Apache Rampart), Sandesha for reliable messaging, Kandula which is an encapsulation of WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity.

          · 組成和可擴展性 - Modules and phases improve support for composability and extensibility. Modules support composability and can also support new WS-* specifications in a simple and clean manner. They are however not hot deployable as they change the overall behavior of the system.

          Xfire
          XFire codeHaus 組織提供的一個開源框架,它構建了 POJO SOA 之間的橋梁,主要特性就是支持將 POJO 通過非常簡單的方式發布成 Web 服務,這種處理方式不僅充分發揮了 POJO 的作用,簡化了 Java 應用轉化為 Web 服務的步驟和過程,也直接降低了 SOA 的實現難度,為企業轉向 SOA 架構提供了一種簡單可行的方式。

          主要特性
          XFire
          目前最新的版本是 1.2.6,目前支持的特性主要包括:

          支持將 Web 服務綁定到 POJOXMLBeansJAXB1.1JAXB2.0 Castor
          支持基于 HTTPJMSXMPP 等多種協議訪問 Web 服務;
          支持多種 Web 服務業界重要標準如 SOAPWSDLWeb 服務尋址(WS-Addressing)、Web 服務安全(WS-Security)等;
          支持 JSR181,可以通過 JDK5 配置 Web 服務;
          高性能的 SOAP 實現;
          服務器端、客戶端代碼輔助生成;
          SpringPicoPlexus 等項目的支持等。
           

          比較
          Axis1.X VS Axis2
          Axis2
          不僅是 Apache 的新 Web 服務框架。它還體現了從 Axis 1.x 系列獲得的經驗和最近兩年在 Web 服務領域的發展。推出 Axis2 的主要原因之一是從速度和內存方面獲得更好的性能——不過還添加了一些新特性和功能。大部分新特性都是為了提高 Axis2 的易用性,并同時保留通過各種方式擴展功能的空間。大部分新功能所添加到的主要領域如下所示:

          XML 對象模型 (AXIOM) 
          Axis 1.x 相比,Axis2 構建于全新的體系結構之上。引入 Axis2 的主要原因之一是獲得合適的 XML 處理模型。Axis 1.x 使用 DOM 作為其 XML 表示機制,但使用 DOM 的缺點是,需要在內存中保存完整的對象層次結構(與傳入消息對應)。對于小消息,這將不是問題,但對于大型消息就是問題了。為了克服此問題,Axis2 引入了新的 XML 表示形式作為其基礎。 

          基于消息傳遞的核心
          Axis2
          核心是純 SOAP 處理引擎,并不了解數據綁定、傳輸、WSDl 等內容。Axis2 核心的主要功能是處理傳輸消息,并將其交付給目標應用程序。與 Axis 1.x 一樣,Axis2 也具有用于擴展其主要功能的處理程序概念。

          Axis 1.x 并沒有異步 Web 服務調用的概念,它完全綁定到請求-響應調用,但在 Axis2 中卻是另一番景象。Axis2 體系結構能夠支持在客戶端和服務器端同時支持異步調用。同時,Axis2 也支持請求-響應樣式的調用,但這會以兩個異步調用的方式進行。在 Axis2 中,進入系統的消息可能有也可能沒有響應,應該注意,Aixs2 支持 WSDL 2.0 中定義的所有八種消息交換模式(Message Exchange PatternsMEP)。  

          Axis2 具有流的概念,流是階段的集合,而階段是處理程序的集合。根據給定方法調用的 MEP,與其關聯的流的數量可能會有所變化。 

          部署模型
          Axis 1.x 中,用戶必須手動調用管理客戶機,并更新服務器類路徑,然后重新啟動服務器,以應用更改。這個有點麻煩的部署模型對新手肯定是一道障礙。Axis2 經過了精心的設計,能夠克服此缺點,并提供靈活、用戶友好、可方便進行配置的部署模型。Axis2 部署引入了類似于 Java™ 2 Platform Enterprise Edition (J2EE) 部署機制的概念,開發人員可以在其中將所有類文件、庫文件、資源文件和配置文件一起打包為存檔文件,并將其放置在文件系統中的指定位置。

          模塊體系結構
          Axis 1.x 中,要添加處理程序,需要首先更改全局配置文件,然后需要重新啟動系統,并沒有在運行時更改處理程序鏈的動態方法。為了克服這個問題和增加新特性,Axis2 引入了 Web 服務擴展或模塊的概念;其中模塊的主要工作是對核心功能進行擴展。在 Axis 1.x 中,可以通過向處理程序鏈添加處理程序來實現此目標。與 Axis 1.x 處理程序鏈相比,使用模塊的優勢在于,您可以在根本不改變全局配置文件的情況下添加新模塊。同時,模塊是一個自容器,其中可以包含處理程序、第三方庫、模塊相關資源和模塊配置文件。 

          XFire VS Axis
          XFire是與Axis2 并列的新一代WebService平臺。之所以并稱為新一代,因為它:

          1. 支持一系列Web Service的新標準--JSR181WSDL2.0 JAXB2WS-Security等;

          2. 使用Stax解釋XML,性能有了質的提高。XFire采用Woodstox Stax實現;

          3. 容易上手,可以方便快速地從pojo發布服務;

          4. Spring的結合;

          5. 靈活的Binding機制,包括默認的Aegis,xmlbeans,jaxb2,castor

          XFireAxis1性能的比較
          XFire
          Axis1.32-6

          XFire的響應時間是Axis1.31/21/5

          XFireAxis2的比較
          雖然XFireAxis2都是新一代的WebService平臺,但是Axis21.0版本還不是一個穩定的版本。在XFire捐獻給apache后有人認為Axis2將會滅亡。在很多人眼里,Axis2并不是pojo形式,Dan Diephouse證明了XFireAxis更有市場。用XFire進行WebService的開發比Axis2簡單很多。

          AXIS VS CXF
          SOA領域,我們認為Web ServiceSOA體系的構建單元(building block)。對于服務開發人員來說,AXISCXF一定都不會陌生。這兩個產品都是Apache孵化器下面的Web Service開源開發工具。 Axis2的最新版本是1.3.CXF現在已經到了2.0版本。

          這兩個框架 都是從已有的開源項目發展起來的。Axis2是從Axis1.x系列發展而來。CXF則是XFireCeltix項目的結合產品。Axis2是從底層全部重新實現,使用了新的擴展性更好模塊架構。 CXF也重新的深化了XFireCeltix這兩個開發工具。

          新產品的退出導致了幾個問題。是不是現有的使用Axis 1.xXFireCelix的應用需要遷移的新的版本上。如果一個開發人員確定要遷移它的應用到新的框架上,那么他應該選擇哪一個呢?相反的,如果一個開發者決定從頭開發一個新的Web Service,他應該使用哪個呢? 這兩個框架哪一個更好一些呢?

          對于系統遷移來說,也許遷移到新的框架并不難。AxisCXF都提供了遷移的指導。能夠給開發者一些遷移的技巧和經驗。但是對于這樣遷移,這兩個開源項目都沒有提供遷移的工具。對于這樣的遷移工作,盡管很值得去尋找所有的可行方案。Axis2CXF都有各自不同的WebService開發方法,每個方法都有相當數量擁護者。

          通過一個比較矩陣來比較Axis2CXF變得有現實的意義。這兩個項目都開發不夠成熟,但是最主要的區別在以下幾個方面:

          1.CXF支持 WS-AddressingWS-Policy WS-RM WS-SecurityWS-I Basic ProfileAxis2不支持WS-Policy,但是承諾在下面的版本支持。
          2. CXF
          可以很好支持SpringAxis2不能
          3. AXIS2
          支持更廣泛的數據并對,如XMLBeansJiBXJaxMeJaxBRI和它自定義的數據綁定ADB。注意JaxMEJaxBRI都還是試驗性的。CXF只支持JAXBAegis,并且默認是 JAXB 2.0
          4. Axis2
          支持多語言-除了Java,他還支持C/C++版本。
          比較這兩個框架的Web Service開發方法與比較它們的特性同樣重要。 從開發者的角度,兩個框架的特性相當的不同。 Axis2的開發方式類似一個小型的應用服務器,Axis2的開發包要以WAR的形式部署到Servlet容器中,比如Tomcat,通過這些容器可以對工作中的Web Service進行很好的監控和管理。Axis2 Web administrion模塊可以讓我們動態的配置Axis2.一個新的服務可以上載,激活,使之失效,修改web服務的參數。管理UI也可以管理一個或者多個處于運行狀態的服務。這種界面化管理方式的一個弊端是所有在運行時修改的參數沒有辦法保存,因為在重啟動之后,你所做的修改就會全部失效

          Axis2允許自己作為獨立的應用來發布Web Service,并提供了大量的功能和一個很好的模型,這個模型可以通過它本身的架構(modular architecture)不斷添加新的功能。有些開發人員認為這種方式對于他們的需求太過于繁瑣。這些開發人員會更喜歡CXF 

          CXF更注重開發人員的工效(ergonomics)和嵌入能力(embeddability)。大多數配置都可以API來完成,替代了比較繁瑣的XML配置文件, Spring的集成性經常的被提及,CXF支持Spring2.0CXF's APISpring的配置文件可以非常好的對應。CXF強調代碼優先的設計方式(code-first design),使用了簡單的API使得從現有的應用開發服務變得方便。

          不論選擇Axis2還是CXF,都可以從開源社區得到大量的幫助。這兩個框架都有商業公司提供服務,WSO2提供AXIS2的支持,Iona提供CXF的支持。這兩公司都有很活躍的開發者社區。 Axis2出現的時間較早,CXF的追趕速度快。如果需要多語言的支持,應該選擇AXIS2。如果需要把的實現側重JAVA并希望和Spring集成,CXF就是更好的選擇,特別是把Web Service嵌入其他的程序中。

          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/dengjianli/archive/2009/06/13/4267264.aspx
           

          posted on 2009-12-14 21:24 shiwf 閱讀(2576) 評論(0)  編輯  收藏 所屬分類: 6. web service-------

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          Copyright © shiwf Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 大丰市| 吉首市| 资源县| 贵定县| 全南县| 长兴县| 新营市| 勃利县| 沧州市| 交口县| 广河县| 东阿县| 枣庄市| 扬州市| 信阳市| 汉源县| 上蔡县| 长岛县| 孝义市| 扬州市| 阿瓦提县| 徐州市| 吉林省| 家居| 温宿县| 梧州市| 密云县| 上栗县| 黄大仙区| 卫辉市| 阿图什市| 合水县| 奈曼旗| 柘城县| 韩城市| 白山市| 启东市| 阜新市| 绵竹市| 崇左市| 江川县|