IoC ~ Verimli Autofac
Microsoft'un favori IoC konteyneri spring.net unity değil, Autofac olduğu şüphesizdir; çünkü verimliliği ve sadeliği nedeniyle, bu yüzden Microsoft liderliğindeki bahçe projelerinde de kullanılır
Autofac kullanımını gösterir.
Şimdi şöyle diyelim:
Bir sonraki derste, bahçe projeleri için özel projelerde Autofac'ın kullanımından bahsedeceğim.
Şimdi yaşam döngüsüne bakın
1、InstancePerDependency
Her bağımlılık veya çağrı için yeni bir benzersiz örnek oluşturun. Bu aynı zamanda örnekler oluşturmanın varsayılan yoludur.
Resmi dokümantasyon şöyle açıklar: Bileşeni, Resolve()'ye bağlı her bağımlı bileşen veya çağrı yeni, benzersiz bir örnek (varsayılan) alacak şekilde yapılandırın.
2、InstancePerLifetimeScope
Bir yaşam döngüsü alanında, her bağımlılık veya çağrı tek bir paylaşılan örnek oluşturur ve her farklı yaşam döngüsü alanı için örnek benzersizdir ve paylaşılmaz.
Resmi dokümantasyon şöyle açıklar: Bileşeni, tek bir ILifetimeScope içindeki her bağımlı bileşen veya Resolve()'ye yapılan çağrı aynı paylaşılan örnek alacak şekilde yapılandırın. Farklı yaşam süreli alanlardaki bağımlı bileşenler farklı örnekler alır.
3、InstancePerMatchingLifetimeScope
Tanımlanmış bir yaşam döngüsü alanında, her bağımlılık veya çağrı tek bir paylaşılan örnek oluşturur. Ana alandaki örnekler, tanımlanan yaşam döngüsü alanının alt kimlik alanında paylaşılabilir. Tüm miras hiyerarşisinde tanımlanmış bir yaşam döngüsü alanı bulunmazsa, bir istisna atılır: DependencyResolutionException.
Resmi dokümantasyon şöyle açıklar: Bileşeni, ILifetimeScope içindeki her bağımlı bileşen veya Resolve()'ye yapılan çağrının sağlanan etiketlerden herhangi birine sahip değer ile etiketlenmiş şekilde aynı paylaşılan örnek almasını sağlayacak şekilde yapılandırmak. Etiketlenmiş kapsamın çocukları olan ömür boyu kapsamlardaki bağımlı bileşenler, ebeveynin örneğini paylaşacaktır. Hiyerarşide uygun şekilde etiketlenmiş bir kapsam bulunamazsa, DependencyResolutionException atılır.
4、InstancePerOwned
Bir yaşam döngüsü alanında sahip olunan bir örnek tarafından oluşturulan bir örnekin yaşam döngüsünde, her bağımlı bileşen veya Resolve() yöntemine yapılan çağrı, tek bir paylaşılan örnek oluşturur ve çocuk yaşam döngüsü alanı, ana yaşam döngüsü alanındaki örnekleri paylaşır. Miras hiyerarşisinde uygun bir yaşam döngüsü alanı ve çocuk örnekleri bulunmazsa, bir istisna atılır: DependencyResolutionException.
Resmi belgeler şöyle açıklıyor:
Bileşeni, sahip olduğu bir örnek tarafından oluşturulan ILifetimeScope içindeki her bağımlı bileşen veya Resolve() çağrısının aynı paylaşılan örnek almasını sağlayacak şekilde yapılandırın. Yaşam boyu kapsamlardaki ve sahip olunan örnek kapsamının çocukları olan bağımlı bileşenler, ebeveynin örneğini paylaşır. Hiyerarşide uygun bir sahip olunan örnek kapsamı bulunamazsa DependencyResolutionException atılır.
5、SingleInstance
Her bir bileşene güvendiğinizde veya Resolve() yöntemini çağırdığınızda, aynı paylaşılan örnek elde edilir. Aslında, bu tek kişilik bir modeldir.
Resmi dokümantasyon şöyle açıklar: Bileşeni, Resolve()'ye bağlı her bağımlı bileşen veya çağrının aynı, paylaşılan örnek alması için yapılandırın.
6、InstancePerHttpRequest
Bir Http talebi bağlamında, bir bileşenin örneğini paylaşın. Sadece asp.net MVC geliştirme için mevcut.
|