学习完毕With ASP.NET Core & Entity Framework Core Part-1Part-2后,只实现了基本的功能,使用该工程继续学习ABP的更多功能。

更改项目结构

由项目的解决方案类图可知项目的引用顺序:

更改项目文件的显示名,以清晰结构

各层定义

1-Core

领域层,存放数据库的Model以及单Model的一些操作。部分基础架构的内容也可以放这里,如mail发送等。

2.1-EntityFrameworkCore

EFCore层,用于DbContext的构造以及数据库结构的更新

2.2-Application

应用层,处理具体的业务逻辑。

3-Web

Web展现层,这里即UI层

3-Tests

Application测试层

4-Web.Tests

Web测试层

初始化

每个层中都有自己的Module,ABP是模块化的,通过这些Module实现了各层之间的依赖以及初始化。其依赖关系与层的依赖关系相同。

在Web层的Startup.cs类中将CeciWebModule注册为了ABP的TStartupModule,该Module以及其依赖的Module都会随之被调用

而在CeciWebModule中会依赖CeciApplicationModuleCeciEntityFrameworkCoreModuleCeciApplicationModule又会依赖CeciCoreModule

所以系统中的Module的初始化顺序为:

  • CoreModulePreInitialize()
  • ApplicationModulePreInitialize()
  • EFCoreModulePreInitialize()
  • WebModulePreInitialize()
  • CoreModuleInitialize()
  • ApplicationModuleInitialize()
  • EFCoreModuleInitialize()
  • WebModuleInitialize()

同理,Test层也是如此
在Tests层的CeciTestBase中:

在Web.Tests层的Startup中:

ABP实战--项目结构的更多相关文章

  1. ABP架构学习系列一 整体项目结构及目录

    本系列是基于aspnetboilerplate-0.8.4.0版本写的,其中原因是由于较高的版本太抽象难以理解和分析,对于还菜菜的我要花更多的时间去学习. abp的源码分析学习主要来源于 HK Zha ...

  2. .NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI

    作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计.那如何套用呢?今天 ...

  3. ABP大型项目实战(2) - 调试与排错 - 日志 - 查看审计日志

    这是<ABP大型项目实战>系列文章的一篇.   项目发布到生产环境后难免会有错误. 那么如何进行调试和排错呢?   我看到俱乐部里有人是直接登陆生产服务器把数据库下载到开发机器进行调试排错 ...

  4. Ionic 入门与实战之第三章:Ionic 项目结构以及路由配置

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第三章,主要对 Ionic 的项目结构作了介绍,并讲解了Ionic 中的路由概念以及相关配置. 原文发表于我的技术博客 1. Ioni ...

  5. 入 Go 必读:大型Go工程的项目结构及实战思考 原创 毛剑 QCon 今天

    入 Go 必读:大型Go工程的项目结构及实战思考 原创 毛剑 QCon 今天

  6. ABP 适用性改造 - 精简 ABP CLI 生成的项目结构

    Overview 不管是公司或者个人都会有不同的开发习惯,通过建立项目模板,既可以使开发人员聚焦于业务功能的开发,也可以在一定程度上统一不同开发人员之间的开发风格.在使用 ABP 框架的过程中,对于 ...

  7. flask实战-个人博客-虚拟环境、项目结构

    个人博客 博客是典型的CMS(Content Management system,内容管理系统),通常由两部分组成:一部分是博客前台,用来展示开放给所有用户的博客内容:另一部分是博客后台,这部分内容仅 ...

  8. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(5)- 创建项目结构

    前言 关于理论知识,我的表达能力有限,知识水平有限,就不过多的讲解编程工作中的专用术语了,大家写的代码多了,自然就懂了 前几节课,我们看到了后台的主页面,以及一个自认为比较漂亮的登录界面,算是编程套路 ...

  9. Flutter实战视频-移动电商-09.首页_项目结构建立和获取数据

    09.首页_项目结构建立和获取数据 在config下创建service_url.dart 用来配置我们后端接口的配置文件 一个变量存 接口地址,一个接口方法地址 所有后天请求数据的方法都放在这个文件夹 ...

随机推荐

  1. 结对编程-四则运算生成器(java实现)

     结对伙伴:陈振华  项目要求 1.题目:实现一个自动生成小学四则运算题目的命令行程序. 2.需求: 1. 使用 -n 参数控制生成题目的个数 2. 使用 -r 参数控制题目中数值(自然数.真分数和真 ...

  2. SMINT:单页网站的免費jQuery插件

    最近为了做一个静态网页版的数据报告,不希望花很多时间去设计网页,或者花时间去调整布局,于是找到了一个名为Smint的免費jQuery插件.几乎不需要写什么代码就可以完成一个一页式网站.这非常适合用来制 ...

  3. CSharp程序员学Android开发---2.个人总结的快捷键

    最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...

  4. [翻译]NUnit---TestCase Attributes(二十一)

    TestCaseAttribute (NUnit 2.5) TestCase特性有两个效果,包括标记一个方法使用参数并且在调用的时候提供内置数据.示例如下,本示例会使用不同数据集执行3次: [Test ...

  5. Js加密算法

    使用crypto-js在浏览器上对数据加密签名 重要知识点: CryptoJS.lib.WordArray  WordArray对象可以理解为byte[] CryptoJS.enc 提供编码转换,从字 ...

  6. 盘古分词+一元/二元分词Lucene

    本文参考自:https://blog.csdn.net/mss359681091/article/details/52078147 http://www.cnblogs.com/top5/archiv ...

  7. jsp(Java的服务网页)$javabean

    JSP:Java Server Page(Java的服务网页),也是Java的动态网页.  JSP的本质:其实就是一个Servlet.  JSP---->翻译成Servlet类---->编 ...

  8. yum 安装指定 kernel 版本源码

    yum install "kernel-devel-uname-r == $(uname -r)"

  9. Ubuntu18.04 - 返回到Gnome经典桌面!

    Ubuntu18.04默认的桌面是定制版的Gnome,说实话,真的不喜欢,还是喜欢Gnome的经典桌面,那么如何进入呢?执行下面命令,执行完毕后注销,选择一下就可以了! sudo apt-get in ...

  10. Python(网络基础)

    day33 参考:http://www.cnblogs.com/linhaifeng/articles/5937962.html IP协议: 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址, ...