介绍

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

领域驱动设计(DDD)

领域驱动设计有四个基本层

表现层:提供用户界面,并使用应用层来进行用户交互

应用层:相当于表现层和领域层的“中介”,处理业务对象以执行特定的应用程序任务

领域层:包含业务对象和他们的规则,是应用程序的核心

基础设施层:提供一些通常的技术功能,主要使用第三方库来支持更高层的功能。

ASP.NET Boilerplate应用程序体系结构模型

除了DDD,应用程序架构中还有其他一些逻辑层和物理层。下图中的模型是在ABP应用程序中是实现的。ABP不仅通过提供基类和服务来简化此模型,还提供了直接开始此模型架构的启动模板。

客户端应用程序

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

表现层

ASP.NET[CORE] MVC (Model-View-Controller) 可以被任务是表现层。它可以是物理层(通过HTTP API使用应用程序)或逻辑层(直接注入和使用应用程序服务)。无论在何种情况下,它都可以包含本地化,导航,对象映射,配置关咯,审计日志等等。它还会处理授权,会话,功能(用于多租户应用程序)和异常处理。

分布式服务层

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

应用程序层

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

领域层

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

基础设施层

基础设施层就是帮助其他层工作:它实现仓储接口(例如使用EF Core)来使用真实的数据库.它还可能包括给供应商发送电子邮件的集成等。这不是图层下面的严格图层,但实际上是通过实现他们的抽象概念来支持其他图层。

ABP之N层架构的更多相关文章

  1. ABP框架 - N层架构

    目录 介绍 DDD分层 ABP架构模型 客户端 展现层 分布式服务层 应用层 领域层 基础设施层 介绍 在应用程序设计中,分层架构是一种被广泛使用的技术,它助于降低复杂度和提高代码的可重用性.在ABP ...

  2. ABP理论学习之N层架构

    返回总目录 自从写这个系列博客之后,发现很多园友还是希望有个直接运行的demo,其实在github上就有官方的demo,我直接把这demo的链接放到这里吧,另外,我分析,这些找不到demo的同学,很可 ...

  3. [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序

    本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...

  4. ABP官方文档翻译 1.2 N层架构

    N层架构 介绍 ABP架构 其他(通用) 领域层 应用层 基础设施层 网络和展现层 其他 总结 介绍 应用程序代码库的分层架构是被广泛认可的可以减少程序复杂度.提高代码复用率的技术.为了实现分层架构, ...

  5. ABP-N层架构

    ABP理论学习之N层架构   返回总目录 自从写这个系列博客之后,发现很多园友还是希望有个直接运行的demo,其实在github上就有官方的demo,我直接把这demo的链接放到这里吧,另外,我分析, ...

  6. 1.2 N层架构

    N层架构 介绍 ABP架构 其他(通用) 领域层 应用层 基础设施层 网络和展现层 其他 总结 介绍 应用程序代码库的分层架构是被广泛认可的可以减少程序复杂度.提高代码复用率的技术.为了实现分层架构, ...

  7. MVC5 网站开发之五 展示层架构

    展示层由Ninesky.Web项目实现,负责网站内容的显示,项目包含Member和Control两个区域.   目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项 ...

  8. 回头再看N层架构(图解)

    不知不觉来博客园已经快两半了,时间过的真快. 这次的目标是再回顾一下传统的N层架构并且分析一下在DDD中的N层架构. 一.先来看一看传统的N层架构 N-层架构的出现,主要是由于观注点的分离而产生,这三 ...

  9. MVC中的七层架构

    工厂模式的七层架构 1.创建Model,实现业务实体. 2.创建IDAL,实现接口. 3.创建DAL,实现接口里的方法. 4.创建DBUtility,数据库操作类5.创建DALFactory,抽象工程 ...

随机推荐

  1. hibernate出现QueryException: could not resolve property 查询异常

    可能是你的属性名写错了,  因为hibernate是面向对象和属性的.

  2. xpath无法获取值、返回值为[]或者{}的问题解决

    最近用xpath,刚开始有很多问题 用测试代码跑的时候经常获取不到值. 第一种情况: page= etree.parse('text.html') #text.html为一个html文件 <cl ...

  3. 【机器学习】--xgboost初始之代码实现分类

    一.前述 上节我们讲解了xgboost的基本知识,本节我们通过实例进一步讲解. 二.具体 1.安装 默认可以通过pip安装,若是安装不上可以通过https://www.lfd.uci.edu/~goh ...

  4. Image和Base64互相转换

    base64介绍: Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息.例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长 ...

  5. 网站HTTP升级HTTPS完全配置手册

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 今天,所有使用Google Chrome稳定版的用户迎来了v68正式 ...

  6. 微信公众号开发C#系列-1、微信公众平台注册

    微信公众号简介 微信公众号分为服务号.订阅号.企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以. 我们所说的微信公众号开发主要指的是公众号的账号类型,公众号的账号类型分为订阅号.服务号.企 ...

  7. JDBC事务控制

    概念 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并 ...

  8. 浅谈基于Linux的Redis环境搭建

    本篇文章主要讲解基于Linux环境的Redis服务搭建,Redis服务配置.客户端访问和防火强配置等技术,适合具有一定Linux基础和Redis基础的读者阅读. 一  Redis服务搭建 1.在根路径 ...

  9. ios键盘弹起 body的高度拉长,页面底部空白问题。ios软键盘将页面抵到上面后,关闭软键盘页面不回弹的问题。

    js 监听ios手机键盘弹起和收起的事件 /* js 监听ios手机键盘弹起和收起的事件 */ document.body.addEventListener('focusin', () => { ...

  10. 基于Kubernates微服务案例

    企业业务上云的三种架构 容器的三个视角 从运维角度 数据工程师角度 开发角度微服务化 12 Factor Related Reference: https://kubernetes.io/https: ...