2011-02-03 15 views
5

私は、ASMX Webサービスを使用して.NET 3.5で書かれた従来のコードの一部を<gulp>で処理しています。シングルトンASMX Webサービスプロキシを使用しても問題ありませんか?

Windowsサービス(FooServiceと呼ぶ)は、クライアント要求に応じて1時間に10〜30回呼び出すWebサービス(BarWSと呼ぶ)用のASMXプロキシを静的にキャッシュしています。

存在する<gulp>レガシーコードこれは、テストするのが非常に難しいさまざまな理由によるものです。私はそれをテスト可能にするために依存関係を壊す過程にあり、この静的参照は私に不思議を感じさせました。私はASMXを使用してから数年経ちましたが、プロキシがスレッドセーフであることを思い出していますが、シングルトン/共有WCFプロキシが問題を開発してフォールトになると同じように使用できなくなるのではないかと思いました。

このプロキシを軽く使用すると(BarWSは30回/時間未満と呼ばれます)、すべての呼び出しで新しいプロキシを作成するほうがはるかに安全だと思っていますが、不要な変更。誰でも知っていますか?

P.S.私はWCFが優れていることを知っていますが、WCFへの移行はこの<gulp>のレガシーコードベースでは現在非常に変化しています。

+4

'legacy'と' .NET 3.5' ... woah ...私は古いと感じます! :) –

+1

*従来のコード*の重要性は2度イタリック体になっていますか? – Amy

+1

@James:サービスをWCFに変更する必要はありませんが、「Web参照」の代わりに「サービス参照」を使用するように変更することを検討してください。 –

答えて

4

プロキシの作成にかかる時間を測定します。それが偽の最適化(私は強くそれが疑われる場合)、インスタンスベースの作成に変更します。静的を避けるのは一般的には良いことです。工場の後ろに置いて、本当にしたいなら少なくともシングルトン型の振る舞いを持つことができますが、この創造的な振る舞いは隠され、クライアントから独立しています。

+0

私は99%が間違って最適化されていると確信しています...私はこの回答を投票していますが、失敗後のプロキシインスタンスの再利用性についての疑問を釘付けにしているわけではありません。ありがとう! –

+0

@Jamesもちろん、ステートフルであるかどうかはわかりません(覚えていない)。そうであれば、あなたは明らかにさらに大きな問題を抱えています:それはスレッドセーフですか? –

+0

MSDNドキュメントはスレッドセーフだと主張していますが、まだこれをテストしていません。サービスの唯一の実装は(もちろんWSDL、ソースコードなしの)ライブ制作サービスであるため、その動作をテストするのは非常に難しいです。それから離れることなく、私はリバースエンジニアリングする必要がありますそれのための偽! –

関連する問題