IServiceCollection, uygulamanızda kullanılabilen hizmetlerin kümesini içerir. Kullanmak istediğiniz hizmetleri ve ömürlerini tanımlarsınız ve uygulama bunları sizin için başlatacak ve imha edecektir.
Geçici
Geçici ömür hizmetleri onlar istenen her oluşturulur:
4 farklı yaşamları vardır. Bu ömür, hafif, vatansız hizmet için en iyi şekilde çalışır.
Dürbünlü
Dürbünlü ömür boyu hizmetleri isteğe başına bir kez oluşturulur.
Singleton
Singleton ömür boyu hizmetleri onlar istenen ilk defa oluşturulan ve daha sonra takip eden her istek aynı örneği kullanacağız. Uygulamanız tekil davranış gerektiriyorsa, hizmet kabuğunun hizmet ömrünü yönetmesine izin vermek, tekil tasarım desenini uygulamak ve nesnenizin yaşam süresini sınıfta yönetmek yerine tavsiye edilir.
Örnek
Sen hizmetler konteyner doğrudan bir örneğini eklemeyi seçebilirsiniz. Bunu yaparsanız, bu örnek tüm sonraki istekler için kullanılacaktır (bu teknik Singleton kapsamlı bir örnek oluşturur). Örnek hizmetleri ve Singleton hizmetleri arasındaki önemli farklardan biri, Örnek hizmetinin ConfigureServices içinde oluşturulmuş olmasıdır; Singleton hizmeti ise ilk kez istenildiğinde yüklenir.
, okumak için zaman ayırın asp.net 5 resmi belgeler büyüktür: http://docs.asp.net/en/latest/fundamentals/dependency-injection.html
dokümantasyon bağımlılıkları ömürleri bağımlılık enjeksiyon hizmeti tarafından işlenir tam olarak nasıl söz ama eğer arama yaparsanız olmaz ServiceManager class
bir kapsam oluşturulduğunda, service scope factory w instanciated yeni bir hizmet kapsamını, döner, biraz daha spesifik olmak gerekirse: kodunda, sen ömür yöneten ServiceProvider sınıf bulacaksınız Bir servis sağlayıcı. Bağımlılık enjeksiyon servisinin bir servisi elden çıkarması gerektiğinde, service provider's dispose method numaralı telefonu arayarak service scope's dispose method numaralı telefonu arar.
Servis sağlayıcı nasıl çalışır? O, _resolvedServices ve _transientDisposables adında bir özellikteki tüm devredilebilir öğelerin adında bir hizmet kapsamına sahiptir.dispose() method of the service provider çağrıldığında, bu iki özelliğe sahip olduğu tüm öğelere iliştirir ve her nesne için dispose yöntemini çağırır. Burada tüm kaynak koduna sahip
: Dependency Injection source code
iService kaynak gibi temizlenecektir Ne yapacak C# ifadesini kullanarak – user334223
deyimini kullanarak o kendini kullandığı nesne için ömür boyu biraz kapsamını tanımlar yapar. Bağımlılık Enjeksiyon biraz farklıdır ve daha karmaşıktır çünkü uygulama sizin için birçok şeyi çözebilir. Örneğin, özel mülkte bir Havuza sahip olan bir hizmetiniz varsa, EF db içeriğinizi özel mülkiyette barındıran bir deponuz varsa, kurucuları gereksinimlerini karşılayacak, başlangıç sınıfınızda her hizmeti ekleyecek ve uygulama Sizin için bağımlılıklar. Her neyse, uygulama, karar verdiğiniz zaman, onlara verdiğiniz süreye bağlı olarak temizlenecektir. – AdrienTorris
Bu nedenle, her bir hizmete verdiğiniz yaşam süresinin seçimi çok önemlidir ve dikkate alınması gerekir. – AdrienTorris