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理论知识的更多相关文章

  1. 用VC进行COM编程所必须掌握的理论知识

    一.为什么要用COM 软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的.结构化编程 ...

  2. Winsock网络编程笔记(4)----基本的理论知识

    前面的笔记记录了Winsock的入门编程,领略了Winsock编程的乐趣..但这并不能算是掌握了Winsock,加深理论知识的理解才会让后续学习更加得心应手..因此,这篇笔记将记录一些有关Winsoc ...

  3. 关于mpi的理论知识以及编写程序来实现数据积分中的梯形积分法。

    几乎所有人的第一个程序是从“hello,world”程序开始学习的 #include "mpi.h" #include <stdio.h> int main(int a ...

  4. 分析技术和方法论营销理论知识框架,营销方面4P、用户使用行为、STP,管理方面5W2H、逻辑树、金字塔、生命周期

    原文:五种分析框架:PEST.5W2H.逻辑树.4P.用户使用行为 最近在一点点的啃<谁说菜鸟不懂得数据分析>,相当慢,相当的费脑力,总之,真正的学习伴随着痛苦:) 最初拿到这本书的时候, ...

  5. 【2017年9月10日更新】ABP配套代码生成器(ABP Code Generator)帮助文档,实现快速开发

    ABP代码生成器介绍 ABP Code Generator 针对abp这个框架做了一个代码生成器,功能强大.分为两大功能点,一个是数据层,一个是视图层. 数据服务层:通过它,可以实现表设计.领域层初始 ...

  6. Web前端理论知识记录

      Web前端理论知识记录 Elena· 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session) ...

  7. ElasticSearch实战系列四: ElasticSearch理论知识介绍

    前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...

  8. Java数据结构——树、二叉树的理论知识汇总

    通用树的理论知识 一.树的定义 由一个或多个(n>=0)节点组成的有限集合T,有且仅有一个节点称为根(root),当n>1时,其7余的节点为m(m>=0)个互不相交的有限集合T1,T ...

  9. OSGI 理论知识

    下面列出了主要的控制台命令: 表 1. Equinox OSGi 主要的控制台命令表 类别 命令 含义 控制框架 launch 启动框架 shutdown 停止框架 close 关闭.退出框架 exi ...

  10. js中函数的一些理论知识

      函数的一些理论知识 1. 函数:                执行一个明确的动作并提供一个返回值的独立代码块.同时函数也是javascript中的一级公民(就是函数和其它变量一样). 2.函数的 ...

随机推荐

  1. centos7下搭建 MongoDB -01

    距离上次写的一篇mongoDB搭建已经有一年多的时间了,刚好这次在公司搭建好在centos7下的mongodb搭建,简单的做一个记录吧 mongo 是一个基于分布式文件存储的数据库,数据主要存储在磁盘 ...

  2. Docker_快速部署jenkins

    开门见山,如何在利用docker快速部署jenkins服务?下面详解 1:docker的基本按照与部署,前文已经详述,这里不多说. 2:pull一个jenkins镜像 docker pull jenk ...

  3. 原来你是这样的Websocket--抓包分析

    之前自己一个人负责完成了公司的消息推送服务,和移动端配合完成了扫码登录.订单消息推送.活动消息广播等功能.为了加深自己对Websocket协议的理解,自己通过进行抓包的方式学习了一番.现在分享出来,希 ...

  4. 面向服务的体系架构 SOA(二) --- 服务的路由和负载均衡

    2. 服务的路由和负载均衡 1.2.1 服务化的演变 SOA设计思想:分布式应用架构体系对于业务逻辑复用的需求十分强烈,上层业务都想借用已有的底层服务来快速搭建更多.更丰富的应用,降低新业务开展的人力 ...

  5. SQL Server The target database ('db') is in an availability group and currently does not allow read only connections. For more information about application intent, see SQL Server Books Online.

    一.问题概述 在错误日志中看到非常多的alwayson群集只读连接错误,错误信息的描述为“目标数据库位于可用性组,当前不允许通过read only连接”.错误日志如下: 当前的业务系统使用监听ip对数 ...

  6. Linux增加LV(逻辑卷)容量

    Linux增加LV(逻辑卷)容量 2017-09-29-17:34:13 个人原创博客,转载请注明出处. 查看逻辑卷的相关命令: lvs vgs 命令: [root@arch ~]# vgs VG # ...

  7. Nginx配置ThinkPHP下的url重写(隐藏入口)

    搭建好项目后,在网址上输入域名,只能访问首页,其他页面全是404. 在域名后面和控制器前面加上index.php就可以访问. 在tp5官网手册查找后进行配置修改. 打开nginx.conf 后 ,在s ...

  8. 安装Accumulo——突破自己,就是成长

    前言 在我刚开始接触分布式集群的时候,是自己在几台虚拟机中手动安装的 Hadoop 和 Spark ,所以当时对 Hadoop 的配置有个简单的印象 ,但是后面发现了 Cloudera 和 Ambar ...

  9. Java爬取 百度图片Google图片Bing图片

    先看看抓取的结果. 8个Java类: Startup.java - main函数 ImageCrawler.java - Crawler基类 BaiduImageCrawler.java - 百度图片 ...

  10. JS面向对象与面向过程

    前言 面向对象编程: 就是将你的需求抽象成一个对象,然后针对这个对象分析其特征(属性)与动作(方法)--这个对象就称之为类 面向过程编程: 特点:封装,就是将你需要的功能放在一个对象里面 ------ ...