Veri

ASP.NET Core'da MongoClient: ömür ve kapanış sahipliği

Makale, ASP.NET Core'da MongoClient'ı singleton olarak kaydetmeyi ve scoped servislerin bu istemciyi nasıl ödünç aldığını anlatıyor. Container dispose işleminin driver cluster'ını kapatmadığını ve kullanılan driver sürümünün önemli olduğunu gösteriyor. MongoDB kullanan web uygulamaları için kapanış davranışını doğru kurmaya yardımcı olur.

Yayın tarihi
Okuma süresi
11 dk okuma
agent çalıştırması #10
agent çalıştırması #10
Orijinale git devleader.ca

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • MongoClient'ı DI'da singleton olarak kaydedin; istek başına yeni istemci oluşturmayın.
  • Bağlantı bilgisini Mongo:ConnectionString gibi yapılandırmadan okuyun ve eksikse başlangıçta hata verin; sessiz localhost varsayılanı kullanmayın.
  • İstek servisleri (scoped) istemciyi ödünç alsın; istek durumunu singleton client'ta tutmayın.
  • Container dispose etmek cluster'ı kapatmaz; ClusterRegistry.UnregisterAndDisposeCluster yalnızca sahipliği kanıtladığınızda kullanılmalı.
  • GetDatabase ve GetCollection bağlantı kontrolü değildir; gerçek doğrulama için bir sunucu işlemi çalıştırın.
  • Örnek kodları driver 3.12.0 ve güncel bağlantı dokümantasyonuyla doğrulayın.

Makale, bir ASP.NET Core uygulamasının MongoClient'ı ne kadar süre tutması gerektiğini ve arkasındaki kaynakların kimin sorumluluğunda olduğunu ele alıyor. Singleton kaydı istemci yeniden kullanımını sağlar, ancak driver'ın cluster altyapısı paylaşılabildiğinden kapanış davranışını tek başına açıklamaz. Yazar, bağlantı bilgisinin yapılandırmadan açıkça okunmasını, eksikse başlangıçta hata verilmesini ve istek kapsamlı servislerin singleton olmak yerine paylaşılan istemciyi ödünç almasını öneriyor.

Makalenin asıl kısmı dispose davranışı. MongoClient'ı dispose etmek cluster'ı ve altındaki bağlantıları kapatmıyor; bunun için driver'ın ClusterRegistry.UnregisterAndDisposeCluster yöntemi gerekiyor ve bu yöntem, cluster'ı paylaşan başka istemcileri etkileyebilir. Database veya collection handle almak bağlantı doğrulaması sayılmaz; bunu yalnızca sunucu işlemi kanıtlar. Örnekler çalıştırılmamış ve driver 3.12.0 sürümünü hedefliyor, bu yüzden kendi paket sürümünüzle doğrulayın.

Gerçek dünyada kullanımı

  • Birden fazla endpoint'in aynı MongoDB veritabanına eriştiği bir ASP.NET Core Minimal API.
  • Her istekte kullanıcıya özel veri okuyan, ama paylaşılan bir MongoClient kullanması gereken scoped repository servisleri.
  • Uygulama kapanırken bağlantıların düzgün kapanmasının önemli olduğu, arka planda çalışan worker servisleri.

Neden önemli

MongoClient'ın yaşam süresini ve kapanış sorumluluğunu ayrı düşünmek, yanlış dispose koduyla paylaşılan cluster'ı başka bir istemci için bozmanızı önler. Bağlantı sağlığını ise yalnızca gerçek bir sunucu işlemiyle doğrulayabilirsiniz.

Bu özet, Nick Cosentino (Dev Leader) üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü