Application

Application层是业务实现的核心层,大多数业务逻辑实现都在该层进行定义和实现。

通常你只需要定义(或通过代码生成器生成) [实体名]Manager.cs的文件来实现业务逻辑即可。定义的Manager要继承ManagerBase类,该类提供了 QueryCommand的属性,分别对应了只读数据库读写数据库,以进行读写分离操作。

Note

设计模式如仓储模式、CQRS模式、观察者模式、中介模式等是为了更好的组织代码,以及为实现业务功能服务的。本模板并不会特意去采用或实现某种模式,而是基于方便、灵活、可复用的原则去组织代码。

AppConst

应用常量定义目录

Implement

包含了ManagerBase.cs基类,实现常见的数据库读写操作。

提供默认的UserContext,用户上下文封装实现。

Important

为了保持兼容性,请不要直接修改以上默认生成的内容,如果你需要自定义,可通过partial class扩展接口以及继承类的方式实现。

Manager

业务逻辑实现目录,可通过生成器生成,可自由修改。

Services

用来编写自定义服务或引入第三方服务,通常通过依赖注入的方式使用。


实践

对于典型的User的CURD的接口实现场景:

定义实体模型和DTO

设计和编写实体模型和DTO模型

业务层实现

  • 创建或修改UserManager.cs,继承DomainManagerBase<User>,实现IUserManager定义的业务逻辑。
  • 父类已实现常见的CURD操作。

控制器API

在控制器中编写接口,通过调用Manager实现具体逻辑。

建议

  1. 接口层主要是对外提供REST HTTP,请尽可能的遵循REST API相关的规范和约定。
  2. 通常会为每个实体对象(领域模型)编写对应的Manager,相关的操作和方法是面向该实体(领域)。
  3. 在编写业务逻辑时,请先定义对应的IXXXManager接口方法,通过接口约束实体的方法。在依赖注入时,也会通过接口类型去注入。