ABP框架入门

说明:目前学习整理的ABP是ABP vNext版

参考:

ABP官网

ABP官网中文文档 :有部分还没翻译完整,可以改为英文,然后用谷歌浏览器翻译查看

[Abp vNext 源码分析] - 文章目录----myzony

[Abp vNext微服务实践] - 文章目录----一曲肝腸斷录

ABP源码  --源码在根目录的framework文件夹内

由张善友发起的abp国内小组【EasyAbp】:官网地址  、指导文档  、 github源码  

五分钟完成 ABP vNext 通讯录 App 开发 --张善友

ABP学习教程--xhznl (dotnet跨平台公账号推荐)

Abp Vnext2.0核心组件源码解析与简单应用

旧版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())来定义依赖关系

依赖注入

参考:

依赖注入

ABP vNext 自动注入,暗藏天坑如斯

是自动注入的,如果想手动注入需要另外设置

依赖注入约定:在接口与实现类名称中,去掉接口前面的“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。

原文地址:https://www.cnblogs.com/qingyunye/p/13509166.html