【學習紀錄】學習Autofac

自己學習Autofac的感想

快兩個月沒在這寫文章了
這段期間也不是沒有學習,但有的就只是看別人文章實作看看,有的覺得很難講
這篇來講一下autofac吧
相關的IOC與DI的觀念請另行google吧
就我自己實務上的使用,我的Controller會有一個以上的Servce的實體變數
我在開發過程中會切換實體變數
例如一開始使用不碰資料庫的Service,等到前端的部分開發OK之後,在使用有用資料庫的Service
最簡單的作法是直接在controller的建構子new就好
我的研究方式是看官方文件(原文)與上網查教學文章與部落格
提供兩個我覺得不錯的部落格供參考
一般DI使用流程可分成
  • 註冊Component
  • 取出Service
Autofac在註冊上的寫法很多樣化
但也很麻煩(至少要熟悉很辛苦)
最基本的做法是使用RegisterType,並且使用建構子注入的作法
DI的注入方式有很多種,autofac比較適合建構子注入
比較新的用法是使用Keyed與Named,當你一個interface有多個實作類別要註冊,又無法用泛型區分時可以使用
Autofac可以使用JSON或XML的方式進行註冊
我自己只試過JSON,感覺某些狀況不是很好用
如果是以下狀況的話,才適合使用
1.不須取出其他需要使用Keyed或Named的Service
2.需不重新編譯就進行切換
我以前有使用過java spring的IOC,當初在學習時多少會想找出類似的用法
但兩者特性不同,再調整自己的觀念與找出適當的使用autofac的用法花了我不少時間
整個官方文件也看了不只一次(某些部份我還是無法理解)
按照過去文章慣例,來做個總結吧
如果是追求只要程式能跑就好的開發團隊
我並不建議研究與使用autofac(直接new就好了)
如果真的很想用的話,最好多花些時間研究(原文的官方文件)與熟悉autofac
否則使用autofac不見得會是好事(尤其是要供外部使用的系統)