Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在下游项目中使用中间件对象的.NET核心模式是什么?_C#_Asp.net Core_.net Core - Fatal编程技术网

C# 在下游项目中使用中间件对象的.NET核心模式是什么?

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

想象一下.NET核心Web项目的以下项目结构

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在您决定使用它的任何层中注入对分布式缓存实现的引用。我通常会将其放在存储库中,让该组件自行考虑是从缓存还是从其配置的存储库中提取数据。