2

質問は次の専門分野です。

OO スタイル パラメーターと型パラメーター

Web サービス操作を定義したい場合はどうすればよいでしょうか? このように複雑な型としてパラメータを渡すには

public String insertPerson(Person person);

インターフェイス定義を変更せずに Person の定義を変更できるので、かなりクールに思えます。しかし、C/C++ (gsoap や axis2c など) で実装された別の WS クライアントがこの定義を使用するとどうなるでしょうか。Java で Axis2 を使用して実装された Web サービスにアクセスするのは問題でしょうか? 単純なパラメータ化されたアプローチを使用する方が安全かもしれません:

public String insertPerson(long id, String name, String personalId);

それについてはよくわかりません。どう思いますか?

フレッド

4

2 に答える 2

3

私は最初のアプローチを強く好みます。

ただし、 Person タイプを変更するとインターフェイスが変更されることに注意してください。Webservice のインターフェース (呼び出し規約など) は、WSDL とそれに含まれる (または参照する) XML スキーマによって定義されます。これらのいずれかを変更すると、Web サービスのインターフェイスが変更されます。

純粋に Java の観点から見ると、Person クラス (およびそれが参照するその他のクラス) が Web サービスのインターフェースの一部であるかのように扱う必要があります。

良い点は、古いクライアントを壊すことなく、Person クラス (より正確には、Person クラスによって表される複雑な型/要素) に互換性のある変更を加えることができることです。オプションの要素または属性の追加は、その良い例です。新しいクライアントはそれを使用でき、古いクライアントはそれを認識しませんが、壊れることはありません (サーバーがその存在を強制しないため)。

于 2009-02-03T12:47:55.740 に答える
0

優れた Web サービス フレームワークは、複合型を理解できます。微調整が必​​要な場合があります。Axis2 で対応できます。

特にパラメーターの数が少ない場合 (4 以下) は、一般的にパラメーター化されたアプローチを好みます。これには、WSDL ファイルと生成された SOAP メッセージの書き込みと読み取りが容易になるという利点があります。これは、テストとデバッグに非常に役立ちます。

于 2009-02-03T12:29:43.903 に答える