2013-03-11 9 views
7

私はService Stackのフレームワークを使ってRest APIを開発しています。すべてのレイヤーが分離されているため、ビジネスロジックレイヤーの単体テスト用にDALモックを作成できます。どのレイヤでキャッシュが実装されていますか?

私は制御の反転でキャッシュを設定しています:

MemoryCacheClientは、いくつかの方法で ICacheClientを実装する単純なクラスです

container.Register<ICacheClient>(new MemoryCacheClient());

ここに質問があります:コントロールの反転によってキャッシュへの呼び出しを含める最善のレイヤーは何ですか?

  • これはBLLにある可能性がありますが、単体テストに問題はありませんか?

  • 私はIOCを失わなければならないことを知って、DALにいる可能性がありますか?そして、この場合、私はWebサーバーのキャッシュに依存しますが、それは間違っている可能性があります。

  • 私はここでいくつかのロジックを持つことができ、いくつかの機能を失う可能性があることを知って、Webインターフェイスにすることができますか?

  • WebインターフェイスとBLLの間に新しいレイヤが作成される可能性がありますか?

私は多くのことを検索し、いくつかの記事を読んで、ない幸運としました:

ありがとうございました

答えて

5

キャッシングはどちらのレイヤーにもある必要はありません。装飾されたメソッドでキャッシングを利用する呼び出しをラップし、IoCコンテナ内のキャッシングデコレータの使用を構成することで、ビジネスロジックとデータアクセスロジックから外部に保持できます。

Iは、具体的にServiceStackを用いてこれを行っていないが、パターンが十分に立証されている:

  • Loosely coupled .NET Cache Provider using Dependency Injection(動的プロキシを利用)
  • Inversion of Control and Dependency Injection: Working with Windsor Container
  • Caching as a Cross-Cutting Concern using Castle Windsor

  • 関連する問題