IoC/AOP 這些開發範式為什麼在 .NET 平台上沒有被廣泛採用?
01-13
http://sping.net 為什麼沒有像java里的spring框架一樣被廣泛使用,在java招聘中一般都有要求精通spring.而shh2一段時間內似乎成功j2ee開發的必備框架組合。
或者說Ioc/AOP這些開發範式對於.net項目中開發為什麼沒有被廣泛採用
我對Java也不太了解,說的不對的地方請指正。
--
Java中的SSH,都有相應的微軟技術。Struts:從http://Asp.net MVC 到現在的 http://Asp.net MVC5,基本上每年都在更新。Spring:這個容後詳談。Hibernate:在EntityFramework出來之前NHibernate,是企業級開發的必備。Entity Framework現在已經發展到了6.1版本,由於其穩定性和易用性,加上Linq的支持,已經取代NHibernate成為企業級開發的首選。
--針對Spring,在Java項目中最主要的作用無非就是一種控制反轉容器(IoC Container),微軟的企業最佳實踐庫(Microsoft Enterprise Library)中用的Unity,代表了微軟推薦的技術。除了Unity和Sprint.Net之外,還有很多易用好用的IoC/DI Container可用。如:Castle WindsorStructureMapAutofac
Ninject等等,詳見List of .NET Dependency Injection Containers (IOC)。每一個稍大的開源.net項目中,你總是能看到它們中的一個甚至多個的身影。BTW,我個人比較喜歡Autofac。所以http://Spring.net應用不廣泛,並不代表SSH技術在微軟技術中缺少足以與之媲美的框架,相反,微軟技術中的Spring更加的百花齊放。IOC .NET也是有支持的,Autofac 就不錯,性能也好,微軟自己也有開源的 EnterpriseLibrary,EnterpriseLibrary 里的 Unity 就是專門為依賴注入而提供的。
大部分做Java的人對IOC DI的理解估計也不會太深,因為能有的選擇真不是太多,不是為了需要這項技術,而是Java告訴你應該這麼做。
.NET有IOC的實現,比如Unity,Autoafc等等,但是肯定不如Java用的那麼多 ,不是因為Java 多強,是因為Java 基本就能那麼用,所以說Java 有一種別人很牛的能力就是能把小中型項目寫成大型項目也就是這個由來。不是微軟官方出的Framework在.NET只有極少數能被廣泛接受。一般開源的被使用的都是Library。另一方面是http://Spring.NET開發並不活躍,功能什麼的嚴重落後Java版。然後就惡性循環了
spring中ioc和aop兩個都應是核心的內容吧
推薦閱讀:
※C# 是使用引用計數來發現垃圾對象的嗎?
※反編譯DLL問題?
※C++與C++/CLI的運行速度相比哪個快? C++/CLI和C#的運行速度一樣快?