【ABP框架系列学习】N层架构(3)
目录
0.引言
1.DDD分层
2.ABP应用构架模型
客户端应用程序(Client Applications)
表现层(Presentation Layer)
分布式服务层(Distributed Service Layer)
应用层(Application Layer)
领域层
基础设施层
3.使用ABP项目模版快速生成应用程序
0.引言
应用程序的分层是一种广泛接受的技术, 可以降低复杂度和提高代码的可重用性。为了实现分层架构,ABP遵循领域驱动设计(DDD)原则。
1.DDD分层
领域驱动设计有四个基本的层:
- 表现层(Presentaiton Layer):为用户提供接口。使用应用层实现与用户交互。
- 应用层(Application Layer):表现层和领域层的中间者。协调业务对象以执行特定的应用程序任务。
- 领域层(Domain Layer):包含业务对象和规则,是整个应用程序的核心。
- 基础设施层:提供支持上层通用的技术能力,大部分是借助于第三方库
2.ABP应用构架模型
除了DDD,现代的应用程序架构还包括逻辑和物理层等。如下图是ABP建议并实施的模型,它不仅通过提供基类和服务来快速实现这个模型,而且还提供了启动模板直接开始这个模型。
客户端应用程序(Client Applications)
远程客户端通过HTTP APIs(API Controllers,OData Controllers,GraphQL终端)等将应用程序作为服务。远程客户端可以是SPA、移动APP、或第三方消费者等。该应用程序主要包括本地化和导航功能。
表现层(Presentation Layer)
ASP.NET [Core] MVC可以认为是表现层。它可以是物理层(通过HTTP APIs使用应用程序)或是逻辑层(直接注入和使用应用服务)。无论是哪一种情况,一般包括本地化(Location)、导航(Navigation)、对象映射(Object Mapping)、缓存(Caching)、配置管理(Configuration Manager)、审计日志(Audit Logging)等等。还包括授权(Authorization)、会话(Session)、功能(Features,对于多租户应用程序)以及异常处理(Exception Handling)。
分布式服务层(Distributed Service Layer)
该层主要通过远程APIs(如REST、OData、GraphQL等)服务于应用服务/领域功能。该层只是将HTTP请求转换为领域交互,或可使用应用服务来委托操作,而并不包含业务逻辑。通常包括授权(Authorization)、缓存(Caching)、审计日志(Audit Logging)、对象映射(Object Mapping)、异常处理(Exception Handling)、会话(Session)等。
应用层(Application Layer)
应用层主要包括使用领域层和领域对象(领域服务、实体...)来执行应用程序功能请求的应用服务。应用层使用DTO(数据传输对象)从表现层或分布式服务层获取或返回数据。包括授权(Authorization)、缓存(Caching)、审计日志(Audit Logging)、对象映射(Object Mapping)、会话(Session)等。
领域层
这是实现领域逻辑主要的层,包括执行业务/领域逻辑的实体(Entities)、值对象(Value Objects)、和领域服务(Domain Services)。它还包括规约(Specifications)和触发领域事件(trigger Domain Events),并定义了用于从数据源(通常是DBMS)读取和持久化实体的仓储接口(Repository Interfaces)。
基础设施层
基础设施层用于辅助其它层:包括实现仓储接口(Repository Interfaces,如EF Core)实际操作数据库。还可能包括与供应商(vendor)的集成,以便发送电子邮件等。基础设施层是最下、也是不严格的一层,实际上是通过实现它们的抽象概念来支持其他层。
3.使用ABP项目模版快速生成应用程序
1.打开网址【Startup Templates】
2.依次选择ASP.NET Core 2.x >> .NET CORE(Cross Plateform) >> Multi Page Web Application,输入项目名称:XXX.FirstABP、验证码,点击创建项目按钮。
3.跳转自动下载源代码。
4.解压并用Visual Studio 2017打开,启动程序后VS会自动还原项目所需要的包,wait for a minute......使用ABP项目模版生成的解决方案如下:
5.设置【XXX.FirstABP.Web.MVC】为启动项目,打开appsetting.json文件修改连接字符串,如下:
6.打开【程序包管理控制台】,默认项目选择【XXX.FirstABP.EntityFrameworkCore】,在命令行依次输入:Add-Migration "FirstABP"、Update-Database,wait for a minute...
7.执行步骤6的操作后,默认生成了ABP的数据。
8.回到Visual Studio 2017,按F5运行程序...有惊喜哟,登录界面出现了,输入admin/123qwe,点击登录。
9.如图,进入主界面。至此,利用ABP项目模板快速生成了应用程序,主要有租户管理、用户管理、角色管理等功能模块。
转载于:https://www.cnblogs.com/OlderGiser/p/10001169.html
【ABP框架系列学习】N层架构(3)相关推荐
- 【ABP框架系列学习】模块系统(4)
[ABP框架系列学习]模块系统(4) 原文:[ABP框架系列学习]模块系统(4) 0.引言 ABP提供了构建模块和通过组合模块以创建应用程序的基础设施.一个模块可以依赖于另外一个模块.通常,程序集可以 ...
- 【ABP框架系列学习】模块系统之插件示例开发
0.引言 上一篇博文主要介绍了ABP模块及插件的相关知识,本章节主要开发一个插件示例来学习如何创建一个插件,并在应用程序中使用.这个命名为FirstABPPlugin的插件主要在指定的时间段内删除审计 ...
- abp框架mysql连接配置,abp框架连接数据库
ABP框架搭建项目系列教程基础版完结篇 经过前面十二篇的基础教程,现在终于该做个总结了. 回顾 第一篇,我们建议新手朋友们先通过ABP官网的启动模板生成解决方案,因为这样既快速又准确,不会因为项目的搭 ...
- 如何使用ABP框架(2)三层架构与领域驱动设计的对比
本文来自长沙.NET技术社区,原创:邹溪源.全文共有8500字,读完需耗时10分钟. 题图来自@pixabay 简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项 ...
- c/s三层结构信息系统的三个层次_如何使用ABP框架(2)三层架构与领域驱动设计的对比...
本文来自长沙.NET技术社区,原创:邹溪源.全文共有8500字,读完需耗时10分钟. 题图来自@pixabay 简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项 ...
- ABP官方文档翻译 1.2 N层架构
N层架构 介绍 ABP架构 其他(通用) 领域层 应用层 基础设施层 网络和展现层 其他 总结 介绍 应用程序代码库的分层架构是被广泛认可的可以减少程序复杂度.提高代码复用率的技术.为了实现分层架构, ...
- 表现层框架Struts/Tapestry/JSF架构比较 [转]
http://www.jdon.com/artichect/sjt.htm Struts/Tapestry/JSF是目前J2EE表现层新老组合的框架技术.从诞生时间上看,Struts应该比较早,使用得 ...
- ABP框架之——数据访问基础架构
几乎所有的业务应用程序都要适用一种数据库基础架构,用来实现数据访问逻辑,以便从数据库读取或写入数据,我们还需要处理数据库事务,以确保数据源中的一致性. ABP框架可以与任何数据库兼容,同时它提供了EF ...
- JAVA类似ABP框架_Orchard 与 ABP架构比较 (aspnetboilerplate)
前言: ABP框架经常在一些.NET群中听群友提起,以前也浏览过官网,大致了解它是一个框架,直到今天本人才正式下载源码入门 ... 经过两个小时的ABP中文文档入门(感谢各位辛勤的翻译者) ,大致了 ...
最新文章
- hadoop重命名文件_面试系列:深入理解hadoop架构体系
- 十大排序算法之堆排序
- 微信小程序 详解 小程序支付
- QT5完成一个数据实时显示控制的Demo
- 来看看比尔盖茨当年写的BASIC解释器源代码吧,你就知道泰勒级数有什么用了...
- vs工程 更换opencv版本_Windows下opencv源代码转化和编译
- JS中定时器的返回数值ID值
- Java进制间的转换
- python zip函数_Python zip()函数
- python小结_Python小结
- vmware workstation14永久激活密钥分享
- 键 -- 主键、候选键、可选键
- oracle虚拟机内鼠标消失,鼠标消失在VirtualBox中
- 上海Apple面试php,面试Apple苹果APO的MQE经验
- 未来五年-不懂版权价值层次论你就落伍了!
- 虚拟机磁盘重新分区增加Docker磁盘空间
- CSS - 移动端布局(一)关键的前置知识
- Mysql复制表结构、表数据以及修改主键
- 鸿蒙系统 智能手表,wear os智能手表和鸿蒙系统智能手表对比
- 计算机婚纱影楼毕业设计开题报告,毕业设计开题报告 数码照片合成设计
热门文章
- 收藏 | Transformers资料汇总!从原理到应用
- 基于Text-CNN模型的中文文本分类实战
- nginx php exec,PHP Web 端如何操作 Nginx 配置
- 默认表空间位置oracle,oracle 默认表空间
- Layui layer详细参数解释说明
- php 整行插入mysql_MySQL的多行插入
- java swarm_科学网—Java_Swarm编程:遇到麻烦了...... - 高德华的博文
- 渗透测试入门5之内网信息搜集
- linux mysql temp 设置_linux怎么修改mysql数据库临时表空间大小
- BIO,NIO,AIO总结(一)