Castle Windsor介紹


介紹

  1. Castle最早在2003年誕生於Apache Avalon項目,目的是為了創建一個IOC(控制反轉)框架。發展到現在已經有四個組件了,分別是ActiveRecord(ORM組件),Windsor(IOC組件),DynamicProxy(動態代理組件),MonoRail(Web MVC組件)。
  2. 中文文檔地址
  3. GitHub地址

Ioc和Ioc容器

  1. Inversion of Control控制反轉,即開發者使用api和調用api代碼相反。
  2. IoC容器使用上面所述的(簡言之)原則管理類。包括,它們的創建,銷毀,生命期,配置和依賴關系。這樣類並不需要獲取並配置它們所依賴的類。這在系統中極大地減少了耦合,並且簡化了重用和可測試性。

三要素

  1. 服務
  2. 組件
  3. 依賴

組件如何創建

1.組成

  • 容器注冊組件后,定位處理器

檢查所請求的組件是否被注冊 容器中,就是我們平時有沒有把實現類和接口注冊到容器中!
沒找到的話會嘗試延時注冊,要是還是沒有找到,拋出異常,ComponentNotFoundException

  • 處理器invoke dynamic parameters
  • 生命周期方式管理

控制組件激活器

  • 組件激活

內部activator動態創建實例ComponentCreated,返回到生命周期管理器中

調用模式

Windsor 是 IoC 容器,也就是你一般不需要調用它,你的應用應該無視或不知道它的存在。與容器的交互(即調用容器的任何方法)應該限制在應用生命期的三個地方:

在應用啟動的時候 (.exe中的Program.Main方法,web應用中的 Application_Start等等)創建容器,並調用容器的 Install 方法一次。注意你應該只有一個容器的實例。
只有一個地方(在 Main, ControllerFactory 等中) 可以調用 Resolve。If you need to callback to the container to pull some additional dependencies later on, use typed factories。
在應用結束的時候(web應用中的Application_End等等),調用容器的 Dispose 方法,讓容器清理和釋放所有組件。

  1. Install    --創建並配置安裝器,以便可以在容器中注冊組件。
  2. Resolve --通過類型或名稱來解析服務。
  3. Dispose  --容器管理組件的整個生命期,在關閉應用之前需要關閉容器,關閉容器之前會停用它管理的所有組件(比如回收它們)。這就是為什么在關閉應用之前調用container.Dispose()是如此重要。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM