6

私のWebサービスプロバイダーは大きなWSDLファイルを提供してくれますが、内部で使用する関数はごくわずかです。

大きなWSDLは、アプリケーションのパフォーマンスに悪影響を与えると思います。

クライアントアプリケーションでWebサービスを使用しているため、起動時間メモリ使用量が問題になります。WSDLが大きいということは、jax-wsがバインディングを実行するのに時間がかかり、スタブクラスのためにより多くのメモリを使用することを意味します。

WSDLファイルを軽量バージョンにトリミングすることは可能ですか?この目的のためのツールはありますか?

私のWebサービスプロバイダーが別のWSDLを生成するとは思わない。ビルドスクリプトで自動実行する必要があるかもしれません。

4

7 に答える 7

4

要するに、あなたの答えは「ツールはありませんが、DIY はできます」です。

私のWSDLには未使用の関数とデータ構造のスキーマが多すぎるため、それを実行できる簡単なツールがあればいいのにと思います。

自動化できれば、WSDL -> トリムされた WSDL -> クライアント スタブ クラスを生成します。未使用のものは何も生成されず、誤用もメンテナンスも必要ありません。生成されたコードには触れません。使用中のコードに集中できます。小さい JAR、短い XML 解析時間。WSDL が更新された場合、クライアント スタブ クラスを再構築して単体テストを実行するだけで済みます。

私は人間の呼び出しから遠ざけようとしました。時間がかかり、間違いやすく、元の WSDL を少し変更するたびにやり直す必要があります。

私は WSDL スキーマに精通していません。XSLTでできると思いますか?

于 2009-01-01T08:41:45.003 に答える
2

問題は WSDL 自体のサイズではありません。重要なのは、生成されたコードのサイズです。たとえば、Axis2 を使用して大規模な WSDL からコードを生成する場合、WSDL 操作ごとに Request/Response クラスと、それらの戻り値の型のクラスを作成することになります。後で巨大なスタブ クラスになってしまい、不要な Web サービス操作に必要なクラスをインポートするため、パフォーマンスに影響を与える可能性があります。

それを行うための簡単なツールはありません。私は通常、メモ帳 ++ を使用してそれを行いますが、はい、常に間違いを犯す可能性があります。

もう 1 つのよくある間違いは、ほとんどの場合 (少なくとも私の場合は) Sync スタイル メソッドのみを使用する場合に、Sync スタイル メソッドと Async スタイル メソッドの両方を生成することを選択することです。これにより、スタブのサイズも劇的に増加する可能性があります。

于 2014-07-03T15:08:09.277 に答える
2

WSDL のサイズは、パフォーマンスにまったく影響を与えません...ダウンロードしたり、リクエストごとに解析したりしない限り。後者を行っている場合は、しないでください。サービスが変更された場合にのみ処理する必要があり、サービスは常に互換性を持って変更され、古いメッセージを継続的にサポートする必要があります (少なくとも一部の重複期間)。

WSDL の処理はプログラムの変更と見なし、バージョン管理やテストなどを行って、他のリリースと同様に行う必要があります。

于 2008-12-31T09:18:51.417 に答える
1

WSDLをトリミングする必要はありません。このパスをたどる準備ができている場合は、スタブクラス内の不要なものを削除するだけです。すべてがまだ機能していることを確認するために行くときにそれをテストすることを忘れないでください。

于 2008-12-31T04:19:43.877 に答える
1

あなたが話しているツールを私は使用していませんが、コードが WSDL ファイルに触れることなく、Web サービス メソッドを正常に実行できます。

これは、簡単なテストを実行するのに適した時期のようです。使用する予定の単純なメソッドの 1 つを実行するために必要なものを除いて、WSDL ファイルからすべてを切り取ります。代わりに、その WSDL のコピーを参照してください。それが機能する場合は、次に何をすべきかがわかります。

于 2008-12-31T03:08:22.850 に答える
1

必要のないメソッドに対応する <wsdl:operation> 要素を手動で削除して、それで十分かどうかを確認できます。ファイルの残りの部分に触れることなく、これらの要素を削除できるはずです。

于 2008-12-31T05:17:37.893 に答える
1

コンパイル時に(AXIS wsdl2java などを介して)クライアント スタブ クラスを生成する場合、WSDLの物理サイズは問題になりません。ダウンロード時間が問題になる場合は、ファイルをローカルにキャッシュすることを検討してください。解析時間が問題になる場合は、ファイルをトリミングするか、解析されたオブジェクトをキャッシュすることを検討してください。プロバイダーが新しい WSDL を発行するときに変更を統合する必要があるため、ファイルをキャッシュまたはトリミングするときは注意してください。サービスが再起動されるたびに、または一定の間隔で、キャッシュ/トリミングされた WSDL を更新することを検討してください。

于 2008-12-31T08:13:37.027 に答える