Web サービスを操作する場合のエンドポイント、サービス、ポートの違いは何ですか?
-
08-06-2019 - |
質問
Apache CXF を使用して、約 10 個の Java クラスを Web サービスとして公開しました。
CXF、Axis、.NET を使用してクライアントを生成しました。
Axis および CXF では、「サービス」または「ロケーター」が生成されます。このサービスから「ポート」を取得できます。「ポート」は、Web サービスによって公開されるメソッドを個別に呼び出すために使用されます。
.NET では、「サービス」は Web サービスへの呼び出しを直接公開します。
Web サービスに関して、ポート、サービス、ロケーター、エンドポイントの違いを説明できる人はいますか?
軸:
PatientServiceImplServiceLocator locator =
new PatientServiceImplServiceLocator();
PatientService service = locator.getPatientServiceImplPort();
CXF:
PatientServiceImplService locator = new PatientServiceImplService();
PatientService service = locator.getPatientServiceImplPort();
。ネット:
PatientServiceImplService service = new PatientServiceImplService();
解決
飛び乗ってみたい http://www.w3.org/TR/wsdl.html これはポート、サービス、エンドポイントをかなりよく説明していると思います。ロケーターは、一部の WS スタックがサービス エンドポイントへのアクセスを提供するために使用する実装固有のメカニズムです。
他のヒント
Kevin Kenny の回答に基づいて情報を見つけましたが、他の人のためにここに投稿すると思いました。
WSDL ドキュメントは、サービスをネットワーク エンドポイントまたはポートの集合として定義します。WSDL では、エンドポイントとメッセージの抽象的な定義が、具体的なネットワーク展開やデータ形式のバインディングから分離されます。これにより、抽象定義の再利用が可能になります。交換されるデータの抽象的な説明であるメッセージと、操作の抽象的なコレクションであるポート タイプです。特定のポート タイプの具体的なプロトコルとデータ形式の仕様は、再利用可能なバインディングを構成します。ポートはネットワーク アドレスを再利用可能なバインディングに関連付けることによって定義され、ポートの集合によってサービスが定義されます。したがって、WSDL ドキュメントでは、ネットワーク サービスの定義に次の要素が使用されます。
- 種類– 何らかの型システム (XSD など) を使用したデータ型定義のコンテナー。
- メッセージ– 通信されるデータの抽象的な型付き定義。
- 手術– サービスによってサポートされるアクションの抽象的な説明。
- ポートの種類– 1 つ以上のエンドポイントによってサポートされる一連の抽象的な操作。
- バインディング– 特定のポートタイプの具体的なプロトコルとデータ形式の仕様。
- ポート– バインディングとネットワーク アドレスの組み合わせとして定義された単一のエンドポイント。
- サービス– 関連するエンドポイントのコレクション。
それを付け加えておきたいと思います <port>
そして <endpoint>
同じ目的を果たしますが、 port
WSDL 1.1 で使用され、 endpoint
WSDL 2.0による。
すでに述べたように、これらの用語はスタックごとに異なる意味を持ちます。Web サービスに対する一般的な唯一の正しい答えはありません。