[英]Why should I use IoC Container (Autofac, Ninject, Unity etc) for Dependency Injection in ASP.Net Applications?
这是一种理论问题。
我已经在Business层上使用带有Service(Facade)模式的Unity DY。 我很容易使用它,但......
每个小事务中都有明显的性能和内存开销。 我没有创建DataContext(像“sql-connection”那样读取),而是通过统一创建多个服务对象。
示例:简单操作“GetAllArticles”导致创建
无用:
有用的:
但是,如果HightLoadApplication和世界上数十亿人试图从我的超级网站上获取文章呢? 垃圾收集器和服务器的CPU温度怎么样?
所以:
我很乐意听到您的意见和经验,即使它不是灵丹妙药或“最佳实践”。
当我们编写代码时,我们的目标是SOLID设计原则 ,它使代码适应性变化。
为了实现前四个 - SOLI,我们想要注入依赖项。
有没有替代解决方案?
您可以手动(贫困人的依赖注入)或使用控制反转(IoC)容器(如Autofac,Ninject,Structure Map,Unity等)实现依赖注入(DI ) 。
在高负载应用的情况下我该怎么办
使用IoC容器进行DI从来都不是速度问题。
Mark Seemann说, “创建一个对象实例是.Net Framework非常快的事情。你的应用程序可能出现的任何性能瓶颈都会出现在其他地方,所以不要担心它。”
最重要的是我个人在每个ASP.Net MVC和Web API项目中使用IoC容器。 此外,我几乎看不到任何不使用IoC容器的开源MVC和Web API应用程序。
要了解DI的工作原理,请查看这篇精彩的文章: http : //www.martinfowler.com/articles/injection.html
我还建议阅读Mark Seemann撰写的本书的一半: http ://www.amazon.ca/Dependency-Injection-NET-Mark-Seemann/dp/1935182501/ref=sr_1_1?ie = UTF8&qid = 1454620933&sr = 8-1&keywords =标记+ SEEMANN
除非你试图设定一个绩效记录,否则我认为DI不会对绩效产生显着影响。 过去一年我们一直在使用SimpleInjector(它是那里最快的一个),每天点击几百万次,性能影响几乎无法测量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.