【愚公系列】2022年02月 .NET架构班 001-ABP vNext核心根基模块化

举报
愚公搬代码 发表于 2022/02/16 15:25:03 2022/02/16
【摘要】 一、ABP vNext核心根基模块化 1.什么是ABP vNextABP vNnext是一个基于Asp.Net Core Web应用程序框架。主要目的是用来快速开发Web应用。Abp.Vnext可以快速开发Web应用2个原因:ABP.Vnext提供完整Web应用程序开发模板。ABP.Vnext提供Web应用程序开发所需要的一些基础设施功能。应用程序:运行在操作系统之上的程序都叫应用程序。应...

一、ABP vNext核心根基模块化

1.什么是ABP vNext

ABP vNnext是一个基于Asp.Net Core Web应用程序框架。主要目的是用来快速开发Web应用。

Abp.Vnext可以快速开发Web应用2个原因:

  1. ABP.Vnext提供完整Web应用程序开发模板。
  2. ABP.Vnext提供Web应用程序开发所需要的一些基础设施功能。

应用程序:运行在操作系统之上的程序都叫应用程序。

应用程序分3类:

  • 桌面应用程序
  • Web应用程序
  • 移动应用程序

2.框架概念

框架是一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度。

3.Asp.Net Core Web应用程序框架

把Asp.Net Core Web相关的所有组件规范起来的一套模块化工具就是.Asp.Net Core Web应用程序框架。

例如:Asp.Net Core MVC、ioc 、autofac、 redis等等会用到很多组件都是ABP.Vnext中的Module。

在这里插入图片描述

4.Module的概念

Module模块系统是就像上图乐高玩具一样,一块一块零散积木堆积起一个精彩的世界。每种积木的形状各不相同,功能各不相同,积木与积木直接互相依赖,互相支撑。

模块分两种类型.它们没有任何结构上的差异,只是按照功能和目地分类:

  • 框架模块 :这些是框架的核心模块,像缓存、邮件、主题、安全性、序列化、验证、Ef Core集成、MongoDB集成等等。它们没有应用程序/业务功能,但通过提供通用基础架构,集成和抽象会使你的日常开发更加容易。
  • 应用程序模块 :这些模块是实现特定的应用程序/业务功能,像 博客、文档管理、身份管理、租户管理等等。它是通常有自己的实体,服务,API和UI组件。

5.Module好处

快速快发 Web应用程序

6.如何使用Module

  1. Console应用程序
  2. Web应用程序
  3. Wpf应用程序

二、ABP vNext DDD领域驱动划分

在这里插入图片描述

1.领域层

将领域层划分为两个项目:

  • Domain.Shared 包(项目)
    命名为CompanyName.ModuleName.Domain.Shared,包含常量,枚举和其他类型,它不能包含实体、存储库、域服务或任何其他业务对象。可以安全地与模块中的所有层使用。此包也可以与第三方客户端使用。
  • Domain 包(项目)
    命名为CompanyName.ModuleName.Domain,包含实体、仓储接口、领域服务接口及其实现和其他领域对象。Domain 包依赖于 Domain.Shared 包。

2.应用服务层

将应用服务层划分为两个项目:

  • Application.Contracts 包(项目)
    命名为CompanyName.ModuleName.Application.Contracts,包含应用服务接口和相关的数据传输对象(DTO)。Application contract 包依赖于 Domain.Shared 包。
  • Application
    包(项目)命名为CompanyName.ModuleName.Application,包含应用服务实现。Application 包依赖于Domain 包和 Application.Contracts 包。

3.基础设施层

  • 为每个orm/数据库集成创建一个独立的集成包,比如Entity Framework Core 和 MongoDB。例如,创建一个抽象Entity Framework Core集成的CompanyName.ModuleName.EntityFrameworkCore 包。ORM 集成包依赖于 Domain包。不推荐依赖于orm/数据库集成包中的其他层.
  • 为每个主要的库创建一个独立的集成包, 在不影响其他包的情况下可以被另一个库替换

4.HTTP 层

1.创建命名为CompanyName.ModuleName.HttpApi的HTTP API包,为模块开发REST风格的HTTP API。

  • HTTP API 包只依赖于 Application.Contracts 包。不要依赖 Application 包。
  • 为每个应用服务创建一个Controller(通常通过实现其接口)。这些控制器使用应用服务接口来委托操作。它根据需要配置路由,HTTP方法和其他与Web相关的东西。

2.创建一个为HTTP API包提供客户端服务的HTTP API Client包,它的命名为Companyname.ModuleName.HttpApi.Client。这些客户端服务将应用服务接口实现远程端点的客户端。

  • HTTP API Client包仅依赖于 Application.Contracts包。
  • 推荐使用ABP框架提供的动态代理HTTP C#客户端的功能。

5.Web

创建命名为CompanyName.ModuleName.Web的Web包。 包含页面、视图、脚本、样式、图像和其他UI组件。Web包仅依赖于HttpApi包。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。