, поэтому я хочу создать службу, которая обращается к внешнему API, и я хочу кэшировать общие запросы из API внутри этой службы, это зависит от 3 других служб, но я хочу дать ей свой собственный экземпляр кэш, MemoryDistributedCache впоследствии может быть изменено на что-то другоеПравильно ли это aspnetcore? Service & Dependency Injection
services.AddSingleton<ISomeApi, SomeApi>(provider => new SomeApi(
Configuration.Get<Options>(),
new MemoryDistributedCache(new MemoryCache(new MemoryCacheOptions())),
provider.GetService<ILogger<SomeApi>>()
));
теперь от моих контроллеров я могу получить доступ к API через DI, он прекрасно работает, но я не уверен, если кто-то его рода анти-паттерна, или если есть лучше способы сделать это
Я имею в виду, что настоящая проблема заключается в отделении внутреннего кеша, запрашивая IDistributedMemory из одной службы w ould дает мне тот же объект, как если бы я запрашивал его из другой службы, они должны быть отделены.
Зачем нужен отдельный кеш? Кроме того, просто примечание: 'GetService()' возвращает null, если служба не найдена. Поэтому, если вашему сервису действительно нужен регистратор, используйте 'GetRequiredService ()'. –
juunas
позволяет сказать, что один кэш поддерживается одной системой базы данных, второй кэш поддерживается другим – gdpm