【问题标题】:ASP.NET Boilerplate Domain Layer appears to contain non-Domain classesASP.NET 样板域层似乎包含非域类
【发布时间】:2018-02-20 01:41:18
【问题描述】:

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

    Authorization
    Confirguration
    Editions
    Features
    Identity
    Localization
    MultiTenancy
    etc

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

【问题讨论】:

    标签: c# design-patterns domain-driven-design aspnetboilerplate


    【解决方案1】:

    你看到的它叫做Module Zero,它旨在实现 ASP.NET Boilerplate 框架的所有基本概念,例如租户管理(多租户)、角色管理、用户管理、会话、授权(权限管理)、设置管理、语言管理、审计日志等。

    Module-Zero 定义实体并实现域逻辑(域层),因为它是您系统的configuration context 的一部分。

    【讨论】:

    • 谢谢。你能提供一个它执行的域逻辑的例子吗? +1 参考模块零。
    【解决方案2】:

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

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

    您正在谈论这个项目: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 架构的应用程序是好的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-02
      相关资源
      最近更新 更多