说明:目前学习整理的ABP是ABP vNext版
参考:
ABP官网中文文档 :有部分还没翻译完整,可以改为英文,然后用谷歌浏览器翻译查看
[Abp vNext 源码分析] - 文章目录----myzony
[Abp vNext微服务实践] - 文章目录----一曲肝腸斷录
ABP源码 --源码在根目录的framework文件夹内
五分钟完成 ABP vNext 通讯录 App 开发 --张善友
ABP学习教程--xhznl (dotnet跨平台公账号推荐)
旧版ABP:官网、官网英文文档、中文文档、 基于DDD的现代ASP.NET开发框架--ABP系列文章总目录
基础细节
实体类 & 聚合根
参考:
可继承Entity类或继承AggregateRoot聚合根类
Entity类 或 IEntity接口:
- Entity<TKey>类只是用给定的主 键类型 定义了一个Id属性,在上面的示例中是Guid类型.可以是其他类型如string, int, long或其他你需要的类型
AggregateRoot 聚合根类:
- 继承 Entity<TKey>类
- 聚合是域驱动设计中的一种模式.DDD的聚合是一组可以作为一个单元处理的域对象.例如,订单及订单系列的商品,这些是独立的对象,但将订单(连同订单系列的商品)视为一个聚合通常是很有用的
模块化
参考:模块化
模块类Module与启动类Startup
- 启动类Starup不再处理注入和配置,都放在Module类中来处理。在ConfigureServices方法内指定模块类Module
- 每个服务都有一个模块类Module,继承AbpModule,在模块类的顶部使用DependsOn(typeof())来定义依赖关系
依赖注入
参考:
是自动注入的,如果想手动注入需要另外设置
依赖注入约定:在接口与实现类名称中,去掉接口前面的“I”,剩下的名称与实现类后缀名相同就会自动注入,例如:接口ICalculator 和 ITaxCalculator 会注入到TaxCalculator实现类,会把两个接口注入到一个实现类中,其实就是分别注入2次,一个类可以继承多个接口。
数据传输对象 DTO
参考:数据传输对象(DTO)
数据传输对象(DTO)用于在应用层和表示层或其他类型的客户端之间传输数据.
通常用DTO作为参数在表示层(可选)调用应用服务. 它使用领域对象执行某些特定的业务逻辑,并(可选)将DTO返回到表示层.因此表示层与领域层完全隔离.
领域驱动设计
动态C# API客户端
ABP可以动态创建C#API客户端代理来调用您的远程HTTP服务(REST API)。这样,您无需处理HttpClient
其他低级详细信息即可调用远程服务并获得结果。
动态C#代理会自动为您处理以下内容;
- 通过考虑HTTP方法,路由,查询字符串参数,请求有效负载和其他详细信息,将C#方法调用映射到远程服务器HTTP调用。
- 通过将访问令牌添加到HTTP标头来认证HTTP客户端。
- 从JSON序列化和反序列化。
- 处理HTTP API版本控制。
- 将相关性ID,当前租户ID和当前区域性添加到请求中。
- 正确处理服务器发送的错误消息并引发适当的异常。
任何类型的.NET客户端都可以使用此系统来使用您的HTTP API。