日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Autofac 快速入门

發布時間:2023/12/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Autofac 快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Autofac 是 .NET 下的一個開源 Ioc 容器的實現庫,雖然實際上系統自帶有一個 Microsoft.Extensions.DependencyInjection,已經提供了基礎的依賴注入的能力。但是我發現很多人喜歡用 Autofac,因為這個 Ioc 容器提供的功能更多更加強大。

首先簡單介紹一下控制反轉,依賴注入,雖然這個應該網上有很多文章都有講過,但還是介紹一下自己的看法(不保證是對的)。

傳統的面向過程開發的思維模式是由一個個的過程對數據進行疊加的操作,這段數據在內存中不斷的變化,然后被 IO 輸出。而面向對象開發的思維模型是在一個對象群集中,由一個靠近邊界的對象接受來自邊界外的消息以后,該對象 A 發現處理該消息還需要進行其他的操作,于是 A 傳遞一個新的消息給對象 B,然后 B 傳遞新消息傳給 C 。。。可能一直延續多次,直到這個消息鏈條一直被處理完成。

然而這樣就存在一個問題,由誰來構建這個群集中的對象,并保證他們能夠正確的創建和消亡。最簡單的方法就是由需要他的對象自己創建,大多數時候我們就是這樣做的,加入構造對象 A 需要 B 的實例,那么就創建 B 的實例并將 B 的實例傳遞給A 的構造函數,但是當對象間的依賴關系變得復雜以后,靠手動創建對象將是一件非常麻煩的事情。原因在于你假如你依賴 3 個對象,而這三個對象的創建又依賴于其他的對象,那么這個依賴關系的鏈條將變得非常的長。

即使你能夠通過一些幫助的函數來抽象出部分重復的依賴關系的準備過程。但是還有一個問題沒有解決,那就是過于復雜的耦合問題,因為所有的依賴關系都被硬編碼到了源代碼當中,當你想要更改的的的時候的時候幾乎是不可能的,例如本質上 A 依賴于 B 的原因是因為他需要一個能夠處理 Print 消息的組件。

前面說的由依賴者自己準備被依賴者的反面就是控制反轉,而依賴由外部提供給依賴者局勢依賴注入。或者可以說,他倆沒區別,茴香豆的五種寫法,客制化/定制化,字兒有區別,意義沒有。

實現 DI 或者說 Ioc 由兩種方法:

  • 服務定位器模式
  • DI/Ioc 容器
  • 一般認為定位器模式是反模式。

    前面提到 DI 容器實際上主要功能只有一個就是依賴的管理,但是問題在于怎么管理。

    Autofac 提出了一些概念:

  • 組件: 也就是實際被添加到容器中的類型
  • 服務:一組可以處理的消息集合,實際一般也就是接口
  • 組件生命周期:OnPreparing,OnActivating,OnActivated,OnRelease 組件在創建前后都會有指定的事件發生,我們可以注冊指定的事件處理函數。
  • Scope 有些對象的存在時限定在一個指定范圍的,就像代碼塊中聲明的變量一樣,當這個 Scope 消亡以后,對應的組件也就消亡了。
  • 實例作用域 當請求服務的時候返回的服務實例的作用返回是每次請求都返回一個新的,還是每次都相同,還是在同一個 Scope 中相同
  • 模塊 Autofac 的配置
  • // TODO API 介紹

    總結

    以上是生活随笔為你收集整理的Autofac 快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。