ApacheAxisよりもApacheCXFを使用すること、およびその逆の利点は何ですか?
6 に答える
私は完全に偏見があることを覚えておいてください(CXFのPMC議長)が、私の考えは次のとおりです。
厳密に「プロジェクトは私が必要なことを実行できるか」という観点からは、どちらもかなり同等です。CXFが実行できる「エッジケース」があり、Axis2は実行できません。その逆も同様です。しかし、ユースケースの90%については、どちらでも問題なく機能します。
したがって、それは「チェックボックス機能」以外の多くのものに帰着します。
API-CXFは「標準ベース」のAPI(JAX-WS準拠)をプッシュしますが、Axis2は一般的にプロプライエタリなものに向かっています。とは言うものの、CXFでさえ、JAX-WS仕様以外のさまざまなものを構成/制御するために独自のAPIを使用する必要がある場合があります。RESTの場合、CXFは独自のものではなく標準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)は両方で同じであるため、パフォーマンスは完全に同等です。
それが質問にまったく答えるかどうかはわかりません。それが少なくともいくつかの情報を提供することを願っています。
:-)
ダン
- Axis2:市場でよりユビキタスであり、より多くのバインディングをサポートし、C /C++のような他の言語をサポートします。
- CXF:はるかに使いやすく、Springにやさしく、一部のWS-*拡張機能のサポートが迅速になりました。
もう一つは、コミュニティの活動です。axisとcxf(2013)のメーリングリストトラフィックを比較します。
したがって、これが使用法の指標である場合、axisはcxfよりもはるかに使用量が少なくなります。
ohlohでCXFとAxisの統計を比較します。CXFのアクティビティは非常に高く、Axisは全体的にアクティビティが低くなっています。
これは、CXF(赤)とAxis1(緑)、Axis2(青)の経時的なコミット数のグラフです。
CXFの利点:
- CXFは、WS-Addressing、WS-Policy、WS-RM、WS-Security、およびWS-IBasicProfileをサポートします。
- CXFはJAX-WSAPIを実装します(JAX-WS 2.0 TCKによる)。
- CXFは、Springや他のフレームワークとの統合が優れています。
- CXFは、インターセプター戦略の点で高い拡張性を備えています。
- CXFには、面倒なXMLファイルの代わりに、APIを介してより構成可能な機能があります。
- CXFにはバインディング:SOAP、REST / HTTPがあり、そのデータバインディングはJAXB 2.0、Aegisをサポートします。デフォルトでは、JAXB2.0およびより厳密なJava標準仕様を使用します。
- CXFには、JavaからWSDL、WSDLからJava、XSDからWSDL、WSDLからXML、WSDLからSOAP、WSDLからサービスなどの豊富なツールキットがあります。
Axis2の利点:
- Axis2は、WS-Policyを除いて、WS-RM、WS-Security、およびWS-IBasicProfileもサポートしています。今後のバージョンでサポートされる予定です。
- Axisには、選択したデータバインディングのオプションがあります
- Axis2は、C /C++バージョンとJavaバージョンを含む複数の言語をサポートしています。
- Axis2は、XMLBeans、JiBX、JaxMe、JaxBRI、および独自のネイティブデータバインディングであるADBを含む、より広範囲のデータバインディングをサポートします。CXFより長い歴史。
まとめ:上記の利点項目から、Axis2とCXFをそれぞれのメリットで比較することをお勧めします。それらはすべて、特定の分野でさまざまな十分に開発された領域を持っています。CXFは非常に構成可能で統合可能であり、豊富なツールキットがサポートされており、Javaコミュニティに近いです。Axis2は、多くの点でミニチュアのアプリケーションサーバーに似たアプローチを採用しています。複数のプログラミング言語にまたがっています。Axis2は独立しているため、他のアプリケーションから独立したスタンドアロンのWebサービスに適しており、さまざまな機能を提供します。
開発者として、適切なフレームワークを選択するという私たちの見方を一致させる必要があります。どのフレームワークを選択しても、アクティブで安定したオープンソースコミュニティのメリットが得られます。パフォーマンスに関しては、同じ機能に基づいて同じWebコンテナーで構成されたテストを実行しました。その結果、CXFのパフォーマンスはAxis2よりも少し優れていることがわかりました。単一のケースでは、それらの機能とパフォーマンスが正確に反映されていない可能性があります。
一部の研究記事では、Axis2独自のADBデータバインディングは、追加機能(WS-Security)がないため、CXFよりも少し高速であることが明らかになっています。Apache AXIS2は比較的最も使用されているフレームワークですが、Apache CXFは、開発の容易さ、現在の業界トレンド、パフォーマンス、全体的なスコアカード、およびその他の機能を比較的考慮して、他のWebサービスフレームワークよりも優れています(Webサービスオーケストレーションのサポートが明示的に必要な場合を除き、ここでは必要ありません)。 )。
私の経験によると、CXFはSpring環境に構成するという点で優れています。また、生成されたクラスは簡単に理解できます。そして、それがよりアクティブになるにつれて、AXISまたはAXIS2と比較してより良いサポートが得られます。
CXFのもう1つの利点は、すぐに使用できるNTLMV2認証を使用してWebサーバーに接続することです。(Windows 2008以降で使用)CXFを使用する前に、Axis2をハッキングしてHTTPClient V4+JCIFSを使用してこれを可能にしました。