【VoloAbp】1.理解AbpModule,模块加载机制
我們從0開始搭建一個Abp模塊。
1.首先我們新建一個空的dotnet項目
2.新版的Abp都掛載在Volo這家公司。所以所有的包都以Volo作為前綴進行命名,如下圖所示
3.如何進行模塊加載 ,其實它的核心在于 AbpModule。那么,我們就安裝一下Volo.Abp.Core這個包一探究竟。安裝完之后,我們如下圖所示新建一個類。在實際開發過程中,這個就可以作為一個松耦合的功能模塊了。
4.繼承了AbpModule這時候,我們就可以F12過去看看 這里面有什么東西了。當然想看它的具體實現可以去看看源碼。我這邊描述一下這里面的東西是干什么用的。
之前說了,每一個module都是一個功能點,那么每一個模塊都有它的配置信息。
所以這里的Configure方法 就是做模塊配置可以實現每一個模塊有每一個模塊的連接字符串,已經一些自定義的你想要的配置
這里提供了6個虛方法來自于繼承的6個事件接口,面向對象里有一個SOLID 設計模式,接口隔離的原則,不同節點提供不同接口所以這里繼承了這6個接口,重寫后,abp會訂閱到你在模塊加載的不同生命周期節點 寫在里面的方法,并執行它。
不過這里最重要的還是 ConfigureServices 這個方法,這個方法來自于IAbpModule接口,那么我們看看IAbpModule接口,其實并不陌生,它在Asp .net core里面就是配置容器的方法。
因此,我們就可以通過這個方法向容器中注入當前模塊所有的服務,ABP的這種方式,把原先那種雜而亂一次性把整個系統的服務加載到容器中,替換成自己的模塊配置自己的依賴注入,和依賴信息,這樣也達到了獨立開發的目的。
上圖所示,我們可以在ConfigureServices里添加自己想添加的,到容器中。
在 OnApplicationInitialization方法里做 模塊初始化時 你自定義的事件。
5.創建完模塊之后,我們可以構建一個ABP引擎。abp提供了一個工廠
這里必須要調用初始化。
6.然后我們來看看ABP的依賴注入。和其他IOC一樣。接口+實現
APB的有很多的約定,ABP 提供了自動依賴注入的接口,多例注冊 ITransientDependency,范圍注冊IScopedDependency,單例注冊ISingletonDependency
像上圖所示使用。
然后就可以去容器中解析出來
7.abp模塊就這樣吧。接下來我們看一下Volo.Abp.Core 的源碼
我這邊分別講一下這個包引用的那么多庫的功能。當然不會細講
首先是這2個
ConfigureAwait.Fody =》https://www.cnblogs.com/fmys/p/13034664.html
Fody =》攔截visual 屎丟丟的行為,可以在編譯過程中注入你想要的操作。
JetBrains.Annotations=》用過ReSharper的同學們,一定知道,用來標記參數檢測[NotNull]
Microsoft=》這部分的就不講了。可以參考蔣金楠的博客園講Core的部分
Nito.AsyncEx.Context
Nito.AsyncEx.Coordination => 這兩個包 的主要功能是把異步方法改成同步的調用。我們開發過程中,會用到的場景有,使用Lock時。
因此我們可以用上這個包的方法。
項目的地址是https://gitee.com/xuxml/volo-abp-first
困了 待續..
總結
以上是生活随笔為你收集整理的【VoloAbp】1.理解AbpModule,模块加载机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图灵奖得主(四)
- 下一篇: 科学计算器的Java实现