İlginizi Çekebilir
MVVM Nedir?
  1. Ana Sayfa
  2. ASP.Net
  3. ASP.NET Core MVC State Management Bölüm-5

ASP.NET Core MVC State Management Bölüm-5

072920_1339_ASPNETCoreM1.jpg

Bir önceki yazımın devamı olan bu bölüm içerisinde, sizlere Cache nedir ve kullanımı hakkında bilgiler veriyor olacağım.Önbellekleme, verileri depolamanın en kolay ve etkili yoludur. Uygulamada önbelleğe(Cache) alınan verilerin ömrünü kontrol edebilir ve belirli koşullarda yenilenmesini sağlayabilirsiniz.Önbellekleme yani Caching, nadiren değişen ve oluşturulması pahalı yani uzun süren işlemler gibi durumlarda daha hızlı sonuç alma ve az kaynak kullanarak işleme devam etmek için kullandığımız yöntemdir.

Not : Uygulamalarınızı kesinlikle, önbelleğe alınmış verilere bağlı olmayacak şekilde tasarlamanız ve uygulamayı mutlaka test etmeniz gerekir.

Bu bölüm içerisinde Cache mekanizmasını farklı bölümler olarak inceleyeceğiz bunlar;

  • Cache in-memory
  • Distributed caching
  • Response Caching
  • ObjectPool

İlk bölüm olarak, MemoryCache bölümüne bakıyor olacağız.

MemoryCache, sunucu(nun) belleklerinde belirli bir süre için, veri saklama işlemidir. Verileri bellek üzerinde saklarken belirli kurallar belirtiriz. Bu değerler sayesinde ilgili veri bellek üzerinde ne kadar duracak, hangi anahtar kelime ile saklanacak gibi belirli değerler vererek verileri tutma işlemi gerkeçleştirilir.

Cache ayarlarını yaparken kullanabileceğimiz seçenekler aşşağıdaki gibidir.

  • public : Yanıt, önbelleğe alınabileceğini gösterir
  • private : Yanıt, paylaşılan bir önbellek tarafından saklanmamalıdır. Özel bir önbellek yanıtı depolayabilir ve yeniden kullanabilir.
  • max-age : İstemci, yaşı belirtilen saniyeden fazla olan bir yanıtı kabul etmez. Örnekler: max-age=120 (120 saniye), max-age=2592000(1 ay)
  • no-cache : Kaynak sunucu istemci için yanıtı yeniden oluşturur ve ara katman yazılımı önbelleğinde depolanan yanıtı güncelleştirir.
  • no-store : Önbellek isteği depolamamalıdır.

Örnek uygulama için aşağıda yer alan komutları gerçekleştiriniz ve projeyi oluşturunuz.

Projenizi visualstudio kullanarak açabilirsiniz. Makale boyunca tüm örnekleri CLI kullanarak visualstudio üzerinden anlatıyor olacağım..

Öncelikle yeni bir command prompt (mac kullananlar için terminal) açınız.

Sırası ile komutlarımız,

  1. cd Desktop => ilgili dizinimizi masaüstü olarak ayarlıyalım.
  2. mkdir StateManagement => StatManagement adında bir klasör oluşturalım
  3. cd StateManagement => dizin olarak, oluşturduğumuz klasörü belirleyelim
  4. dotnet new mvc -n MemoryCacheApp -f netcoreapp3.1 => dotnet cli komutlarını kullanarak 3.1 versiyonu ile yeni bir mvc projesi oluşturuyoruz.
  5. cd MemoryCacheApp => dizinimizi proje ana dizini olarak belirliyoruz.
  6. code . => code(boşluk).(nokta) diyerek ’u proje dizininde açıyoruz.

Projemizi açtıktan sonra, ana dizin içerisinde yer alan Startup.cs class’ını açıp ConfigurationServices metodunu aşşağıdaki gibi düzenleyelim.

Yukarıdaki işlemi bitirdikten sonra, HomeController içerisine gelelim ve global alanda sabit kullanacağımız anahtar değerlerimizi oluşturup, IMemoryCache nesnemizi inject edelim.

HomeController içerisini aşşağıdaki gibi düzenleyiniz.

