第一节: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 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 
posted @ 2022-07-08 10:49  Yaopengfei  阅读(540)  评论(0编辑  收藏  举报