介绍

应用程序代码库的分层是一种广泛接受的技术,有助于降低复杂性并提高代码的可重用性。 为了实现分层体系结构,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. [Nuget]Nuget命令行工具安装

    下载 地址:https://www.nuget.org/downloads 直接下最新推荐版本(recommended latest)就好了. 是个单一的nuget.exe文件. 安装配置 想要在wi ...

  2. [开发技巧]·AdaptivePooling与Max/AvgPooling相互转换

    [开发技巧]·AdaptivePooling与Max/AvgPooling相互转换 个人网站--> http://www.yansongsong.cn/ 1.问题描述 自适应池化Adaptive ...

  3. rabbitmq高级消息队列

    rabbitmq使用 什么是消息队列 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以很复杂,可以包含嵌入对象. 消息队列是一种应用间的通信方式,消息发送后 ...

  4. 修改phpcms中的评论样式

    phpcms中自带的评论插件很好用!但是样式个人感觉丑的狠,百度一下也没能找到解决方式,也许是自己的搜索方式不对,于是自己就研究了研究,这里可以使用两种方法进行修改 方法一: 使用PHPCMS中的ge ...

  5. Head First设计模式读书笔记

    阅读指南: 精读一章内容,手工输入一章代码(注1),与书中描述的思想进行印证,实在搞不懂就放过吧.设计模式绝对不会一次就看懂的. 这本书对于理解设计模式很有帮助,就是例子不太符合中国人的思维模式,但是 ...

  6. Django 项目中添加静态文件夹

    在 mysite 文件夹下添加一个 statics 文件夹用来存放 js 文件 在 index.html 文件中添加 <!DOCTYPE html> <html lang=" ...

  7. Basic Linux Privilege Escalation

    (Linux) privilege escalation is all about: Collect - Enumeration, more enumeration and some more enu ...

  8. 适合精致女孩使用的APP软件 不容错过的精彩人生

    阳光下灿烂,风雨中奔跑,每个人都会遇见美丽的缘分,或深或浅,或浓或淡.所以人生不管遇到什么难题,都要勇往直前.今天分享的软件也是十分精彩的,非常适合精彩的你哦! 薄荷健康 薄荷健康APP是专为想要减肥 ...

  9. Skyline Te Pro二次开发技能总结

    前两天项目开发中,忽然一个Imagelabel的参数不会调了,但是前段时间可是很熟悉的.好吧,好记性不如烂笔头! 1. 模型弹出窗调试 这里的模型弹出框指涉及到模型操作的,比如监听模型选定事件.根据窗 ...

  10. Python 基于python操纵zookeeper介绍

    基于python操纵zookeeper介绍 by:授客  QQ:1033553122 测试环境 Win7 64位 Python 3.3.4 kazoo-2.6.1-py2.py3-none-any.w ...