ABP实战--项目结构
学习完毕With ASP.NET Core & Entity Framework Core Part-1及Part-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
中会依赖CeciApplicationModule
及 CeciEntityFrameworkCoreModule
,CeciApplicationModule
又会依赖CeciCoreModule
。
所以系统中的Module的初始化顺序为:
CoreModule
的PreInitialize()
ApplicationModule
的PreInitialize()
EFCoreModule
的PreInitialize()
WebModule
的PreInitialize()
CoreModule
的Initialize()
ApplicationModule
的Initialize()
EFCoreModule
的Initialize()
WebModule
的Initialize()
同理,Test层也是如此
在Tests层的CeciTestBase中:
在Web.Tests层的Startup中: