Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 36245|Yanıt: 1

[.NET Core] ASP.NET Çekirdek bağımlılık enjeksiyonu, beraberinde gelen IOC konteynerini kullanır

[Bağlantıyı kopyala]
Yayınlandı 7.05.2019 13:55:10 | | | |
ASP.NET Çekirdek bağımlılık enjeksiyonu, beraberinde gelen IOC konteynerini kullanır
https://www.itsvse.com/thread-7562-1-1.html
(Kaynak: Architect_Programmer)

ASP.NET Core, IOC enjeksiyonunu uygulamak için Autofac kullanır
https://www.itsvse.com/thread-7563-1-1.html
(Kaynak: Architect_Programmer)

ASP.NET Core, AOP müdahalesini uygulamak için Autofac kullanır
https://www.itsvse.com/thread-7566-1-1.html
(Kaynak: Architect_Programmer)

Yeni ASP.NET Core'da, kod yazmak için çok sayıda bağımlılık enjeksiyonu kullanılır.

Örneğin, Startup sınıfımızda aşağıdakileri görebiliriz:

AddMvc AddDbContext, daha önce dizin turları için kullandığımız AddDirectoryBrowser'ı içerir:

Hepsi iyi hizmetler sunan çerçeveler ve doğrudan enjekte ederek kullanabiliriz.

Kontrolün Ters Çevirilmesi (IoC), nesne yönelimli programlamada bilgisayar kodları arasındaki bağlantıyı azaltmak için kullanılabilen bir tasarım ilkesidir. En yaygın yöntem Bağımlılık Enjeksiyonu (DI) olarak adlandırılır ve ayrıca "Bağımlılık Araştırması" adında bir yöntem de vardır. Ters çevirmeyi kontrol ederek, bir nesne oluşturulduğunda, sistemdeki tüm nesneleri kontrol eden harici bir varlık ona bağlı olduğu nesneye bir referans verir. Ayrıca bağımlılıkların nesneye enjekte edildiği de söylenebilir.

ioc'yi kullanmak için Startup sınıfının Microsoft.Extensions.DependencyInjection(ps'ye başvurması gerekiyor, ki bu zaten oldukça basit: Microsoft.. Genişlet... Bağımlılık enjeksiyonu - - ,)

Bir hizmetin yaşam döngüsünü enjekte etmek

Microsoft, kendi kendine enjekte edilen hizmetler için 3 yaşam döngüsü sağlar.

Geçici

Her istendiğinde oluşturulan anlık bir yaşam döngüsü hizmeti. Bu yaşam döngüsü, en çok hafif ve devletsiz hizmetler için uygundur.

Kapsam

Aynı kapsamda, hizmet istek başına yalnızca bir kez oluşturulur.

Singleton (Sadece)

Küresel sadece bir kez oluşturulur, ilk istendiğinde ve sonra her zaman kullanılır.

Bu üç yaşam döngüsünü nasıl kullanıyorsunuz? Enjeksiyon yaparken doğrudan farklı yöntemler kullanabiliriz, kod şöyledir:


Bu üç yaşam döngüsünün belirli neslini test edelim

Arayüzleri uygulamak için farklı isimlere ve 3 farklı sınıfa sahip üç arayüz yazıyoruz, aşağıdaki gibi:

Her uygulama sınıfının yapıcısında, sınıfın yapıcıyı yeniden çalıştırıp çalıştırmadığını belirlememize olanak tanıyan yeni bir GUID üretiyoruz.

Kontrollere servisler enjekte et

Enjeksiyonun genellikle üç yolu vardır: yapıcı enjeksiyon, yöntem enjeksiyonu ve nitelik enjeksiyonu. Microsoft'un kendi IOC konteyneri varsayılan olarak üretici enjeksiyonu kullanır (Özellik enjeksiyonu desteklenmiyor, ancak üçüncü taraf bir konteyner değişimiyle de mümkündür)

Sayfa kodu görüntüle:

Projeyi çalıştırın ve aşağıda gösterildiği gibi iki farklı tarayıcıdan erişin:



Anlık yaşam döngüsünde iki kez üretilen GUID'lerin tutarsız olduğunu ve bu da nesnenin aynı olmadığını gösteriyor.

Ancak, kapsam yaşam döngüsü aynıdır, çünkü aynı kapsamda, aynı tarayıcıda iki kez kullanılan hizmetin GUID'si aynıdır ve bu da aynı nesnenin kullanıldığını gösterir.

Singleton durumunda, iki farklı tarayıcı her zaman aynı GUID'ye erişir ve bu da aynı nesnenin çağrıldığını gösterir.

(Son)






Önceki:.NET Core Entity veritabanlarını bağlamak için Entity Framework Core'u kullanır
Önümüzdeki:ASP.NET Core, IOC enjeksiyonunu uygulamak için Autofac kullanır
 Ev sahibi| Yayınlandı 9.03.2022 11:00:35 |
ASP.NET Core'un yerleşik DI konteynerlerindeki hizmetleri değiştirin

Kod:





Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com