appsettings.json Dosyası Nedir? Ne İse Yarar?

özelleştirilmiş bir isim, farklı bir json eklemek istersek yukarıdaki gibi bir yol izleriz. appsettings mimaride arka planda özel tanımlanmış bir isim olduğundan dolayı otomatik bulunup eklenmekte ve uygulama ayağa kaldırılırken ilgili konfigürasyon dosyası içindeki bütün komutlar, bütün konfigürasyonlar önbelleğe yüklenmektedir. Ordan da uygulama davranışını belirlemektedir.

Herhangi bir controller da construtor ını oluşturuyorum. IConfiguration configuration; dependency injection yaptık. IConfiguration nesnesini kullanacağım bu nesneyi new lemek istemiyorum, sen bunu bu bağımlılığı dışarıdan enjekte et diyoruz. Nereden ediyor? IoC deki provider dan ilgili nesneyi getiriyor. Gelen bu nesne buradaki parametre tarafından yakalanıyor. Bu işlem neticesinde ben bunu bu uygulamada kullanabilmek istediğim yere taşıyabilmek için global tanımlamış olduğum readonly referans sayesinde işaretleyip readonly IConfiguration _configuration;  her yerde global olarak kullanabilmekteyim.

_configuration üzerinden appsettings i okumak istiyorsam yapmamız gereken iki işlem var 1. işlem Indexer ile Veri Okuma Nasıl Yapılır?

IConfiguration appsettings.json içerisindeki dataları otomatik çeken ve bize sunan bir nesne bir servis. Dolayısıyla ben bunun üzerinde indexer ile vermiş olduğum key e karşılık gelen değeri elde edebilmekteyim. 

Uygulama ayağa kalkma sürecinde işte ilk adımda program.cs tetiklenirken appsettings ya da appsettings gibi diğer json formatındaki bütün konfigürasyon dosyaları tanımlananların hepsi uygulama ayağa kalkarken öncelikle içerisindeki konfigürasyonlar uygulamaya çekiliyor ve önbellekte (inmemory) tutuluyor. Hangi sunucuda bu uygulamayı ayağa kaldırıyorsanız o sunucunun inmemory sinde ilgili değerler depolanacaktır. Çalışma zamanında configuration gidip dosyadan okumuyor inmemory den okuyor.

_configuration.GetSection   dediğimiz yapılanma sayesinde vermiş olduğumuz key e karşılık olan değeri bir section olarak bir alan olarak elde edebiliyoruz.

Get Metoduyla Verileri Uygun Nesneyle Eşleştirme 

_configuration.Get() diye bir fonksiyonum var. 

Sen bana bir Type ver, vermiş olduğun type a karşılık ben sana ilgili appsettings deki nesneyi döndüreyim.

Appsettings de senin bir nesnen var örneğin Person nesnen, burdaki kalıba uygun bir entity oluştur, viewmodel oluştur ya da dto nesnesi oluştur neyse artık bunu taşıyabilecek bir temsilci oluştur. Bu nesneyi bana ver ben sana ilgili ayarları geri döndüreyim diyor.

typeof olarak ilgili Person nesnesini sen bana ver, bu nesnenin karşılığı olan datayı ben sana döndüreyim. (GetSection ile Person daki bu değerleri typeof(Person) nesnesi olarak ver diyoruz.)

: Operatörü , ilgili sectionlarımız arasında atlamamızı sağlayan, bir section içerisindeki farklı alanı temsil etmemizi sağlayan operatördür.

Enviroment, Asp.net Core uygulamasının runtime daki davranışını belirleyen değişkenleri kapsayan bir konu. Enviroment variable (değişkenleri) dediğimiz yapılanma sayesinde biz Asp.Net Core mimarisinde geliştirdiğimiz çalışma ortamını belirleyebilmekteyiz ve ortamdan ortama göre farklı değişkenler, parametreler devreye sokabilmekteyiz.

Uygulama Development seviyesinde yani geliştirme sürecinde

Uygulama Production seviyesinde yani yayınlanmış, yayınlanan ortam

Uygulama Staging seviyesinde yani test ortamında, ikisinin ortasıda. Bunların haricinde biz de custom belirleyebiliriz.

appsettings.json tüm ortamlarda; development, production, staging vs. ortak erişelebilir konfigürasyonları barındırırken , appsettings.Development.json sadece development ortamında konfigürasyonlara erişmenizi sağlar. 

appsettings.Production.json , Eğer ki uygulamayı publish ettik, yayınlanan ortam production ortamı olacağından dolayı sadece production da erişilmesini istediğiniz konfigürasyonlar burada tanımlanacaktır.

Bu şekilde konfigürasyonları parçaladığınızda bir ortamdan diğerindekine erişim yapamazsınız. Ama tüm ortamlarda erişebileceğiniz konfigürasyonlar appsettings.json içerisine tanımlanır. 

İnternet sitesi https://abdullahsarihan.com
Yazı oluşturuldu 108

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.