问得好,如果您只看文件夹名称。但是我想你还没有深入研究文件夹中的源代码。
首先,我并不是说它是最好的解决方案架构。我们正在不断改进它,我们可能会遇到错误。请注意,我们的方法是最佳实践和务实方法的结合。我将尝试简要解释一下。
您正在谈论这个项目: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 用于在不同应用程序(迁移器和 Web 应用程序)之间共享“配置读取”代码。同样,这可能在另一个“Shared Utils”库中。但是我们希望保持解决方案结构的平衡,因此它反映了主要的层和结构,但对于中级开发人员来说并不那么复杂。
版本
仅包含 EditionManager 类,它是用于版本管理的域服务。
特点
仅包含 FeatureValueStore,它是一个类似存储库的适配器类。看它的代码,它已经是空的了。
多租户
包括租户实体和租户管理器类,它们已经是领域层的一部分。同样,这里没有包含与基础架构相关的多租户功能(如数据过滤或确定当前租户)。
...等等...
所以,不要只看名字就有想法,请更深入地检查项目。一些代码可以移动到上层或 utils 库,但我认为一般结构对于启动 DDD 架构的应用程序是好的。