入门ABP——多层架构体系介绍

一、ABP遵循DDD(领域驱动设计)的原则

? 展现层(Presentation):提供一个用户界面,实现用户交互操作。? 应用层(Application):进行展现层与领域层之间的协调,协调业务对象来执行特定的应用程序的任务。它不包含业务逻辑。

? 领域层(Domain):包括业务对象和业务规则,这是应用程序的核心层。

? 基础设施层(Infrastructure):提供通用技术来支持更高的层。例如基础设施层的仓储(Repository)可通过 ORM 来实现数据库交互。根据实际需要,可能会有额外添加的层。例如:

? 分布式服务层(Distributed Service):用于公开应用程序接口供远程客户端调用。比如通过 ASP.NET Web API 或 WCF 来实现。这些都是常见的以领域为中心的分层体系结构。不同的项目在实现上可能会有细微的差别。

二、领域层介绍

其实领域层也就是我们常说的业务层,而且所有的业务规则在此实现。

  包含:实体(Entity)仓储(Repository)领域服务(Domain service)领域事件(Domain Event)工作单元(Unit of Work);

  实体:业务领域的数据与操作,通过映射成数据库表;

1 public class AgentDto : Entity<int>2    {3        public string Name { get; set; }4        public string ShortName { get; set; }5        public string Mobile { get; set; }6        public string Linkman { get; set; }7    }

  仓储:操作数据库进行数据存取、更新删除等;

  领域服务:当处理的业务规则跨越两个实体,应该写在领域服务方法里面;

  领域事件:在领域层有些特定情况发生时可以触发领域事件,并且在相应地方捕获并处理它们;

  工作单元:工作单元是一种设计模式,用于维护一个由已经被修改(如增加、删除和更新等)的业务对象组成的列表。它负责协调这些业务对象的持久化工作及并发问题。

三、应用层介绍

  应用层提供一些应用服务(Application Services)方法供展现层调用。一个应用服务方法接收一个 DTO(数据传输对象)作为输入参数,使用这个输入参数执行特定的领域层操作,并根

据需要可返回另一个 DTO。在展现层到领域层之间,不应该接收或返回实体(Entity)对象,应该进行 DTO 映射。一个应用服务方法通常被认为是一个工作单元(Unit of Work)。用户输入

参数的验证工作也应该在应用层实现。ABP 提供了一个基础架构让我们很容易地实现输入参数有效性验证。建议使用一种像 AutoMapper 这样的工具来进行实体与 DTO 之间的映射。

四、基础设施层

  当在领域层中为定义了仓储接口,应该在基础设施层中实现这些接口

五、WEB与展示层

Web 层使用 ASP.NET MVC 和 Web API 来实现。可分别用于多页面应用程序(MPA)和单

页面应用程序(SPA)。

一般步骤
1.创建实体 Core 实体也是领域的一部分 例如Person 属性 { get ;set; }
2.创建DbContext EntityFramework 将实体类添加到IDSet
3.通过Database Migrations创建数据库表 Configuration.cs Code First
4.在Migrations文件夹下生成文件 Add-Migration InitialCreate Update-Database
5.定义仓储接口 Core IReposotory 泛型接口 定义增删改查方法
6.实现仓储类 Reposotory中实现定义
7.建立应用服务(Application Services) 在ApplicationShare中定义ITaskAppService继承自IApplicationService,TaskAppService实现 ABP自动为这个类提供一些功能特性(比如依赖注入和参数有效性验证)
8.数据验证 ApplicationShare 实现了IInputDto或IValidate接口
如果你觉得对你有帮助,欢迎赞赏[1]

原文地址:https://www.cnblogs.com/llw1996/p/11142630.html

时间: 2024-10-15 16:37:34

入门ABP——多层架构体系介绍的相关文章

精讲 JVM架构体系介绍

每个Java开发人员都知道字节码将由JRE(Java Runtime Environment)执行.但是许多人并不知道JRE是Java虚拟机(JVM)的实现,它可以分析字节码,解释代码并执行它.作为开发人员,了解JVM的体系结构非常重要,因为它使我们能够更高效地编写代码. 通过优锐课的jvm分享,在本文中,我们将更深入地了解Java中的JVM体系结构以及JVM的不同组件.分享给大家参考学习. 什么是JVM? 虚拟机是物理机的软件实现.Java是根据WORA(可在任何地方写入一次)的概念开发的,可

关于多层架构一些思考

