2014-01-13 3 views
0

У меня есть класс контроллера WebAPI (наследующий от ApiController).Как совместно использовать долговечные ресурсы между несколькими контроллерами в веб-API?

Необходимо прочитать данные, которые существуют на диске. Я не хочу загружаться с диска для каждого запроса.

Так что я хотел бы найти способ ввести зависимость в контроллер.

Должен ли я создать пользовательский преобразователь зависимостей, реализующий IDependencyResolver?

Какие меры по обеспечению безопасности потока необходимо выполнить для моего класса зависимостей?

+3

Статическое свойство в базовом контроллере будет хорошо. Если вы только читаете, нет проблем с потоками, о которых стоит беспокоиться. –

+0

Включение отдельной зависимости не решит вашу проблему, если зависимость создается при каждом запросе. –

+0

Саймон, что вы подразумеваете под «базовым контроллером»? Новый класс с общедоступными статическими свойствами, содержащими зависимости, от которых мой наследователь может наследовать? –

ответ

1

Вы можете использовать ninject, чтобы ввести зависимость к любым контроллерам, в которых вы нуждаетесь.

Чтобы использовать инъекцию зависимостей для веб-api, вам нужен другой пакет nuget для ninject, называемый «WebApiContrib.IoC.Ninject».

Ninject создает файл calle «NinjectWebCommon.cs» в папке App_Start, где вы можете настроить свои зависимости.

private static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind<ILogLivedResource>().To<LongLiveResourceInstance>().InRequestScope();; 
} 

Более подробную информацию вы найдете here.

Привет, Мишу