Кеширане на данните в Контролера


0
Така, опитвам се да кеширам данни във this.HttpContext.Cache[key], но в теста не мога да го мокна. Въпроса ми е дали да направя някакъв provider, който да има методи AddItem и GetItem, и да го инжектирам в контролера ? Дали няма да е overkill ?



Отговори



2
Щом искаш да кешираш нещо то най-вероятно взимаш някакви неща от service. В такъв случай защо просто не си направиш Interception или Decorator на service-a, на контролера не му е нужно, да знае как ти взимаш нещата и че изобщо ползваш кеширане. Така ако решиш, че повече няма да искаш да кешираш всичко е въпрос на Composition и спазваш Open/Closed принципа и няма да се тревожиш за тестваемост.



0
Да вярно, не се бях сетил за Interception-a. Направих го, обаче по доста калпав начин. Не мога да подкарам да intercept-ва само един метод, а не искам да слагам атрибут на сървиса. Докарах го до Това, но мисля, че ще е по-адекватно да intercept-вам само метода. Пробвах със AddMethodInterception, но не иска да захапе.

от magadisho (823 точки)

0
Виждам, че си инсталирал Ninject.Extensions.Interception.DynamicProxy. Пробвай да го махнеш и да сложиш Ninject.Extensions.Interception.Linfu пакета. Едното мисля, че е proxy provider на Castle, a другото на Linfu и има значение кое ползваш.