ABP VNext学习


ABP VNext

ABP VNext介绍

ABP VNext是一个ASP.NET Bolierplate 的ASP.NET Core版本,是遵循简洁架构,模块化/插件化设计等多种最佳实践模式的一套web应用程序快速开发套件。

特点
面向DDD的架构分层设计
HTTP APIs&动态代理
模块化设计&微服务兼容
模切关注点(授权,验证,异常处理,缓存,审计日志,事务管理…)
虚拟文件系统
主题与皮肤支持
多租户支持

ABP Vnext相关资料

官网
文档
源码
ABP国内小组

ABP的模块化

什么是模块?

在我们生活中导出都可以看到模块化设计的例子,比如汽车,电脑,家具都是由一些零件组合成小部件,然后在由这些小部件组合成模块,再由模块组合成成品。这些部件可以更换、添加、移除而不影响整体设计。

  • 组件: Component
    组件是软件的部署单元,是整个软件系统在部署过程中可以独立完成部署的最小实体。对于Java来说是一个jar文件,在.NET中是DLL文件。
  • 模块: Module
    偏向于设计的概念,用于在项目中划分相对独立的功能,或许有时候,模块本身就要引用多个组件。

模块VS组件

模块化是指将软件划分成独立命名且可以独立访问的模块,不同的模块通常具有不同的功能或 职责。每个模块都具有可以独立开发、测试,最后组装成完整的软件。
零件 = 类
小部件 = 组件
模块 = 模块

为什么要模块化

耦合度高
代码难以理解
难以重构和修改
很难重用

ABP模块示例

通过入口方法将模块内的服务注入到全局的DI容器
通过Application 来加载启动模块
1.提供application 来接替整个应用程序的生命周期 启动和初始化、卸载
2.提供模块化封装模块本身的行为和依赖
3.通过模块将模块内的行为与依赖注入到全局application的DI容器

ABP的分层架构

DDD的基本介绍

Domain-Driven Design领域驱动设计

以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然后将这些概念设计成一个领域模型;
由领域模型驱动软件设计,用代码来实现该领域模型;

image-20200723174855966

DDD的分层架构

一个DDD的Demo

简洁架构

ABP框架推荐的分层架构/DDD的应用

改良版本的ABP分层架构

ABP的使用经验串讲


文章作者: 千回百转一剑绝尘
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 千回百转一剑绝尘 !
  目录