进军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.函数的 ...
随机推荐
- Mybatis【一对多、多对一、多对多】知识要点
Mybatis[多表连接] 我们在学习Hibernate的时候,如果表涉及到两张的话,那么我们是在映射文件中使用<set>..<many-to-one>等标签将其的映射属性关联 ...
- 关于input 的选中,自定义input[type="checkbox"]样式
1.css 呈现 选中后 的input的样式可以用 /*背景图*/ background:url('../pc/images/archives/icon_choosed.png') no ...
- SpringMVC入门就这么简单
什么是SpringMVC? SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架 为什么要使用 ...
- IDEA jsp模板
> File > Settings- > File and Code Templates > Other >Jsp files >Jsp File.jsp < ...
- Web项目生成详解
action 与用户控制层相关内容,来自用户的请求和页面跳转: dao 数据库进行增删改查操作,接口定义其中: dao.impl 将上述接口进行实现 domain 数据表都映射成java中的类,实现数 ...
- 23.Django基础
Django基本配置 Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Se ...
- 不能为虚拟电脑 ubuntu 打开一个新任务.
使用virtualbox报错: 不能为虚拟电脑 ubuntu3 打开一个新任务. The virtual machine 'ubuntu3' has terminated unexpectedly d ...
- 兼容的Ajax
/** * 创建XMLHttpRequest对象 * @param _method 请求方式: post||get * @param _url 远程服务器地址 * @param _async 是否异步 ...
- 在 Rolling Update 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(146)
上一节讨论了 Health Check 在 Scale Up 中的应用,Health Check 另一个重要的应用场景是 Rolling Update.试想一下下面的情况: 现有一个正常运行的多副本应 ...
- ELK学习笔记(五)简单搜索和DSL查询
检索文档 现在我们有一些数据存储在Elasticsearch中,我们可以开始处理这个应用程序的业务需求. 这在Elasticsearch中很容易.我们只需执行HTTP GET请求并指定文档的地址--索 ...