Autofac一款I(lǐng)OC容器,據(jù)說比Spring.Net、Unity、Castle性能高,且比較輕量級(jí),也有人做過測試,自己可以找找,看看比拼的結(jié)果是怎樣的,在使用Autofac之前我們先來了解幾個(gè)概念;在我看來依賴倒置(DIP)、控制反轉(zhuǎn)(IOC)、 依賴注入(DI),都源于一個(gè)思想,一項(xiàng)技術(shù),思想就是面向接口編程,技術(shù)就是反射。
通常我們在編程的時(shí)候呢,類與類之間都有著這樣那樣的關(guān)系,沒有關(guān)系的類,也就說明它沒有存在的必要了;那么對于復(fù)雜的系統(tǒng)來講,類之間的關(guān)系也會(huì)變的更復(fù)雜,如果需求發(fā)生變化,那將是改死人的節(jié)奏,那么如何降低依賴關(guān)系,提高系統(tǒng)的擴(kuò)展性,就非常重要了,也就是我們經(jīng)常說的解耦。
依賴倒置
依賴倒置原則:
- 上層模塊不應(yīng)該依賴下層模塊,它們共同依賴于抽象
- 抽象不依賴于具象,具象依賴抽象
上層是使用者,下層是被使用者,如果下層發(fā)生變化那么上層也要進(jìn)行修改,那么該怎么辦呢,就是上層和下層共同依賴于一個(gè)抽象,那么抽象是穩(wěn)定的,上層也就不需要修改了。
控制反轉(zhuǎn)
通常我們在編程的時(shí)候,都是使用者需要什么對象就實(shí)例化一個(gè)對象,現(xiàn)在有這么一個(gè)場景,比如我們的系統(tǒng)之前用的是SqlServer,現(xiàn)在需要也支持MySql,那么業(yè)務(wù)邏輯層也需要改動(dòng)很多。
現(xiàn)在利用控制反轉(zhuǎn)我們可以將實(shí)例化對象交給IOC容器來實(shí)現(xiàn),這樣使用者就不需要改動(dòng)了,用一句話來總結(jié)就是:
使用者不再實(shí)例化被使用者對象,而交給IOC容器來實(shí)現(xiàn)
依賴注入
就是由IoC容器在運(yùn)行期間,動(dòng)態(tài)地將某種依賴關(guān)系注入到對象之中。
這些概念已經(jīng)有很多文章了,不了解的童鞋可以移步這里http://www.cnblogs.com/qqlin/archive/2012/10/09/2707075.html
Autofac(IOC容器)
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26