zoukankan      html  css  js  c++  java
  • 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()是如此重要。
  • 相关阅读:
    Mac + Python3 安装scrapy
    Pyqt4+Eric6+python2.7.13(windows)
    js基础⑥
    python模块之os,sys
    Python模块之random
    Python模块之PIL
    js基础⑤
    js基础④
    js基础③
    centOS目录结构详细版
  • 原文地址:https://www.cnblogs.com/linybo/p/13292974.html
Copyright © 2011-2022 走看看