これはJava Web サービスの複製のように見えるかもしれませんが、どこから始めて、どこから続ければよいか知りたいです。Web サービスに関するページを読んでいると、非常に多くの専門用語や混乱が (少なくとも私にとっては!) あります。非常に多くの用語があります - JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB's
Web サービスなど、私が知らない用語です。このユーザー グループは、理解しやすくフォローしやすい Java Web サービスの概要をまとめて提供できますか? あなたの親切に感謝し、あなたの助けに感謝します.
11580 次
2 に答える
34
これは、Web サービスを理解するのに少し難しいです。ウィキペディアのページはまともですが、まだいくつかの要素が欠けています.
この回答はコミュニティ ウィキとしてフラグを立てたので、お気軽に更新または修正してください。あくまで基礎です。
肥大化した用語:
まず、Web サービスという用語は、多くのことを指すために使用されます。多くの人が SOAP ベースの Web サービスを指すためにこの用語を使用していますが、この用語は、Web インターフェースを介して提供されるあらゆるサービスを表すために使用できます。これは混乱の元です。
実装と設計スタイル:
- SOAP ベース-- SOAP は依然として Web サービスのデファクト スタンダードです。SOAP は、メッセージと例外の交換を記述する HTTP 上のプロトコルです。SOAP は、後で追加されたすべてのWS-* 標準により、単純なものから非常に複雑なものに成長しました。最も重要なものは、WS-Policy、WS-Security、WS-Addressing、WS-Transaction です。もう 1 つの重要な仕様は、大きなメッセージ用の MTOM です。
- RESTful -- RESTfulという用語は、サービスがステートレスであり、すべての関連情報がパラメーターとして渡されるという事実に関連しています。また、SOAP のようなプロトコルを使用する代わりに、プレーンな HTTP動詞が使用されます。
Get
Put
Delete
Update
- ステートレス-- 通常、WS はステートレスです。処理されるビジネスは、要求と応答を照合するために使用される、いわゆる相関識別子 (WS-Addressing を使用) に依存することがあります。HTTP はステートレスであるため、これはセッション識別子を Cookie に保存するのと同じ考え方です。
- ステートフル-- ステートフルな WS を持つという提案がいくつかありますが、私はそれについてあまり知りません。
実装とテクノロジー スタック:
- サーブレット-- WS を実装する最低レベルの方法: 基本的に、リクエストを解析し、HTTP レスポンスをすべて自分で吐き出します。
- EJB -- EJB3 以降、EJB は Web サービスとして非常に簡単に公開できます。もちろん、EJB コンテナーが必要です。
- Apache Axis -- 以前は人気のテクノロジー スタックでしたが、現在は衰退しています。
- Apache CXF -- もう 1 つの一般的な選択肢。
- JBossWS -- もう 1 つの一般的な選択肢です。
- JAX-WS -- Sun の公式 Web サービス スタック。非常に優れています。私が知る限り、これは単純に JAX-WS に名前が変更された JAX-RPC に取って代わります。
関連する概念と専門用語:
- WSDL -- SOAP ベースの WS の場合、Web サービスのコントラクト/インターフェースを定義します。
- コントラクト ファースト-- 事前に提供された任意の WSDL をテクノロジがサポートできるという事実を指します。Web サービスの実装に基づいて WSDL を生成する実装技術とは対照的に、この場合、WSDL は必要に応じて常にカスタマイズできるとは限りません。
- プロファイル-- この混乱を単純化するために、相互運用性のためにサポートする必要がある関連する仕様/機能のグループであるプロファイルを導入しました。主なものは WS-I Basic Profile です。
- UDDI と発見-- 潜在的な消費者が発見できるように、Web サービスは公的な登録簿に公開されると考える人もいるようです。このビジョンが勢いを増したとは思いません。
于 2010-05-11T12:41:58.967 に答える
0
「コントラクトファースト」Web サービスについて私が知っている最良の説明は、Spring web service module です。
于 2010-05-11T12:21:28.587 に答える