Yukarıda cache işlemi süresince kullanacağımız sadece okunabilir bir değişken tanımladık ve içerisine anahtar kelimemizi ekledik. Cache kullanabilmek için, Constructor içerisinde inject ederek Controller içerisine dahil ettik. Şimdi ilk örnek için geriye JsonResult dönen bir action ekleyelim.

Controller içerisindeki Action’I yukarıdaki gibi düzenledikten sonra, CommandPrompt’a gelerek ana dizin içerisinde dotnet watch run komutunu çalıştırıp uygulamamızı ayağa kaldıralım.

Browser’a gelerek http://localhost:5000/home/getdate url’e gelerek ekran çıktısınız görelim. Yukarıdaki işlemde Cache’in ne kadar yaşayacağını belirtmedik uygulama çalıştığı sürece cache devam edecektir. Eğer Cache’in bir ömrü olacaksa Option belirtmemiz gerekmektedir.

Tanımladığımız Cache’in hangi durumlarda nasıl bozulacağını veya ne kadar yaşayacağını belirlemek için 2 farklı yöntem kullanıyoruz

  1. SetAbsoluteExpiration, Kesinlik belirtir. Verilen süre içerisinde cache bozulup gelen bir sonraki istekte yeniden cache devreye girecektir.
  • SetSlidingExpiration, Kullanıcı verilen süre boyunca istekte bulunmazsa, cache otomatik yenilenir. Süre zarfı boyunca kullanıcı istekte bulunmaya devam ederse, her istekte yenilenir (öteleme işlemi uygular) ve datalar cache’den gelmeye devam eder.

 

Yukarıda belirttiğimiz 2 başlığı daha detaylı incelemek için örneklendirelim. İlk olarak, SetAbsoluteExpiration durumunu inceliyor olalım. AbsoluteExpiration belirlenen zamana kadar kullanıcıya aynı veriyi teslim eder. Kullanıcıların ne sıklıkla istekte bulunduklarının bir önemi yoktur. Bu kullanım şeklinde dikkat etmemiz gereken kesin zaman dilimi kullanmamak. Bunun yerine TimeSpan nesnesinden faydalanarak süre belirtmek en sağlıklı çalışma şekli olacaktır.

Controller içerisindeki Action’I yukarıdaki gibi düzenledikten sonra, CommandPrompt’a gelerek ana dizin içerisinde dotnet watch run komutunu çalıştırıp uygulamamızı ayağa kaldıralım.

Browser’a gelerek http://localhost:5000/home/setabsoluteexpiration url’e gelerek ekran çıktısınız görelim.

Bu işlemin sonunda bir sonraki örneğimiz olan SetSlidingExpression bölümünü inceleyelim, bu yapıda uygulama ötelemeli çalışmaktadır. Belirtilen süre zarfında eğer bir istekte bulunulmazsa, cache bozulacaktır ve bir sonraki istekte yeniden cache devreye girecektir. Eğer süre zarfından yeni bir istek gelirse süre tekrar başa dönecektir. 

Controller içerisindeki Action’I yukarıdaki gibi düzenledikten sonra, CommandPrompt’a gelerek ana dizin içerisinde dotnet watch run komutunu çalıştırıp uygulamamızı ayağa kaldıralım.

Browser’a gelerek http://localhost:5000/home/setslidingexpiration url’e gelerek ekran çıktısınız görelim.

Bu makalede sizlere MemoryCache kullanımı ile ilgili temel kullanımı örneklemeye çalıştım bir sonraki yazımda görüşmek üzere.

 

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar        

www.mshowto.org

TAGs:ASP.NET Core,MVC State Management

Yorum Yap

Yazar Hakkında

1982 Ankara doğumluyum, Lise ve Üniversite Eğitimini Açık Öğretim üzerinden tamamladım ve 2009 yılında BilgeAdam ile yazılım hayatına atıldım Öğrenci olarak başladığım kurumda 2009 yılından bu yana farklı görevlerde çalıştım. Şuan Bilgeadam beşiktaş şubesinde aktif olarak danışmanlık ve yazılım eğitmenliği yapmaktayım. Yeni teknolojileri araştırıp öğrenmeyi seven biriyim. İşim gereği hem geliştirdiğim projeler olsun eğitim verdiğim öğrenciler olsun aktif olarak kendimi güncel tutmak işimin gereği ve bu bildiklerimi paylaşmaktan mutluluk duyuyorum.

Yorum Yap