1

SOAP Web サービスと通信するために、Visual Studio で生成されたプロキシ クラスを使用しています。生成されたクラスは、System.Web.Services.Protocols.SoapHttpClientProtocol から派生します。クラスのインスタンス化にはコストがかかることがわかったので、クラスの Singleton インスタンスを返すようにファクトリ メソッドを変更することを検討しています。ドキュメントによると、クラスはマルチスレッドに対して安全です。

これらのクラスのインスタンスを再利用した経験のある人はいますか? そうすることのマイナス点はありますか (つまり、接続が開いたままになるなど)?

.NET フレームワーク バージョン: 2.0

4

2 に答える 2

0

これらのクラスをシングルトン パターンで使用すると問題が発生するという理由はありませんが、解決しようとしている問題を理解するのに苦労しています。これらのクラスをインスタンス化するのにコストがかかると言うとき、それらを何と比較していますか? プロキシ クラスをインスタンス化するコストは、Web サービスへの http 要求を作成するコストと比較して無視できるはずです。状況を説明したり、パフォーマンスのボトルネックがプロキシ クラスのインスタンス化によって引き起こされていることを示すコードを投稿したりできますか。

于 2010-05-27T22:23:59.413 に答える
0

オーバーヘッドとは別に、プロキシのシングルトンをインスタンス化する理由は複数考えられますが、それはあまり多くないことに同意します。最大の理由は、サービス コール間でセッションを維持することです。すべてが同じ Web サービス メソッドを使用する複数のページを持つアプリケーションを想像してみてください。通常、Web サービス呼び出しのセッションは、プロキシで Cookie パラメータを設定することによって実行されます。

proxy.CookieContainer = new System.Net.CookieContainer();

ページ操作ごとに新しいプロキシを作成している場合、セッションはページごとに失われます。すべてのページで使用されるシングルトン プロキシを作成すると、この問題は解決します。

于 2011-04-08T16:07:07.467 に答える