学习完毕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. Media Queries简单案例一

    案例一: 1 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

  2. delphi 连接oracle对接代码

    selectt4.vclen60 as pat_d_codename,t4.vclen60 as pat_sexname,t1.pat_sex,t1.pat_d_code,t1.pat_in_no,t ...

  3. 【Win10】实现 ListViewBase 平滑滚动

    首先解释下标题的 ListViewBase 是什么鬼.ListViewBase 我们可以查阅 MSDN 文档:https://msdn.microsoft.com/zh-cn/library/wind ...

  4. 跨终端Web

    1.终端vs设备 H5页面运行在同一设备的不同终端下. (1)Web浏览器. (2)微信.QQ浏览器. (3)移动App的Webview. (4)TV机顶盒. 2.跨终端的实现方式 (1)响应式 存在 ...

  5. Java反射reflection与注解annotation的应用(自动测试机)

    一.关于自动测试机 1.什么是自动测试机? 对类中的指定方法进行批量测试的工具 2.自动测试机有什么用? a.避免了冗长的测试代码 当类中的成员方法很多时,对应的测试代码可能会很长,使用测试能够让测试 ...

  6. c# readkey readline read 区别

    Console.read().Console.readline().Console.readkey()和Console.Write.Console.Writeline()的区别 Console.rea ...

  7. 记录.NET Core部署到Linux之.NET Core环境搭建(1)

    1.在安装.NET之前,您需要注册Microsoft密钥.注册产品存储库和安装所需的依赖项. 启动我们的虚拟机,输入以下命令: sudo rpm -Uvh https://packages.micro ...

  8. 数据导出之winform导出word(三)

    本篇文章补充讲解上篇文章中word模板的制作. ① 新建一个word文档 ② 定位到要插入书签的位置 ③ 菜单栏 “插入” -> “书签”,输入书签名,点击“添加” 可以多处位置使用同样的书签名 ...

  9. day103 跨域请求 与频率访问限制.

    目录 一.跨域请求 二.频率访问限制 一 .同一个域下的ajax请求访问  url文件 from django.conf.urls import url from django.contrib imp ...

  10. Android---------------Service的学习

    一.创建与启动Servcie的三个步骤 : 1. 创建一个类并继承Servcie 2.在配置文件中注册服务 3.通过Intent来启动服务 二.Service的两种启动方式 1.startServce ...