我到处寻找有关Windsor或Spring.net的信息,它总是参考MVC。试图为Web表单项目或wcf实现它有什么意义吗?
答案 0 :(得分:5)
IoC在任何类型的项目中同样有用。它解决的问题(可测试性等......等等)并不特定于任何特定类型的项目。
答案 1 :(得分:5)
事实上,由于处理请求的方式,ASP.NET MVC Web应用程序的性质非常适合IoC。您可以说Web应用程序的启动请求 - 响应生命周期以及ASP.NET MVC处理这些事情的方式直接对应于KrzysztofKoźmic所称的The Three Calls Pattern以及Mark Seemann所称的Register Resolve Release pattern。
然而,即使在不直接适用于它的应用程序中,也有一些方法可以遵循这种模式 - 例如在WinForms应用程序,Windows服务等。
< shameless_plug>
我写了a blog post关于Castle Windsor的TypedFactoryFacility,这是Windsor的一个功能,允许在没有你的代码知道的情况下调用容器,真正的IoC风格。
类型化的工厂设施使Windsor能够动态实现接口,例如, ISomeFactory
,将调用委托给下面的容器Resolve
方法,从而允许您的代码仅依赖于ISomeFactory
接口。
< / shameless_plug>
答案 2 :(得分:3)
控制反转(a.k.a.依赖注入或第三方连接)只是启用松散耦合的一种方法。
据我所知,只有两种方法可以实现松散耦合:IoC或服务位置(which is an anti-pattern)。如果要在任何应用程序中启用松散耦合,IoC是这样做的方法。
松耦合带来很多好处:
它与任何特定的架构,模式或应用类型无关。
答案 3 :(得分:0)
是的,如果架构调用/允许它。它取决于整个应用程序的设计,而不仅仅是使用的UI框架。
例如,如果WebForms项目将所有内容抛入代码隐藏中并直接从Page_Load等访问数据库,那么使用IoC(或任何类型的重新分解)将会很困难。
但是,如果WebForms是访问服务或与访问服务或使用存储库等的模型交互,那么这些后端对象可以注入某种服务定位器,例如IoC框架。连接到WebForms类的构造函数可能并不容易(甚至可能,我认为我从未尝试过),但您仍然可以根据需要解决类中的依赖关系(例如,后期绑定的类属性) )。
答案 4 :(得分:0)
IoC与MVC完全无关。它们是两种完全不同的设计模式。
您是否在应用程序中使用IoC取决于您的设计。 YAGNI?然后忘记它。类之间有很多依赖性使测试变得困难?立即注册。
IoC框架并不关心您用于实现应用程序的设计模式。所以在你的aspx文件中有MVC或10k行代码,这并不重要。