第一节:ABP VNext简介、基本项目创建和DDD相关概念梳理
一. ABP简介
官网:https://abp.io/
文档:https://docs.abp.io/zh-Hans/abp/latest/
二. 项目创建
1. ABP CLI
(详见官网:https://docs.abp.io/zh-Hans/abp/latest/cli)
(1). 全局安装/更新:【dotnet tool install -g Volo.Abp.Cli】 、【dotnet tool update -g Volo.Abp.Cli】
(2). 新建项目: abp new <解决方案名称> [options]
eg: 【abp new ypf_test】新建名为ypf_test的abp默认项目 (默认是当前目录下,创建app模板,ui框架为mvc,不含移动端框架、指定db提供程序为ef)
(3). options详解:
A. -t 指定模板,默认为app应用程序模板 【可选值:app、module(微服务,不含ui)、console(工作台模板)】
B. -o 指定创建目录,默认为当前目录
C. --dbms 修改修改ef连接的数据库,默认是sqlserver,可以改为mysql
D. -u 指定ui框架 【可选值:mvc、angular、blazor-server、none】
E. -d 指定数据库提供程序 【可选值:ef、mongodb】
指令组合
默认mvc项目:【abp new ypf_test】
mysql的mvc项目:【abp new ypf_test --dbms mysql】
mysql的webapi项目:【abp new ypf_test --dbms mysql -u none】
mysql的微服务项目:【abp new ypf_test --dbms mysql -t module --no-ui 】
2. 项目创建
默认项目结构如下:
三. DDD相关概念
DDD:(Domain-driven design) 领域驱动设计,是一个很好的应用预微服务架构的方法论。
实体:拥有唯一的标识符,标识符的值不会改变,而对象的其他状态则会经历各种变化。标识符用来跟踪对象状态变化,一个实体的对象无论怎样变化,我们都能通过标识符定位这个对象。实体一般的表现形式就是EF Core中的实体类。
(标识符在DB中一般指主键)
值对象:没有标识符的对象,也有多个属性,依附于某个实体对象而存在。比如“商家”的地理位置、衣服的RGB颜色。
聚合:实体是否是整体和部分的关系,是否存在着相同的生命周期。
聚合根:把关系紧密的实体放到一个聚合中,每个聚合中有一个实体作为聚合根(Aggregate Root),所有对于聚合内对象的访问都通过聚合根来进行,外部对象只能持有对聚合根的引用
领域服务:领域模型与外部系统不会发生直接交互,即领域服务不会涉及数据库操作。
应用服务:与外部系统交互由应用服务负责。
领域事件:在同一个微服务内的聚合之间的事件传递。使用进程内的通信机制完成
集成事件:跨微服务的事件传递。使用事件总线(EventBus)实现。
贫血模型:一个类中只有属性或者成员变量,没有方法。
充血模型:一个类中既有属性、成员变量,也有方法。
!
- 作 者 : Yaopengfei(姚鹏飞)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 声 明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
- 声 明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。