1:关于多层架构(N-Tier) 多层架构是一种被行业证明过的软件架构模型,对开发一些解决可扩展性.安全性.容 错性方面的企业级(客户端/服务端)应用程序支持是相当给力.但在.NET世界里,我们有许多工具和产品,却没有指导手册是关于如何设计和实现一个良好的 多层架构模型,比如一些样例版,Demo等等,我们或许多少有听到.看到一些关于多层架构模型的用途和益处,但更多知道的仅仅是如何使用和实现,没有过多 的思考为何我们要这样设计呢?这样设计符合了哪些设计模式呢?遵循哪些设计原则呢?或者了解一点多层的

.NET跨平台之mac 下vs code 多层架构编程

合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入,申请备注填写姓名+技术+工作年限) Q  Q:408365330     E-Mail:[email protected] 概述: 为了研究跨平台.NET 开发,我打算利用.NET core 编写一个跨平台的cms,这个CMS我也秉着开源的原则放到github上面,为.NET 开源社区做点小小的贡献吧.如果有兴趣的可以联系我一起为.NET开源和跨平台做点小小的贡献吧.EgojitCMS传送

Flex入门(三)——微架构之Cairngorm

大家都知道我们在开发后台的时候,都会使用MVC,三层等分层架构,使后台代码达到职责更为分明单一,高内聚低耦合,例如,Dao层只是进行和数据库打交道,负责处理数据:Service(B层)只是进行逻辑判断处理,而Action则进行后台和前台页面的交互等.从而使程序更加容易管理,更加灵活,更加容易扩展,更加容易维护.也就是大家比较熟悉的Struts(SpringMVC)+Spring+Hibernate(Mybatis)等. 而作为前台Flex处理,也提供了类似的处理功能,想要达到的效果,也是代码分层

Android第一节(体系介绍),维维复习

Android的学习已经过了很久了,感觉好多知识都已经忘了,现在开始慢慢整理吧,加油! 今天我们来开始Android基础之旅吧! 一.Android的系统框架 Android的系统架构共分为4层 1.Application应用层: 2.Framework应用框架层: 3.Libraries系统运行时和系统类库层(c/c++): 4.Linux内核与硬件驱动层: 二.Android 应用开发体系介绍 1.四大组件:Activity,Service,BroadcastReceiver(广播接收器),

一、项目基础架构——以ABP为基础架构的一个中等规模的OA开发日志

前言: 最近园子里ABP炒的火热.看了几篇对于ABP的介绍后,深感其设计精巧,实现优雅.个人感觉,ABP或ABP衍生品的架构设计,未来会成为中型Net项目的首选架构模式.如果您还不了解ABP是什么,有什么特色,请移步:<ABP集合帖>——http://www.cnblogs.com/kebinet/p/5341663.html 项目背景介绍: 作者自参加工作以来,一直在法律圈打转.09-12年间,作者曾带团队用WebForm+N层架构实现了一个律师事务所的OA系统.时过境迁,现在在维护此系统时

系统架构:架构体系

每个公司的IT环境,不论大小复杂度,总会有个系统架构层次.有了这个架构体系,那所有的运维事情大体都围绕着这个系统架构上的每个元素及整体关联进行运维保障工作.运维架构从某种角度可以划分为两大阵营: 商业封闭式系统架构(IOE架构):以使用IBM.Oracle.EMC产品为代表的一系列软硬件产品为主要元素的运维系统架构,以及围绕这个架构的人.事.物.流程标准. 开源系统架构(非IOE架构):以使用廉价PC服务器,开源产品技术(而非IOE)为主要元素的运维系统架构,以及围绕这个架构的人.事.物.流程标

Oracle数据库HA架构方案介绍

摘要:Oracle数据库在各类应用系统中负责存储平台所有的用户数据,数据库的可靠性及安全性直接影响平台的安全运行,目前采用的Oracle Replication方式来实现的数据库高可靠性已经显示出了弊端,本文介绍并分析了目前比较流行的几种数据库高可用性的架构:Oracle Replication.Oracle Rac.Oracle 主机HA等,希望给大家一个参考. 1 什么是高可用性(High  Availability) 高可用(HA)性有两种不同的含义,在广义环境中是指整个系统的高可用性,在

Hadoop学习系列(2.Hadoop框架介绍与搜索技术体系介绍)

第一天 2.Hadoop框架介绍与搜索技术体系介绍 1. 大数据典型特性与分布式开发难点 2. Hadoop框架介绍与搜索技术体系介绍 3. Hadoop版本与特性介绍 4. Hadoop核心模块之HDFS分布式文件系统架构介绍 5. Hadoop核心模块之Yarn操作系统架构介绍 6. Linux安全禁用设置与JDK安装讲解 7. Hadoop伪分布式环境部署HDFS部分 8. Hadoop伪分布式环境部署Yarn和MR部分 9. Hadoop环境使用常见的错误集合 10. Hadoop环境常