一、Abp vNext 基础篇丨介绍

缘起

在.Net行也目前工作5年,前年认识了老张的哲学,也跟着一起学习了非常多的知识,非常感谢老张鼓励我来做ABP这个系列的教程,我也努努力带着我那小小的海漂梦(上海漂流)来搞起。

ABP vNext 简要介绍

ABP vNext 框架是一个基于ASP.NET核心的完整基础设施,通过遵循软件开发最佳实践和最新技术来创建现代web应用程序和API,不同于老的ABP框架新的 ABP vNext 框架核心库更加精简,因为将原有许多的组件从其核心库抽离成独立的组件。这样开发人员可以更加灵活的选择自己需要的功能进行集成,使项目远离臃肿的库,比起原有的 ABP 框架 ABP vNext 完全基于 ASP.NET Core 丢掉了历史包袱,设计更加合理,更加细粒度的模块化设计。

Abp vNext 官方文档提供了非常全面的功能介绍,官方提供了启动模板,模板遵循了领域驱动设计的最佳实践来进行项目分层,引入了常用的功能模块。

如果你有不错的.Net基础那么Abp你用起来会的心用手,使用过程中遇到的问题几乎可以在官方文档和Issues中找到并解决。

但如果你是一个 .Net 新手你不知道什么是依赖注入、模块化、DDD 推荐先去 https://www.cnblogs.com/laozhang-is-phi/p/9495618.html#autoid-1-0-0学习一下。

后续文章中出现的ABP都是指ABP vNext。

开篇简介

Bcvp.Blog.Core是基于老张的哲学Blog.Core项目采用ABP vNext框架和DDD思想进行重构的项目,教程面向.Net Core初中级开发人员,从基础项目搭建开始一步步学习使用ABP vNext框架并在开发中融入DDD思想。

整篇文章目前会分为3个阶段分别是。

  • 基础篇(学习ABP vNext框架和DDD)。
  • 中级篇(学习模块化和部分源代码)。
  • 高级篇(ABP vNext微服务)。

组织地址:
https://github.com/BaseCoreVueProject

作者博客:
https://www.cnblogs.com/MrChuJiu/

框架功能

整体教程会设计的功能介绍如下,下图为ABP官方商业版,我们只抽取部分功能进行实现。

前端框架目前采用Bcvp组织的:https://github.com/BaseCoreVueProject/angular-template 作为前端教程框架,暂时不推荐将该框架应用生产(不是技术问题),ABP官方的目前正在推行LeptonX应该会有新的进展

Abp官方商业版图

ABP 自带功能

  • Saas管理
  • 组织管理
  • 角色管理
  • 审计日志
  • 系统设置

业务功能

  • 博客管理
  • 文章管理

前端站点

  • 发布文章
  • 用户登录/注册
  • 文章评论

项目分层依赖关系

项目依赖关系

Domain.Shared 其他项⽬直接或间接引⽤,项⽬中定义的类型在所有项⽬中共享。

Domain 只引⽤ Domain.Shared ,⽐如:在 Domain.Shared 中定义的 IssuType 枚举类型需要 在 Domain 项⽬中 Issue 实体中⽤到。

Application.Contracts 依赖 Domain.Shared ,这样我们可以在 DTOs 中使⽤这些共享类型。 ⽐如: CreateIssueDto 中可以直接使⽤ IssueType 枚举。

Application 依赖 Application.Contracts ,因为 Application 实现 Application.Contracts 中定义的服务接⼝和使⽤ DTO 对象。同时,引⽤ Domain 项⽬,在应 ⽤服务中使⽤仓储接⼝或领域对象。

EntiryFrameworkCore 依赖 Domain ,映射 Domain 对象(实体和值类型)到数据库表 (ORM)并实现在 Domain 中定义的仓储接⼝。

HttpApi 依赖 Application.Contract ,在控制器在内部对 应⽤服务接⼝ 进⾏依赖注⼊。

HttpApi.Client 依赖 Application.Contract 消费应⽤服务 Web 依赖 HttpApi ,发布⾥⾯定义的 HTTP APIs 。另外,通过这种⽅式,它间接地依赖于 Application.Contracts 项⽬,可以在⻚⾯/组件中使⽤应⽤服务

结语

本节只是作为一个开篇讲解希望各位持续关注

联系作者:加群:867095512 @MrChuJiu

公众号

原文地址:https://www.cnblogs.com/MrChuJiu/p/15146658.html