点这里进入ABP入门教程目录

介绍

应用程序代码库的分层是一种广泛接受的技术,可帮助降低复杂性并提高代码可重用性。为了实现分层体系结构,ASP.NET Boilerplate遵循域驱动设计的原理。

DDD分层体系架构

领域驱动设计(DDD:Domain-Driven Design)有四个基本层:

  • 展示层:为用户提供界面。使用应用程序层来实现用户交互。
  • 应用层:在表示层和域层之间进行中介。编排业务对象以执行特定的应用程序任务。
  • 领域层:包括业务对象及其规则。这是应用程序的核心。
  • 基础设施层:提供通用技术功能,这些功能主要使用第三方库来支持更高的层。

ABP分层体系架构

除了DDD外,现代架构应用程序中还包含其他逻辑和物理层。建议并为ABP应用程序实现以下模型。ABP不仅通过提供基类和服务使实现此模型更加容易,而且还提供了直接从该模型开始的启动模板

客户应用

这些是远程客户端,它们通过HTTP API(API控制器,OData控制器,甚至是GraphQL端点)将应用程序用作服务。远程客户端可以是SPA(单页面应用程序),移动应用程序或第三方用户。本地化和 导航可以在此应用程序内完成。

展示层

ASP.NET Core MVC(模型-视图-控制器)可以视为展示层。它可以是物理层(通过HTTP API使用应用程序)或逻辑层(直接注入和使用应用程序服务)。无论哪种情况,它都可以包括 本地化,导航,对象映射, 缓存,配置管理,审计日志等。它还处理 授权,会话, 功能(用于 多租户应用程序)和异常处理。

分布式服务层

该层用于通过REST,OData,GraphQL等远程API来提供应用程序/域功能...它们不包含业务逻辑,而仅将HTTP请求转换为域交互,或者可以使用应用程序服务来委托操作。该层通常包括授权,缓存, 审核日志记录,对象映射,异常处理,会话等。

应用层

应用层主要包括应用服务的使用领域层和领域对象(领域服务, 实体 ...)来执行请求的应用程序的功能。它使用数据传输对象从表示层或分布式服务层获取数据并将数据返回到表示层或分布式服务层。它还可以处理 授权,缓存,审核日志记录,对象映射,会话等。

领域层

这是实现我们的领域逻辑的主要层。它包括 实体,值对象和领域服务以执行业务/领域逻辑。它还可以包括规范和触发领域事件。它定义了存储库接口以从数据源(通常是DBMS)读取和保留实体。

基础设施层

基础设施层使其他层起作用:它实现存储库接口(例如,使用Entity Framework Core)以实际使用实际数据库。它还可能包括与供应商的集成,以发送电子邮件等。这不是所有层下的严格层,但实际上通过实现抽象层来支持其他层。

ABP入门教程2 - 体系架构的更多相关文章

  1. ABP入门教程0 - 目录

    ABP入门教程 本教程主要讲解如何基于ABP实现CURD(增删改查)示例. 源码已分享:   GitHub   Gitee ABP入门教程0 - 目录 ABP入门教程1 - 开篇 ABP入门教程2 - ...

  2. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  3. 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程

    基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boi ...

  4. ABP入门教程

    ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...

  5. ABP入门教程1 - 开篇

    点这里进入ABP入门教程目录 基于DDD的现代ASP.NET开发框架 - ABP ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET ...

  6. ABP入门教程3 - 解决方案

    点这里进入ABP入门教程目录 创建项目 点这里进入ABP启动模板 如图操作,我们先生成一个基于.NET Core的MPA(多页面应用).点击"Create my project!" ...

  7. ABP入门教程4 - 初始化运行

    点这里进入ABP入门教程目录 编译解决方案 重新生成解决方案,确保生成成功. 连接数据库 打开JD.CRS.Web.Host / appsettings.json,修改数据库连接设置Connectio ...

  8. ABP入门教程5 - 界面调整

    点这里进入ABP入门教程目录 调整前 调整后 调整项 页面标题 把favicon.ico替换为指定Logo JD.CRS.Web.Mvc\wwwroot\favicon.ico 顶部工具栏 把logo ...

  9. ABP入门教程6 - 领域层创建实体

    点这里进入ABP入门教程目录 创建实体 在领域层(即JD.CRS.Core)下新建文件夹Entitys //用以存放实体对象添加一个实体类Course.cs //课程信息 using Abp.Doma ...

随机推荐

  1. CRM、ERP是什么?

    CRM 全称 Customer Relationship Management,中文意思是客户关系管理. 为什么会有CRM? 因为我们进入到了产能过剩时代,从卖方市场过渡到买方市场,为了将产品卖出去, ...

  2. MySQL 有关MHA搭建与切换的几个错误log

    1:masterha_check_repl 副本集方面报错  replicates is not defined in the configuration file! 具体信息如下: # /usr/l ...

  3. Linux 桥接网络不自动分配IP的问题

    之前遇到过好多次,知道什么原因就是忘了命令怎么敲,还要去搜索,写一遍加强下记忆,并总结下. 情况一 :网卡冲突问题 1 , 网卡问题 有安装过oracle VM VirtualBox 的,会和VMwa ...

  4. 13-Node.js学习笔记-MongoDB

    数据库相关概念 在一个数据库软件最终可以包含多个数据仓库,在每个数据仓库中可以包含多个数据集合,每个数据集合中可以包含多条文档(具体的数据) database: 数据库,mongoDB数据库软件中可以 ...

  5. 【30天自制操作系统】day04:C语言与目前执行流程图

    用 C 语言直接写入内存 原来依靠汇编 void io_hlt(void); void write_mem8(int addr, int data); void HariMain(void){ int ...

  6. ASP.NET Aries 高级开发教程:行内编辑事件怎么新增数据到后台(番外篇)

    前提: 今天又网友又提出了一个问题,说行内编辑保存之前,怎么新增一些数据提交到后台? 对方说看了源码,也没找到怎么处理,这里就写文给解答一下. 解答: 于是我看了一眼源码,只能说你没找到地方: 第12 ...

  7. vs2017 输出 ling to sql 转为执行的sql语句

    在项目视图中,找到->输出 窗口,在窗口中选择ASP.NET Core Web服务器,调试项目即可看到执行的sql语句

  8. iOS字符串处理_替换(去掉空格换行)、截取

    以下代码主要实现了:1.截取"@@"前的字符串:  2.去掉字符串中的"##":  3.去掉字符串中的空格和换行. 希望相互学习相互指正. -----ViewC ...

  9. 在windows上用apache+mod_wsgi服务部署django项目

    之前一直在本地跑django项目,最近尝试在服务器上部署项目,目前已经成功部署,也花了好多时间,这里跟大家交流一下,希望对像我一样的新手有帮助. 一.配置环境: 1.Python版本3.7 2.服务器 ...

  10. 十二、ITK例程-医疗图像配准的HelloWorld程序

    一.说明 医疗图像配准是ITK的一个重要内容,而我们今天想要说的一个程序则相当于是其中的HelloWorld程序. 程序源码位置: InsightToolkit-\Examples\Registrat ...