Castle Windsor
- Lifecycle
- Lifestyles
- How componets are created loading
- How dependency are resolved 组件的依赖项如何解析
- Resolvers
- ComponentModel
- Inline Dependencies XML loading
- Release Policy loading
- XML Configuration
概念
- Handler
实现IHandler接口,Windsor使用handlers解析、释放组件。通过hanler访问ComponentModel。 - ComponentModel
ComponentModel is the model of the component in Windsor. 包含组件的所有信息(implementation type, configuration, interceptors, lifecycle steps 等) - Inversion Of Contorl 一个编程原则,消费者通过IOC Container获取对象。
IOC Container manage classes。IOC容器来管理类,包括类对象的创建,销毁,生命周期,配置,依赖。IOC容器将配置和依赖从程序中解耦
This dramatically reduces coupling in a system and, as a consequence, simplifies reuse and testability. 显著减少了系统的耦合,使得系统更简单,可复用,易测试。但是会需要管理小类。
Service is an abstract term 服务是抽象的
Componet is concreted and real 组件是具体真是的 - Controller Factory 作为Castle的注入点 ,它有两个作用
1.为每个请求创建Controller对象
2.释放Controller对象 - IControllerActivator 作为扩展点为什么不行?
它缺少Release Controller的方法。 - 日志facility
Log4netFactory:AbstractLoggerFactory:ILoggerFactory 工厂方法模式 - 控制反转、依赖注入
控制反转:原来应用程序控制具体对象实例的生成,现在由容器控制对象实例(关系和生命周期),控制权转移到容器
依赖:对外部对象的依赖
注入:容器动态得注入它需要的对象;Often people think that it is all about "injection", and broadcast that this is the primary purpose of IoC containers.In fact, "injection" is a consequence, a means to decouple, not the primary purpose. 实际上注入只是一个结果,一个解耦的方法,不是主要目的。
同一概念的不同角度的描述 - 为什么使用IOC
依赖注入框架负责对象的创建,生命周期,销毁,配置和依赖关系,减少系统耦合,提高了重用性和可测试性