Asp.net core 如何将基础架构与.NetCore WebAPI完全分离,或者我应该这样做?
作为软件开发人员,我们知道“依赖倒置原则”和“关注点分离”是我们应该遵循的两条主要规则。大多数架构模式(如“干净的架构”)都为我们提供了一些实现细节。但示例项目缺少一些细节。我也找不到一个全面的解决办法 我的服务解决方案有3个项目。这些是:Asp.net core 如何将基础架构与.NetCore WebAPI完全分离,或者我应该这样做?,asp.net-core,design-patterns,dependency-injection,inversion-of-control,clean-architecture,Asp.net Core,Design Patterns,Dependency Injection,Inversion Of Control,Clean Architecture,作为软件开发人员,我们知道“依赖倒置原则”和“关注点分离”是我们应该遵循的两条主要规则。大多数架构模式(如“干净的架构”)都为我们提供了一些实现细节。但示例项目缺少一些细节。我也找不到一个全面的解决办法 我的服务解决方案有3个项目。这些是: 服务核心 服务、基础设施 服务Api 据我所知,我可以将引用从基础架构添加到核心。从Api项目到核心。因为,基础设施项目有一些实现细节,而api项目不需要知道这些实现细节 据此: 问题1: 对于数据库作业,我可以在核心项目中放置一个IRepository
- 服务核心
- 服务、基础设施
- 服务Api
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog();
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
})
.useserlog();
我假设Service.Api是应用程序的入口点。那就是你把钱放在那里的地方。入口点。所以,是的:Service.Api应该引用Service.Infrastructure
日志实现也是如此,但请记住,最好的地址是。您不需要Service.Core中的ILogger
接口。添加一个是一种代码味道,因为日志记录不是一个域模型问题。我假设Service.Api是应用程序的入口点。那就是你把钱放在那里的地方。入口点。所以,是的:Service.Api应该引用Service.Infrastructure
日志实现也是如此,但请记住,最好的地址是。您不需要Service.Core中的
ILogger
接口。添加一个是一种代码味道,因为日志记录不是域模型问题。这种避免引用的尝试只会导致更多的混乱。只需了解组合根用户需要了解所有部分,以便正确地映射/注册抽象及其实现。也就是说,请注意:“请编辑问题,将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免一次问多个不同的问题”这种避免引用的尝试只会导致更多的混乱。只需了解组合根用户需要了解所有部分,以便正确地映射/注册抽象及其实现。也就是说,请注意:“请编辑问题,将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免一次问多个不同的问题”Hello@Mark,谢谢你的回答。这个答案不仅是我需要的,而且给了我一个很好的起点。我读过一些关于架构模式的文章,但看起来我需要一些时间和更多的实践来内化这个主题。我读了你的博客。这给了我一些观点。你好@Mark,谢谢你的回答。这个答案不仅是我需要的,而且给了我一个很好的起点。我读过一些关于架构模式的文章,但看起来我需要一些时间和更多的实践来内化这个主题。我读了你的博客。这给了我一些看法。