Hangi C # /. NET Bağımlılık Enjeksiyon çerçeveleri incelenmeye değer? Ve karmaşıklıkları ve hızları hakkında ne söyleyebilirsiniz?
Hangi C # /. NET Bağımlılık Enjeksiyon çerçeveleri incelenmeye değer? Ve karmaşıklıkları ve hızları hakkında ne söyleyebilirsiniz?
Yanıtlar:
edit (yazar tarafından değil): https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc adresinde kapsamlı bir IoC çerçevesi listesi bulunmaktadır :
Orijinal cevap aşağıdadır.
Burada biraz seçici olabileceğimi düşünüyorum ama DI (Bağımlılık Enjeksiyonu) 'nun bir programlama modeli olduğunu ve bir IoC (Kontrolün İnversiyonu) çerçevesi tarafından kolaylaştırıldığını, ancak gerektirmediğini belirtmek önemlidir. IoC çerçeveleri DI'yi çok daha kolay hale getirir ve DI'nin üzerinde ve üstünde başka avantajlar sağlar.
Olduğu söyleniyor, eminim sorduğunuz şey buydu. IoC Frameworks Hakkında; Ben kullanmayı kullanılan Spring.Net ve CastleWindsor çok ama arkasında gerçek ağrı sen yazma zorunda tüm bu sinir bozucu XML yapılandırma oldu! Onlar kullanıyoruz böylece hemen hemen tüm şimdi bu şekilde taşıyoruz StructureMap geçen yıl kadar ve kesinlikle yazılı jenerikleri ve kayıt kullanılarak akıcı yapılandırma taşındı beri, IoC kullanarak acım bariyer düşmüştür sıfırın altında! IoC yapılandırmamın derleme zamanında (çoğunlukla) kontrol edildiğini ve mutlak bir şeye sahip olduğumu bilmenin mutlak bir tekme var ve StructureMap ve hızı ile sevinçten başka bir şeyim olmadı. Diğerlerinin çalışma zamanında yavaş olduğunu söylemeyeceğim, ancak benim için kurulumu daha zor ve hayal kırıklığı genellikle günü kazandı.
Güncelleme
Ninject'i en son projemde kullanıyorum ve kullanmak mutlak bir zevkti. Kelimeler burada beni biraz başarısızlığa uğrattı, ama (İngiltere'de söylediğimiz gibi) bu çerçeve 'Köpekler'. Hızlı bir şekilde hazır ve çalışır hale gelmek istediğiniz yeşil alan projeleri için kesinlikle tavsiye ediyorum. İhtiyacım olan her şeyi Justin Etheredge'nin Ninject ekranlarından aldım . Mevcut kod içine retro-uydurma Ninject hiç bir sorun olduğunu göremiyorum, ama sonra aynı deneyimlerime StructureMap söylenebilir . Bu ikisi arasında ileriye dönük zor bir seçim olacak, ama durgunluktan daha çok rekabete girmeyi tercih ederim ve orada iyi bir miktar sağlıklı rekabet var.
Diğer IoC ekran görüntülerini Dimecasts'de de bulabilirsiniz .
Her birinin artıları ve eksileri olduğu için ne aradığınıza bağlıdır.
Spring.NET
Java dünyasından Bahar gelince en olgun. Spring, Web, Windows vb. Destekleyecek şekilde genişleten çok zengin bir çerçeve kitaplığı kümesine sahiptir.Castle Windsor
.NET platformunda en yaygın kullanılanlardan biridir ve en büyük ekosisteme sahiptir, son derece yapılandırılabilir / genişletilebilir, özel ömür yönetimi, AOP desteği, doğasında bulunan NHibernate desteğine sahiptir ve harika bir konteynerdir. Windsor, Monoray, Aktif Kayıt, vb. İçeren bir yığının bir parçasıdır. NHibernate, Windsor üzerine inşa edilir.Structure Map
dahili DSL sayesinde çok zengin ve ince taneli bir konfigürasyona sahiptir.Autofac
doğası gereği işlevsel programlama desteği ile yeni çağın bir IoC konteyneri. Ayrıca, yaşam boyu yönetimi konusunda diğerlerinden farklı bir yaklaşım gerektirir. Autofac hala çok yeni, ancak IoC ile mümkün olanın üstesinden geliyor.Ninject
Duydum daha az kemik ile daha az kemik daha fazla yaklaşım (duyulmamış duydum).Unity
: Microsoft'tan (p & p) destekleniyor. Birlik çok iyi bir performansa ve harika belgelere sahiptir. Ayrıca son derece yapılandırılabilir. Kale / Yapı Haritasının tüm çan ve ıslıklarına sahip değil.Özet olarak, gerçekten sizin için neyin önemli olduğuna bağlıdır. Hangisinin uyduğunu değerlendirme ve görme konusunda başkalarıyla aynı fikirdeyim. Güzel bir şey, sadece bir jöle sahip olmak yerine çörek güzel bir seçim var.
Autofac. https://github.com/autofac/Autofac Gerçekten hızlı ve oldukça iyi. İşte karşılaştırmalarla bir bağlantı (Ninject bir bellek sızıntısı sorununu düzelttikten sonra yapılır).
http://www.codinginstinct.com/2008/05/ioc-container-benchmark-rerevisted.html
Ninject harika. Gerçekten hızlı görünüyor, ama hiç karşılaştırma yapmadım. Yazar Nate, Ninject ve diğer DI çerçeveleri arasında bazı karşılaştırmalar yaptığını biliyorum ve Ninject'in hızını artırmak için daha fazla yol arıyor.
Saygı duyduğum birçok kişinin StructureMap ve CastleWindsor hakkında iyi şeyler söylediğini duydum. Bunlar, bence şu anda bakılacak en büyük üç.
Kullandığım Basit Enjektör :
Basit Enjektör, çözümlerinizi başarı çukuruna doğru yönlendirmek için en iyi uygulamaları kullanan kolay, esnek ve hızlı bağımlı bir enjeksiyon kütüphanesidir.
Ninject'i tavsiye edebilirim. İnanılmaz derecede hızlı ve kullanımı kolaydır, ancak yalnızca XML yapılandırmasına ihtiyacınız yoksa, Windsor kullanmalısınız.
Bir günün en iyi kısmını, en basit Spring.NET örneğinin çalışmasını sağlamak için başarılı olmadan mücadele ederek geçirdim. XML dosyasından derlememi nasıl bulacağımı asla anlayamadım. Öte yandan, yaklaşık 2 saat içinde, hem NUnit hem de MSTest ile test entegrasyonu da dahil olmak üzere Ninject'i çalıştırabildim.
Ben kullandım Spring.NET geçmişte ve onunla büyük bir başarı elde etti. Kullandığımız proje tek başına oldukça ağır olmasına rağmen, bununla ilgili önemli bir ek yük fark etmedim. Kurulumu elde etmek sadece belgeleri okumak için biraz zaman aldı .
C # ile ilgili en iyi şey, yıllar önce Java geliştiricileri tarafından dövülen bir yolu takip etmesidir. Bu nedenle, genellikle bu nitelikteki araçları ararken tavsiyem, sağlam Java yanıtını aramak ve henüz bir .NET uyarlaması olup olmadığını görmek.
Yani DI söz konusu olduğunda (ve orada çok fazla seçenek varsa, bu gerçekten bir zevk meselesidir) Spring.NET . Ayrıca, projelerin arkasındaki insanları araştırmak her zaman akıllıca olacaktır. Eric Sink'e saygı duyduğum için SourceGear ürünlerini (bunları kullanma dışında) kaynak kontrolü için öneren bir sorunum yok. Mark Pollack'in konuştuğunu gördüm ve ne diyebilirim ki, adam sadece anlıyor.
Sonunda, çok sayıda DI çerçevesi var ve en iyi bahis, bunlardan birkaçı ile bazı örnek projeler yapmak ve eğitimli bir seçim yapmak.
İyi şanslar!
Bence başlamak için iyi bir yer Ninject ile, yeni ve ince ayar bir sürü dikkate aldı ve gerçekten hızlı. Geliştirici, Nate'in gerçekten harika bir sitesi ve büyük desteği var.
Spring.Net oldukça sağlam, ancak belgelerin gözden geçirilmesi biraz zaman aldı. Autofac iyidir ve .Net 2.0 desteklenirken, derlemek için VS 2008'e ihtiyacınız vardır veya uygulamanızı oluşturmak için komut satırını kullanabilirsiniz.