2013-03-11 2 views
7

Je développe une API de repos en utilisant le framework de Service Stack. Toutes les couches sont séparées afin que nous puissions faire des simulations DAL pour les tests unitaires de la couche logique métier.Dans quelle couche implémenter le cache?

Je la configuration du cache avec inversion de contrôle:

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

MemoryCacheClient est une classe simple qui implémente ICacheClient avec quelques méthodes.

Et voici la question: Quelle est la meilleure couche dans laquelle inclure l'appel au cache par cette inversion de contrôle?

  • Cela pourrait être dans la BLL, mais cela n'entraînera-t-il pas des problèmes aux tests unitaires?

  • Il pourrait être en DAL, sachant que je devrais perdre IOC? Et, dans ce cas, je vais dépendre du cache de webserver, cela pourrait être faux.

  • Il pourrait être dans l'interface Web, sachant que je peux avoir une certaine logique ici et même perdre certaines fonctionnalités?

  • Il pourrait être entre l'interface Web et BLL, créant une nouvelle couche?

J'ai cherché beaucoup et lire quelques articles, mais sans chance:

Merci

Répondre

5

Votre mise en cache n'a pas besoin d'être dans l'une ou l'autre couche. Vous pouvez le garder à l'extérieur de votre logique métier et logique d'accès aux données en encapsulant les appels qui tireraient parti de la mise en cache dans une méthode décorée et en configurant l'utilisation du décorateur de mise en cache dans le conteneur IoC.

Je ne l'ai pas fait cela en utilisant ServiceStack spécifiquement, mais le modèle est bien documenté:

Questions connexes