2

Webアプリケーションがプロキシを使用して、AS400からデータを返すWCFサービスの操作を呼び出しています。たとえば、会社に関連付けられているさまざまな販売地域、現場にあるさまざまな店舗などです。これらの販売地域と店舗頻繁に変更しないでください。店舗は年に2回しか追加されず、地域は2、3年同じです。

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

InstanceContextModeをsingleに設定し、サービス操作呼び出しの前にリージョンとストアを初期化してデータを設定した場合、これは何らかの形で役立ちますか?基本的に今のところ、すべての呼び出しでDBルックアップを実行しているので、必要はないと思います。

したがって、ユーザーはWebアプリにログオンします->Webアプリページ->リージョンのドロップダウンをロードする必要があります->Web開発者はリージョンを取得するためにプロキシを呼び出します...しかし、これはすべてのユーザーがWebアプリを使用するときに発生するため、基本的に毎回ユーザーがWebアプリにアクセスすると、プロキシがDBを呼び出します。これは愚かであり、サービスオペレーションの設定方法に誤りがあると思いますか、それとも何かを完全に誤解しましたか?

更新-サービスはIISでホストされているため、この質問全体は議論の余地があるかもしれません

4

1 に答える 1

1

基本的なベスト プラクティスの推奨事項は、呼び出しごとの単一インスタンス サービスを使用することです。これは作成が最も簡単で、同時実行の悪夢などはありません。

しかし、もちろん、サービスを呼び出すたびに、サービス インスタンスが作成され、データベース バックエンドがクエリされます。

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

WCF サービスで ConcurrencyMode = multiple にすると、あらゆる種類の同時実行の問題が発生するため、細心の注意を払う必要があります。可能な限りこれを避けるようにしてください。

最初は呼び出しごとの単一インスタンスを試し、本当に必要な場合にのみ最適化してください!

マルク

于 2009-05-29T14:00:52.433 に答える