質問

Apache Axis よりも Apache CXF を使用する場合、またはその逆の場合の利点は何ですか?

役に立ちましたか?

解決

私(CXF の PMC 議長)は完全に偏見を持っていますが、私の考えは次のとおりです。

厳密に「プロジェクトで必要なことを実行できるか」という観点から見ると、どちらもほぼ同等です。CXF では実行できても Axis 2 では実行できない「エッジケース」がいくつかあり、またその逆も同様です。ただし、ユースケースの 90% では、どちらでも問題なく機能します。

したがって、「チェックボックス機能」以外にもさまざまな機能が必要になります。

  • API - CXF は「標準ベースの」API (JAX-WS 準拠) を推進しますが、Axis2 は一般的に独自のものを目指しています。とはいえ、CXF であっても、JAX-WS 仕様の範囲外のさまざまなものを設定/制御するために独自の API の使用が必要になる場合があります。REST の場合、CXF は独自の API ではなく標準 API (JAX-RS 準拠) も使用します。(はい、Axis2 の JAX-WS ランタイムについては知っていますが、ツールやドキュメントなどすべてがそれを対象としていません)

  • コミュニティの側面とサポート性 - CXF は、問題に対応し、ユーザーが「フィックスパック」を利用できるようにすることに誇りを持っています。CXF は、2.0.x に対して 12 個のフィックスパック (2 年前にリリースされたため、約 2 か月ごと)、2.1.x に対して 6 個のフィックスパック、そして現在 2.2.x に対して 3 個のフィックスパックを作成しました。Axis2 は実際には古いバージョンを「サポート」しません。「重大な」問題が発生しない限り、修正を入手するには次の大きなリリース (平均して約 9 ~ 10 か月ごと) まで待つ必要がある場合があります。(ただし、どちらを使用しても、ソース コードを取得して自分でパッチを適用したり修正したりできます。オープンソースが大好きです。)

  • 統合 - Spring を使用する場合、CXF は Spring との統合がはるかに優れています。すべての設定などは Spring を通じて行われます。また、人々は CXF を他のアプリケーションにより「埋め込み可能」であると考える傾向があります (私はこの観点から Axis2 を検討したことがありません)。そのようなことがあなたにとって重要かどうかはわかりません。

  • パフォーマンス - どちらも非常に優れたパフォーマンスを発揮します。Axis2 独自の ADB データバインディングは CXF よりも少し速いと思いますが、JAXB (やはり標準ベースの API) を使用する場合は、CXF の方が少し速いです。WS-Security のようなより複雑なシナリオを使用する場合、基盤となるセキュリティ「エンジン」(WSS4J) は両方で同じであるため、パフォーマンスは完全に同等になります。

それが質問にまったく答えているかどうかはわかりません。少なくとも何らかの情報が提供されることを願っています。

:-)

ダン

他のヒント

  • 軸2:市場でより広く普及し、より多くのバインディングをサポートし、C/C++ などの他の言語をサポートします。
  • CXF:はるかに使いやすく、より Spring フレンドリーで、一部の WS-* 拡張機能のサポートが高速になりました。

もう一つはコミュニティの活動です。axis と cxf (2013) のメーリング リストのトラフィックを比較します。

したがって、これが使用状況の指標である場合、axis は cxf よりもはるかに使用されていません。

ohloh で CXF と Axis の統計を比較する. 。CXF のアクティビティは非常に高いのに対し、Axis のアクティビティは全体的に低いです。

これは、CXF (赤) と Axis1 (緑)、Axis2 (青) のコミット数の経時変化を示すグラフです。enter image description here

CXF の利点:

  1. CXF は、WS-Addressing、WS-Policy、WS-RM、WS-Security、および WS-I BasicProfile をサポートします。
  2. CXF は JAX-WS API を実装します (JAX-WS 2.0 TCK による)。
  3. CXF は Spring や他のフレームワークとの統合が強化されています。
  4. CXFはインターセプター戦略の拡張性が高い。
  5. CXF には、煩雑な XML ファイルの代わりに API を介してより構成可能な機能があります。
  6. CXF はバインディング:SOAP、REST/HTTP を備えており、そのデータ バインディングは JAXB 2.0、Aegis をサポートしており、デフォルトでは JAXB 2.0 および Java 標準仕様に近いものを使用します。
  7. CXF には豊富なツールキットがあります。Java から WSDL、WSDL から Java、XSD から WSDL、WSDL から XML、WSDL から SOAP、WSDL からサービス。

Axis2 の利点:

  1. Axis2 は、WS-Policy を除く WS-RM、WS-Security、および WS-I BasicProfile もサポートしています。これは、次のバージョンでサポートされる予定です。
  2. Axis には、選択できるデータ バインディングのオプションがさらにあります
  3. Axis2 は、C/C++ バージョンや Java バージョンを含む複数の言語をサポートしています。
  4. Axis2 は、XMLBeans、JiBX、JaxMe、JaxBRI だけでなく、独自のネイティブ データ バインディングである ADB を含む、より広範囲のデータ バインディングをサポートしています。CXFよりも長い歴史があります。

要約すれば: 上記の利点の項目から、Axis2 と CXF をそれぞれの長所で比較することは良い考えにつながります。それらはすべて、特定の分野でよく開発された異なる領域を持っています。CXF は非常に構成可能で統合可能で、豊富なツールキットがサポートされており、Java コミュニティに近いものです。Axis2 は、多くの点で小型のアプリケーション サーバーに似たアプローチを採用しています。それは複数のプログラミング言語にまたがります。Axis2 はその独立性により、他のアプリケーションから独立してスタンドアロンでさまざまな機能を提供する Web サービスに適しています。

開発者として、私たちは適切なフレームワークを選択するための視点を一致させる必要があります。どのフレームワークを選択しても、アクティブで安定したオープンソース コミュニティの恩恵を受けることができます。パフォーマンスの点では、同じ機能に基づいて同じ Web コンテナ内で構成されたテストを実行しました。結果は、CXF のパフォーマンスが Axis2 よりもわずかに優れていることを示しています。単一のケースは、CXF の機能とパフォーマンスを正確に反映していない可能性があります。

いくつかの研究記事では、Axis2 独自の ADB データバインディングには追加機能 (WS-Security) がないため、CXF よりも少し高速であることが明らかにされています。Apache AXIS2 は比較的最もよく使用されているフレームワークですが、開発の容易さ、現在の業界動向、パフォーマンス、全体的なスコアカード、その他の機能を比較すると、Apache CXF は他の Web サービス フレームワークよりも優れています (Web サービス オーケストレーションのサポートが明示的に必要である場合を除き、ここでは必要ありません) )

私の経験CXF 1としては、春の環境にそれを設定するという点で優れています。また、生成されたクラスを理解することは簡単です。それは、より積極的であるように、私たちは、AXISまたはAXIS2と比較して、より良いサポートを得ます。

CXFのもう一つの利点:それは箱から出してNTLMv2認証を使用してWebサーバに接続します。 (Windows 2008の&アップで使用されます) CXFを使用する前に、私はこれを可能にするためにHTTPClient V4 + JCIFSを使用するのAxis2をハッキングします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top