gpt4 book ai didi

c# - ASP.NET 样板域层似乎包含非域类

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:19 24 4
gpt4 key购买 nike

我最近对 ​​ASP.Net Boilerplate ( https://aspnetboilerplate.com ) 做了一些分析。我注意到域层 (MyProject.Core) 具有以下文件夹(这些是默认创建的):

    Authorization
Confirguration
Editions
Features
Identity
Localization
MultiTenancy
etc

为什么要将所有这些都放在应用程序的域层中?据我所见;我相信大部分代码应该在应用层(也可能是服务层)中找到。

最佳答案

问得好,如果你只看文件夹名称。但我想你还没有深入研究文件夹中的源代码。

首先,我并不是说它是最好的解决方案架构。我们正在不断改进它,我们可能会有错误。请注意,我们的方法是最佳实践和务实方法的结合。我将尝试简要解释一下。

您正在谈论这个项目:https://github.com/aspnetboilerplate/module-zero-core-template/tree/master/aspnet-core/src/AbpCompanyName.AbpProjectName.Core那么,让我们调查一下文件夹:

本地化

它不包含任何本地化逻辑(它是在框架级别,在 ABP 中完成的。因此,它在基础设施层)。它仅定义本地化文本。

虽然通常它可以很容易地移动到 web 层(在 Core 项目中没有直接依赖),但我们将它放在 Core 层中,因为我们认为它可能在另一个应用程序中也需要。认为您有一个 Windows 服务只引用了 .Core 项目并且想要使用本地化文本,比如用他自己的语言向用户发送电子邮件。请注意,Windows 服务通常不应引用 Web 层。因此,我们在这里采用务实的方法。我们可以将本地化添加到另一个 dll 项目,但这会使解决方案更加复杂。

授权

主要包括User、Role..实体和UserManager、RoleManager领域类。与本地化类似,它不包括实际的授权逻辑。它还包括一些其他类,但它们赚的不多。我们认为如果我们有更多的应用程序层,将它们放在这里会对我们有所帮助。如您所知,作为最佳实践,每个应用程序都可以拥有自己的应用程序层。

配置

AppConfigurations 用于在不同应用(Migrator 和 Web 应用)之间共享“配置读取”代码。同样,这可能在另一个“Shared Utils”库中。但我们希望保持解决方案结构平衡,因此它反射(reflect)了主要的层和结构,但对于中级开发人员来说并没有那么复杂。

版本

仅包含 EditionManager 类,这是一个用于版本管理的域服务。

特点

仅包含 FeatureValueStore,它是一个类似于存储库的适配器类。看它的代码,它已经是空的。

Multi-Tenancy

包括租户实体和 TenantManager 类,它们已经是域层的一部分。同样,此处不包括与基础架构相关的 Multi-Tenancy 功能(例如数据过滤或确定当前租户)。

...等等...

所以,不要光看名字就有想法,请深入检查项目。一些代码可以移到上层或 utils 库,但我认为一般结构对于启动 DDD 架构的应用程序是好的。

关于c# - ASP.NET 样板域层似乎包含非域类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46162053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com