第一个问题:
services.AddMemoryCache(); // in Startup config
public class AController
{
public AController(IMemoryCache cacheA) { }
}
public class BController
{
public BController(IMemoryCache cacheB) { }
}
问题是cacheA与cacheB
相同我希望拥有私有API(群集连接)和公共API(暴露给前端) 如何在保持DI模式友好的同时将它们分开?
第二个问题;
我想要一个通过HTTP请求一些外部网络服务器的服务 并且其结果将缓存在该服务中,也存储在DB中 所以我们首先查询localCache然后查询DB然后查询外部服务器
该服务的结果将在控制器中使用并发送到前端
如何用所有花哨的asp.netcore模式实现这样的东西? 缓存必须是ONE(单例),所以我们不要浪费数据库请求
?添加服务作为services.SCOPED<>但是如何为每个实例保留它的缓存(一些单独的DI?或静态MemoryCache实例?) 我不知道,没有该死的想法寻求帮助
在node.js中的我会在几分钟内完成所有这一切,但它的微软嘿
答案 0 :(得分:1)
定义两个缓存接口:
public interface IPrivateMemoryCache: IMemoryCache
{
}
public interface IPublicMemoryCache: IMemoryCache
{
}
public class AController
{
public AController(IPrivateMemoryCache cacheA) { }
}
public class BController
{
public BController(IPublicMemoryCache cacheB) { }
}
现在,您可以为IoC容器定义不同的实例化规则。