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.
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.
Benzer haberler
- .NET ile SSH, Docker ve Dosya Yönetimi Bir Arada: TermForge İncelemesiHabr C# (ru)2 gün önce
- Odoo'ya lead gönderirken kaybetmemek: ASP.NET Core'da transactional outboxDEV Community: #aspnetcore2 gün önce
- Vertical Slice mı Clean Architecture mı? .NET 10'da kullanılan hibrit yapıMukesh Murugan (codewithmukesh)4 gün önce