【发布时间】:2008-11-19 19:40:07
【问题描述】:
.NET 领域的很多人都选择了 Castle Windsor 并在他们的项目中实现它,在过去的一年里,我一直在努力弄清楚为什么 IoC 容器似乎被视为一般的“最佳实践” “?我已经阅读了很多关于温莎之类的原因的摘要和简要解释,但每一个都确实是抽象的,对于我接触过的大多数项目来说似乎并不实用,但最近我一直遇到很多使用 Windsor 的项目,我不明白为什么。
C#/.NET 固有地支持基于接口的编码、抽象对象、委托和事件。可以直接从核心语言实现 IoC,并使用反射等实例化实现已知接口的未知实例,而无需求助于 IoC 容器库。
在应用 YAGNI/AYGNI(你会需要它吗?)时,我觉得温莎被过度使用了。我当然可以看到 IoC 容器的好处,但我认为这些好处是以额外的依赖项和元数据为代价的(核心代码中调用的 IoC 容器特定属性和方法、分散在各处的 .config 文件、app.config/web.config填充了绑定标签,使 .config 文件更难编辑等)所以我试图找出权衡。
也就是说,我接受这样的可能性,即我将这些观察/陈述中的所有都归咎于无知,因为我从未大量参与过使用 Windsor 或其他 IoC 容器的项目图书馆。我真正需要的是让某人演示一个使用 IoC 容器库的“平均”或“典型”项目,以及为什么这应该是“最佳实践”,而在我看来,这会让原本干净的项目变得混乱包含依赖项和元数据。
如果有人知道任何可以填满我的博客文章、文章或书籍,那就太好了。
(我不是为了争论而争论,而是因为我真的很想接受关于我是否应该在 IoC 容器方面自学的教育)。
【问题讨论】:
标签: castle-windsor ioc-container