一 .框架体系的介绍

ABP框架采用的是DDD(领域驱动设计)的原则,可以很方便实现项目之间的松耦合,采用模块化的方式,方便对框架的扩展。

按照DDD的原则,首先将项目分为四层:

展现层:用来展现给用户,并和用户进行交互的层。

应用层(Application):用来和领域层进行交互。

领域层(Domain):这个是核心层,完成基本逻辑和数据的处理。

基础设施层(infrastructure):这个是封装了对数据库的处理,如ORM框架

具体的框架体系分布:

二 . ABP项目文件的介绍

 三. ABP中Module的生命周期

在ABP框架中采用的模块的方式进行加载,那么它的执行顺序是怎样的呢?

上面的代码是从Core层拿过来的,其中可以注意到,任何自定义的Module都必须继承AbpModule,同时发现有几个特殊的方法。

(1)PreInitialize:预初始化,当应用第一次启动的时候,会首先调用这个方法,这个方法是在依赖注入之前,可以在这个方法中自定义启动类。上述代码中可以看到进行了一些配置。

(2)Initialize:初始化,大多是将一些类库注入到容器中去,注入的方式IocMananger.RegisterAssemblyByConvetion().

(3)PostInitialize:提交初始化的内容,用来解析依赖关系。

(4)Shutdown:这个方法不常用,就是在关闭应用的时候被调用。

那么问题来了,在ABP框架中存在好多的Module,那么具体是怎样进行初始化的呢?(两种可能的方式:1.ModuleA的PreInitialize,然后ModuleaA的Initiallize。。。当ModuleA初始化完后在执行ModuleB 2.执行ModuleA的PreInitialize ,执行ModuleB的PreInitialize,然后执行ModuleA的Initialize和ModuleB的Initialize)

在ABP框架中会自动解析依赖关系,但是还是建议明确的指明依赖关系,上面就是使用特性标签的方式标注依赖关系。

从上面的代码可以看出ModuleA依赖于ModuleB,那么他们的执行顺序是:

PreInitialize-ModuleB

PreInitialize-ModuleA

Initialize-ModuleB

Initialize-ModuleA

PostInitialize-ModuleB

PostInitialize-ModuleA

(看样子第二种猜测是正确的)

关于自定义Module,只需要继承自AbpModule,然后分别实现对应的PreInitialize和Initialize,完成自己的需求配置即可。

ABP之框架体系的更多相关文章

  1. ABP VNext框架基础知识介绍(1)--框架基础类继承关系

    在我较早的时候,就开始研究和介绍ABP框架,ABP框架相对一些其他的框架,它整合了很多.net core的新技术和相关应用场景,虽然最早开始ABP框架是基于.net framework,后来也全部转向 ...

  2. NBIbatis 框架体系说明

    框架体系说明 Application 表现层 表现层必须通过Business业务规则层操作数据库,不能直接调用DataAccess数据访问. Sqlmap.config配置: connectionSt ...

  3. HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID

    HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...

  4. 手工搭建基于ABP的框架 - 工作单元以及事务管理

    一个业务功能往往不只由一次数据库请求(或者服务调用)实现.为了功能的完整性,我们希望如果该功能执行一半时出错,则撤销前面已执行的改动.在数据库层面上,事务管理实现了这种完整性需求.在ABP中,一个完整 ...

  5. Java集合框架体系JCF

    Java 集合框架体系作为Java 中十分重要的一环, 在我们的日常开发中扮演者十分重要的角色, 那么什么是Java集合框架体系呢? 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一 ...

  6. Abp vNext框架 实例程序BookStore-笔记

    参考 Abp vNext框架 应用程序开发教程 创建项目和书籍列表页面 http://www.vnfan.com/helinbin/d/3579c6e90e1d23ab.html 官方源码 https ...

  7. Abp vNext框架 从空项目开始 使用ASP.NET Core Web Application-笔记

    参考 Abp vNext框架 从空项目开始 使用ASP.NET Core Web Application http://www.vnfan.com/helinbin/d/745b1e040c9b4f6 ...

  8. java集合类-集合框架体系

    集合框架体系 集合框架体系是由Collection.Map和 Iterator(迭代器) 实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口 Collection体系 Set接口:元素无序且不 ...

  9. Java 集合框架体系总览

    尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 「CS-Wiki」Gitee ...

随机推荐

  1. 存储过程打印超过8000的VARCHAR字符的问题

    DECLARE @info NVARCHAR(MAX) --SET @info to something big PRINT CAST(@info AS NTEXT) 这样就可以输出超过8000的字符 ...

  2. 标准代码页(codepage)列表

    https://blog.csdn.net/jianggujin/article/details/80325461 这篇文章有待完善 代码页 简称 全称 37 IBM037 IBM EBCDIC (U ...

  3. Get started with ros -- 1

    原创博文:转载请标明出处(周学伟):http://www.cnblogs.com/zxouxuewei/tag/ 一.Introduction: 机器人操作系统(ROS)是使机器人系统的不同部分能够发 ...

  4. dubbo开发前戏--ZooKeeper集群部署(3.4.6)

    最近在开发dubbo服务的时候一直用的是公司提供的zk平台,因为使用的人太多或者没人维护老是出问题,导致dubbo服务偶尔可以调通,偶尔调不通的情况,所以花点时间自己部署一套,后面出问题还方便看日志排 ...

  5. CentOS7图形界面启动报错unable to connect to X server

    以前还可以正常启动图形界面,这次启动失败,报错unable to connect to X server 使用的是oracle用户,因为我是在oracle用户下创建的oracle数据库等 解决办法: ...

  6. centos7修改root密码

    1.重启系统,在下面界面时按e键 2.出现可编辑新内容,按向下键向下滑动,找到ro,并修改为rw 后,在LANG=en_US.UTF-8后面再加init=/bin/sh,结果如下图 3.然后按下ctr ...

  7. selenium之 chromedriver与chrome版本映射表(更新至v2.31)

    转自:http://blog.csdn.net/huilan_same/article/details/51896672 chromedriver版本 支持的Chrome版本 v2.31 v58-60 ...

  8. HttpClient(五)-- 模拟表单上传文件

    1.maven依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId ...

  9. Ansible 使用 Playbook 安装 Nginx

    思路:先在一台机器上编译安装好 Nginx,打包,然后通过 Ansible 下发 [root@localhost ~]$ cd /etc/ansible/ [root@localhost ansibl ...

  10. 深入浅出MFC——MFC骨干程序(四)

    1. 熟记MFC类层次结构: 2. AppWizard可以为我们制作出MFC程序骨干: 3. Document/View支撑你的应用程序:Document/View的价值在于,这些MFC类已经把一个应 ...