Asp.net核心,我不明白的基本问题

时间:2017-02-14 02:01:17

标签: asp.net caching dependency-injection asp.net-core

第一个问题:

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中的

我会在几分钟内完成所有这一切,但它的微软嘿

1 个答案:

答案 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容器定义不同的实例化规则。