C# 在下游项目中使用中间件对象的.NET核心模式是什么?
想象一下.NET核心Web项目的以下项目结构C# 在下游项目中使用中间件对象的.NET核心模式是什么?,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,想象一下.NET核心Web项目的以下项目结构 Widget.UIproject(MVC)调用Widget.Business调用Widget.Services调用Widget.Repositoryproject 比如说,Widget.Servicesproject希望使用实现分布式缓存 是将Memcached添加到Startup.ConfigureServices和.Configure中的中间件的模式,将它们传递到控制器的构造函数中,然后使用Memcached构建整个堆栈的构造函数 还是最好在Wi
Widget.UI
project(MVC)调用Widget.Business
调用Widget.Services
调用Widget.Repository
project
比如说,Widget.Services
project希望使用实现分布式缓存
是将Memcached添加到Startup.ConfigureServices和.Configure中的中间件的模式,将它们传递到控制器的构造函数中,然后使用Memcached构建整个堆栈的构造函数
还是最好在Widget.Services项目中使用
var cache=new MemcachedClient()
?Memcached将是您的基础结构。因此,根据您的设计,服务层应该定义兑现抽象,该抽象的实现(使用Memcached)可以(例如)在Widget.Infrastructure
项目中
可能也有很好的理由在存储库层中进行缓存。但这取决于你的需要。然后,您应该在服务层之外定义兑现抽象
服务配置将与任何其他服务(在
启动.ConfigureServices
中)相同,您可以按构造函数在需要的地方注入兑现基础设施。取决于缓存的内容,但通常,您将希望使用DI在您决定使用它的任何层中注入对分布式缓存实现的引用。我通常会将其放在存储库中,让该组件自行考虑是从缓存还是从其配置的存储库中提取数据。