进军ABP第一天:ABP理论知识
1.2.3 领域层
领域层就是业务层,是一个项目的核心,所有业务规则都应该在领域层实现。
( 实体(Entity )
实体代表业务领域的数据和操作,在实践中,通过用来映射成数据库表。
( 仓储(Repository )
仓储用来操作数据库进行数据存取。仓储接口在领域层定义,而仓储的实现类应该写在基础设施层。
( 领域服务(Domain service )
当处理的业务规则跨越两个(及以上)实体时,应该写在领域服务方法里面。个人理解就是需要联表/同时多表操作的时候就在领域服务写
领域事件(Domain Event )
在领域层有些特定情况发生时可以触发领域事件,并且在相应地方捕获并处理它们。
( 工作单元(Unit of Work )
工作单元是一种设计模式,用于维护一个由已经被修改(如增加、删除和更新等)的业务对
象组成的列表。它负责协调这些业务对象的持久化工作及并发问题。
1.2.4 应用层、
应用层提供一些应用服务(Application Services)方法供展现层调用。
一个应用服务方法接收一个 DTO(数据传输对象)作为输入参数,使用这个输入参数执行特定的领域层操作,并根据需要可返回另一个 DTO。
在展现层到领域层之间,不应该接收或返回实体(Entity)对象,应该进行 DTO 映射。
一个应用服务方法通常被认为是一个工作单元(Unit of Work)。
用户输入参数的验证工作也应该在应用层实现。
ABP 提供了一个基础架构让我们很容易地实现输入参数有效性验证。
建议使用一种像 AutoMapper 这样的工具来进行实体与 DTO 之间的映射
1.2.5 基础设施层
当在领域层中为定义了仓储接口,应该在基础设施层中实现这些接口。可以使用 ORM 工
具,例如 EntityFramework 或 NHibernate。ABP 的基类已经提供了对这两种 ORM 工具的支
持。数据库迁移也被用于这一层(我使用的是EntityFramework)
1.2.6 WEB 与展现层
Web 层使用 ASP.NET MVC 和 Web API 来实现。可分别用于多页面应用程序(MPA)和单
页面应用程序(SPA)。
在 SPA 中,所有资源被一次加载到客户端浏览器中(或者先只加载核心资源,其他资源
懒加载),然后通过 AJAX 调用服务端 WebApi 接口获取数据,再根据数据生成 HTML 代码。
不会整个页面刷新。现在已经有很多 SPA 的 JS 框架,例如: AngularJs、 DurandalJs、
BackboneJs、EmberJs。 ABP 可以使用任何类似的前端框架,但是 ABP 提供了一些帮助类,
让我们更方便地使用 AngularJs 和 DurandalJs。(个人理解就是..前端的一些东西封装在后端随时可以通过调用返回给前端展现相关效果)
以上是由ABP 框架中国小组(ABPFrameWorkGroup)翻译的ABP Framework官方文档当中的内容,我提取出一些点拿来记录,现在开始我自己的ABP初次项目。
项目计划:
- 1.理解ABP运转过程,
- 2.理解各层之间的作用性
- 3.实践体验用ABP的好处
项目文件夹截图:

所使用IDE:VS2017
所使用.net framework版本:4.6.0
期待早日掌握ABP 今天:2017-10-24 09:26:46
进军ABP第一天:ABP理论知识的更多相关文章
- 用VC进行COM编程所必须掌握的理论知识
一.为什么要用COM 软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的.结构化编程 ...
- Winsock网络编程笔记(4)----基本的理论知识
前面的笔记记录了Winsock的入门编程,领略了Winsock编程的乐趣..但这并不能算是掌握了Winsock,加深理论知识的理解才会让后续学习更加得心应手..因此,这篇笔记将记录一些有关Winsoc ...
- 关于mpi的理论知识以及编写程序来实现数据积分中的梯形积分法。
几乎所有人的第一个程序是从“hello,world”程序开始学习的 #include "mpi.h" #include <stdio.h> int main(int a ...
- 分析技术和方法论营销理论知识框架,营销方面4P、用户使用行为、STP,管理方面5W2H、逻辑树、金字塔、生命周期
原文:五种分析框架:PEST.5W2H.逻辑树.4P.用户使用行为 最近在一点点的啃<谁说菜鸟不懂得数据分析>,相当慢,相当的费脑力,总之,真正的学习伴随着痛苦:) 最初拿到这本书的时候, ...
- 【2017年9月10日更新】ABP配套代码生成器(ABP Code Generator)帮助文档,实现快速开发
ABP代码生成器介绍 ABP Code Generator 针对abp这个框架做了一个代码生成器,功能强大.分为两大功能点,一个是数据层,一个是视图层. 数据服务层:通过它,可以实现表设计.领域层初始 ...
- Web前端理论知识记录
Web前端理论知识记录 Elena· 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session) ...
- ElasticSearch实战系列四: ElasticSearch理论知识介绍
前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...
- Java数据结构——树、二叉树的理论知识汇总
通用树的理论知识 一.树的定义 由一个或多个(n>=0)节点组成的有限集合T,有且仅有一个节点称为根(root),当n>1时,其7余的节点为m(m>=0)个互不相交的有限集合T1,T ...
- OSGI 理论知识
下面列出了主要的控制台命令: 表 1. Equinox OSGi 主要的控制台命令表 类别 命令 含义 控制框架 launch 启动框架 shutdown 停止框架 close 关闭.退出框架 exi ...
- js中函数的一些理论知识
函数的一些理论知识 1. 函数: 执行一个明确的动作并提供一个返回值的独立代码块.同时函数也是javascript中的一级公民(就是函数和其它变量一样). 2.函数的 ...
随机推荐
- postgresql搭建从库
postgresql搭建从库 master 10.40.196.27 slave 10.40.55.69 需求:master和slave作为主从流复制,当master宕机后,slave切换为新主 ...
- Spring Data(二)查询
Spring Data(二)查询 接着上一篇,我们继续讲解Spring Data查询的策略. 查询的生成 查询的构建机制对于Spring Data的基础是非常有用的.构建的机制将截断前缀find-By ...
- Myeclipse配置tomcat,以及简单的Myeclipse的配置
第一次总结技术相关的东西,那就坚持下去每天写一点.[有错欢迎指正,本人小白,轻虐] 首先,(以我的为例子吧)需要准备原材料,当然了也需要根据自己的机器底层架构选择了---Myeclipse(2015) ...
- ubuntu系统备份与恢复(也适用于其他linux系统)
在windows环境下面,有很多的备份恢复软件,系统也自带了备份恢复功能,比较知名的软件比如ghost等,为什么要备份系统,我之前一直都是系统出现问题就全新安装原版的windows,然后各种设置,各种 ...
- Redis分布式锁的正确实现方式
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁.虽然网上已经有各种介 ...
- python虚拟环境介绍与安装
视频链接: http://edu.tv.sohu.com/play/sid/8fefb999e05c5b01 1.为什么安装虚拟环境? 因为python框架更新迭代太快,有时电脑上存在一个框架多个版 ...
- delphi JPG图片 旋转 切边 缩放
unit UCutFigure_JPG; //JPG 切图 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphic ...
- 黄金K线理论简述
黄金K线理论简述 [Ⅰ]. 隐藏在K线背后的多空搏杀 黄金K线的多空搏杀理论,说到底,其核心就是研判K线时,必须从多空搏杀的角度去认知,否则仅仅从表面到表面,是无法掌握K线精髓的.具体来说,多方和空方 ...
- 使用Quartz 2D擦除图片
Quartz 2D 是一个强大的二位图像绘制引擎,在开发中如果遇到需要高度自定义的控件,我们就可能需要用Core Graphics进行绘制. 这几天一同事开发一个聊天中的一个子模块,A 画一幅图,然后 ...
- Django基本命令
下载Django pip3 install django #默认下载最新版 pip3 install django==1.11.1 #手动选择版本 创建Django项目 格式:django-admin ...