2009-05-29 6 views
2

私はWebアプリケーションでプロキシを使用して、会社に関連するさまざまな販売地域、私たちがフィールドで持っている別の店舗など、AS400からデータを返すWCFサービスのオペレーションを呼び出しました。これらの販売地域と店舗は頻繁に変更されず、店舗は年に2回しか追加されず、地域は数年間同じです。WCF InstanceContextMode

私の混乱はInstanceContextModeにあると思います。私は、プロキシクライアントがGetRegions()またはGetStoresForRegion(int regionNumber)を呼び出すときに、単に "Regions"と "Stores"のリストを返すだけです。

InstanceContextModeをsingleに設定し、領域とストアを初期化して何らかのサービス操作の呼び出しに先立って、これは何らかの形で役立ちますか?基本的に今は、すべての呼び出しでDBルックアップを実行しており、必要があるとは思わない。

ユーザーがweb app - > web app page - >にログオンすると領域をドロップダウンする必要があります - > Web開発者がプロ​​キシを呼び出して地域を取得しますが、これはすべてのユーザーがWebアプリケーション基本的には、ユーザーがWebアプリケーションにアクセスするたびに、プロキシがDBに電話をかけるのですが、これはサービス操作を設定する方法に間違いがあると思いますか、まったく誤解していますか?

更新 - サービスは、IISでホストされているので、この全体の問題は、基本的なベストプラクティスの推奨事項は、呼び出しごとの単一インスタンス・サービスを使用することです

答えて

1

議論の余地があるかもしれません。これは最も簡単に作成でき、同時性の悪夢はありません。

ただし、サービスを呼び出すたびにサービスインスタンスが作成され、データベースのバックエンドが照会されます。

可能であれば、これに固執してください。キャッシングロジックをデータベースに入れてみてください。十分なRAMがあれば、頻繁に要求されるデータのほとんどはメモリに残ります。

WCFサービスでConcurrencyMode = multipleにすると、すべての種類の並行性の問題が非常に注意する必要があることが示されます。可能な限り、これを避けてください。

まず、コールごとに1つのインスタンスを試し、本当に必要な場合にのみ最適化してください!

マルク=複数が存在しない

+1

InstanceContextModeは、私はあなたがConcurrencyMode.Multiple意味だと思う –

+0

@PB:もちろん - 私は私の答えを更新します - 指摘に感謝を! –

関連する問題