Web サービスを開発するためのより良いアプローチはどれですか。最初に契約するか、最後に契約するか
それぞれの長所と短所は何ですか?
あなたはどちらの経験がありますか?
編集 この質問は、Web サービスの実装に関するものです (読み取り: SOAP)。問題は、実装クラスを最初にコーディングし、そこから WSDL および XSD スキーマを生成するか (最後にコントラクト)、または WSDL および XSD スキーマを最初に記述し、生成された実装クラス (コントラクトが最初)
Web サービスを開発するためのより良いアプローチはどれですか。最初に契約するか、最後に契約するか
それぞれの長所と短所は何ですか?
あなたはどちらの経験がありますか?
編集 この質問は、Web サービスの実装に関するものです (読み取り: SOAP)。問題は、実装クラスを最初にコーディングし、そこから WSDL および XSD スキーマを生成するか (最後にコントラクト)、または WSDL および XSD スキーマを最初に記述し、生成された実装クラス (コントラクトが最初)
私は両方のアプローチを使用しました。私の提案は、コントラクトファーストスキーマを使用することですが、最初にWSDLをコーディングします。
WSDLファイルの作成には、バインディングやポートなどの奇妙なニュアンスがたくさんあります。手作業ではなく、ツールでこれを実行したいと思います。これを行うのに役立つツールはありますが、どれもより単純なものはありません。
@ウェブサービス 公衆 ...
少なくとも、デプロイメントを検証できます。
XMLスキーマ言語は、Javaで記述できる言語よりもはるかに豊富であるため、スキーマについては、最初に契約を提案しました。私が通常挙げる例は、XMLスキーマが文字列のサイズを制限し、正規表現パターンを適用できることを示しています。Javaとアノテーションでそれを行うと、少し面倒に見えます。
最初に契約としてスキーマを実行するもう1つの利点は、スキーマファイルをHTMLドキュメントに変換するツールが存在することです。
XJCツールは、必要なクラスファイルを生成できます。ただし、最初にそれを行うことをお勧めします。
最終的には、生成されたWSDLファイルを取得し、代わりにそれを使用する必要があります。このようにして、wsimportを使用して、WSDLからスキーマまですべてが有効であることを確認できます。
@WebService実装でwsdlLocation属性を使用してWSDLファイルをデプロイできます。ユーザーがサーバーにWSDLを要求すると、アプリケーションサーバーがバインディングデータを修正しますが、アノテーションは保持されます。そうしないと、要求されたWSDLファイルに注釈が表示されません。
答えは明確な「場合による」と思います。
問題は、コントラクトを作成して公開すると、それに拘束されることです。これにより、変更が難しくなります。不可能ではありませんが、難しいです。
一方、スキーマなどに慣れている場合は、コードよりもコントラクトを台無しにする方が簡単です。したがって、コントラクトにインクリメンタルな変更を加えることができます。
WSDL からコード スケルトンを生成するツールもありませんか? 私はほとんど肯定的です。その場合は、スキーマを「コード」項目にして、そこからコードを生成するのがよいでしょう。