ABP VNext
ABP VNext介绍
ABP VNext是一个ASP.NET Bolierplate 的ASP.NET Core版本,是遵循简洁架构,模块化/插件化设计等多种最佳实践模式的一套web应用程序快速开发套件。
特点 |
---|
面向DDD的架构分层设计 |
HTTP APIs&动态代理 |
模块化设计&微服务兼容 |
模切关注点(授权,验证,异常处理,缓存,审计日志,事务管理…) |
虚拟文件系统 |
主题与皮肤支持 |
多租户支持 |
ABP Vnext相关资料
ABP的模块化
什么是模块?
在我们生活中导出都可以看到模块化设计的例子,比如汽车,电脑,家具都是由一些零件组合成小部件,然后在由这些小部件组合成模块,再由模块组合成成品。这些部件可以更换、添加、移除而不影响整体设计。
- 组件: Component
组件是软件的部署单元,是整个软件系统在部署过程中可以独立完成部署的最小实体。对于Java来说是一个jar文件,在.NET中是DLL文件。 - 模块: Module
偏向于设计的概念,用于在项目中划分相对独立的功能,或许有时候,模块本身就要引用多个组件。
模块VS组件
模块化是指将软件划分成独立命名且可以独立访问的模块,不同的模块通常具有不同的功能或 职责。每个模块都具有可以独立开发、测试,最后组装成完整的软件。
零件 = 类
小部件 = 组件
模块 = 模块
为什么要模块化
耦合度高
代码难以理解
难以重构和修改
很难重用
ABP模块示例
通过入口方法将模块内的服务注入到全局的DI容器
通过Application 来加载启动模块
1.提供application 来接替整个应用程序的生命周期 启动和初始化、卸载
2.提供模块化封装模块本身的行为和依赖
3.通过模块将模块内的行为与依赖注入到全局application的DI容器
ABP的分层架构
DDD的基本介绍
Domain-Driven Design领域驱动设计
以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然后将这些概念设计成一个领域模型;
由领域模型驱动软件设计,用代码来实现该领域模型;