ITPub博客

首页 > IT职业 > IT生活 > 手工搭建ABP框架(1) - Web项目

手工搭建ABP框架(1) - Web项目

IT生活 作者:tonnyluo 时间:2021-09-09 09:07:01 0 删除 编辑

ABP是 ASP.NET Boilerplate Project 的简称。ABP是基于DDD(领域驱动设计)的框架。ABP包含众多组件,包括依赖注入、动态API、审计日志、权限控制等等。在大部分的ABP教材中,会推荐使用模板(https://aspnetboilerplate.com/Templates) 来创建ABP工程。然而在实际使用中(至少在我的情况里)一般都需要手工搭建框架而非使用模板。手工搭建有下面几个好处:
1.模板创建的工程有很多不需要的东西需要调整或删除,手工搭建免去了这些麻烦;
2.手工搭建框架能更自由地根据实际需求进行自定义配置和扩展;
3.手工搭建能帮助你更深入地理解ABP框架。
由于手工搭建ABP框架材料较少,我搭建时踩了不少坑。所以在这里记录一下搭建框架的核心步骤,以免以后重新摸索,同时与大家分享,欢迎拍砖。下面我们以开发一个简单的微博应用为例来展示如何使用ABP框架。

http://images2017.cnblogs.com/blog/576869/201709/576869-20170902005602530-475336174.png

大功告成!

你访问API的时候可能会出现"Empty or invalid anti forgery header token"的错误,这是因为某些ABP版本默认开启了CSRF防御。在MyTweetWebModule的PreInitialize方法加上下面这行代码关闭CSRF防御就可以了。

Configuration.Modules.AbpWeb().AntiForgery.IsEnabled = false;
https://aspnetboilerplate.com/Pages/Documents/Module-System。

模块主要用来管理系统初始化和关闭时要执行的操作。ABP在系统初始化和关闭时根据模块间依赖关系执行相应的操作。

定义一个模块只需要继承AbpModule。我们可以用DependsOn标签来声明模块间的依赖关系(ABP框架会自动解析依赖关系,但建议使用显式的声明)。

一个模块会有如下方法,我们可以重载这些方法来定义模块初始化/关闭时要做的操作:

  • PreInitialize:预初始化
  • Initialize:初始化
  • PostInitialize:后初始化
  • Shutdown:关闭
    应用启动时会根据模块的依赖顺序进行初始化。比如有模块A和模块B,模块A依赖模块B,那么初始化的执行顺序为:
    1.B的PreInitialize
    2.A的PreInitialize
    3.B的Initialize
    4.A的Initialize
    5.B的PostInitialize
    6.A的PostInitialize
    关闭则按照依赖相反顺序:
    1.A的Shutdown
    2.B的Shutdown
    最后还有一个问题:应用启动时,ABP框架如何知道要初始化哪些模块?答案在入口函数方法:
    图片描述

ABP框架解析MyTweetModule所依赖的模块,按顺序初始化这些模块(包括MyTweetModule)。

本文作者:古霜卡比,原文链接http://www.cnblogs.com/skabyy/p/7295533.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2298/viewspace-2808198/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-16

  • 博文量
    76
  • 访问量
    681