web-dev-qa-db-ja.com

Apache CXFとAxisの違い

Apache CXFをApache Axisに使用する利点とその逆の利点は何ですか?

172
Prabhu R

私は完全に偏見を抱いていることに留意してください(CXFのPMC議長)が、私の考えは次のとおりです。

厳密に「プロジェクトで必要なことを実行できますか」という観点から見ると、どちらもかなり同等です。 Axis 2では不可能な、CXFでできる「エッジケース」があります。ただし、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)は両方で同じであるため、パフォーマンスは完全に匹敵します。

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

:-)

ダン

223
Daniel Kulp
  • Axis2:市場でのユビキタス化、より多くのバインディングのサポート、C/C++などの他の言語のサポート。
  • CXF:より使いやすく、よりSpringに対応し、一部のWS- *拡張機能のサポートが高速になりました。
53
vsg

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

したがって、これが使用量のインジケータである場合、軸はcxfよりもはるかに少ない使用量です。

ohlohでのCXFとAxisの統計を比較 。 CXFのアクティビティは非常に高く、Axisのアクティビティは全体的に低くなっています。

これは、CXF(赤)およびAxis1(緑)Axis2(青)の経時的なコミット数のグラフです。 enter image description here

41

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よりもわずかに優れていることを示しています。

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

23
ajithparamban

私の経験では、CXFはSpring環境に設定するという点で優れています。また、生成されたクラスは簡単に理解できます。そして、よりアクティブになっているため、AXISまたはAXIS2と比較してより良いサポートを得ています。

2
Sudip7

CXFのもう1つの利点は、そのままNTLMV2認証を使用してWebサーバーに接続することです。 (Windows 2008以降で使用)CXFを使用する前に、Axis2をハッキングしてHTTPClient V4 + JCIFSを使用してこれを可能にしました。

1
user1717728