2013-03-11 14 views
7

Sto sviluppando un'API di Rest utilizzando il framework dello Stack di servizi. Tutti i livelli sono separati in modo da poter creare DAL mock per il testing delle unità del livello della logica aziendale.In quale livello implementare la cache?

sto configurazione della cache con inversione del controllo:

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

Dove MemoryCacheClient è una semplice classe che implementa ICacheClient con alcuni metodi.

E questa è la domanda: qual è il livello migliore in cui includere la chiamata alla cache attraverso questa inversione di controllo?

  • Potrebbe essere nella BLL, ma non porterà problemi ai test unitari?

  • Potrebbe essere in DAL, sapendo che avrei dovuto perdere IOC? E, in questo caso, dipenderò dalla cache del webserver, che potrebbe essere sbagliato.

  • Potrebbe essere nell'interfaccia Web, sapendo che posso avere un po 'di logica qui e addirittura perdere alcune funzionalità?

  • Potrebbe essere tra l'interfaccia web e BLL, creando un nuovo livello?

Ho cercato molto e leggere alcuni articoli, ma senza fortuna:

Grazie

risposta

5

Il tuo caching non deve essere in nessuno dei due livelli. È possibile mantenerlo esterno dalla logica aziendale e dalla logica di accesso ai dati avvolgendo le chiamate che sfruttano il caching in un metodo decorato e configurando l'utilizzo del decoratore di memorizzazione nella cache nel contenitore IoC.

Non ho fatto questo utilizzando ServiceStack specificamente, ma il modello è ben documentato:

Problemi correlati