Otomatik Mühendis
AppFabric Üzerinde Cache Oluşturma ve Erişimi
Daha önceki yazıda AppFabric kurulumunu ve ayarlarını görmüştük. İşlemleri başarıyla gerçekleştirdiyseniz şu an çalışır vaziyette bir AppFabric sunucunuz olmalı. Sunucularımızı görebilmek için Caching Administration Windows PowerShell aracını Administator olarak çalıştırıyoruz ve aşağıdaki komutu giriyoruz.
Get-CacheHost
Eğer Powershell aracı açılırken hata aldıysanız. Daha önceki yazıda da bahsettiğimiz Remote Registry servisinin çalışmamasından dolayı hata vermiş olabilir. Bu servisi çalıştırmak için yine aşağıdaki komutu girebiliriz.
net start RemoteRegistry
Bu işlem sonrasında PowerShell aracını tekrar çalıştırmanız gerekir. Kısayol ayarlarından bakarsanız aslında modül ekleme komutu barından bir PowerShell kısayolu olduğunu görebilirsiniz. Sıklıkla PowerShell kullanan biriyseniz bu komutu buradan kopyalarak kullanabilirsiniz.
Cache sunucusu çalışmıyorsa (durumu “DOWN” ise) aşağıdaki komutla çalıştırabiliriz.
net start AppFabricCachingService
Çalışması biraz zaman alacaktır. Kısa bir süre bekledikten sonra tekrar get-cachehost komutuyla son durumunu görebiliriz.
Artık ayakta olan bu sunucu üzerinde yeni bir cache oluşturabiliriz. Aşağıdaki komut “appFabricCache” adında yeni bir cache oluşturacaktır. Bu ismi değiştirebilirsiniz.
New-Cache appFabricCache
Oluşturduğumuz cache bilgilerini aşağıdaki komut ile görüntüleyebiliriz.
get-cacheconfig appFabricCache
Şu ana kadar çalıştırdığımız komutların görüntüsü
Cache hakkında daha fazla bilgi alabilmek için kullanabileceğimiz komutlar;
get-cache
get-cachestatistics appFabricCache
Artık cache’imizi de oluşturduğumuza göre nasıl erişeceğimizi görelim.
Şu adreste Windows Server AppFabric Samples örnek uygulamaları indirebilirsiniz. “WindowsServerAppFabricSamples\WindowsServerAppFabricSamples\Samples\CS\Cache\CacheSampleWebApp” içerisindeki CacheSampleWebApp.sln‘yi açarsanız cache üzerinde ekleme, getirme ve güncelleme işlemlerini yapan hazır ASP.NET uygulamasını görebilirsiniz.
Derleme hatası alıyorsanız, Microsoft.ApplicationServer.Caching.Core ve .Client referanslarını kontrol ediniz. Bunlardan dolayı hata alıyorsanız, bunları sildikten sonra Program Files içerisinde ki AppFabric içerisinde dll’lerini bulup projeye ekleyebilirsiniz.
Başarılı bir şekilde derlenen projenin oluşturduğu sayfa görünümü şu şekilde olacaktır;
Proje içeriğindeki kodların açıklamaları;
CacheUtil sınıfı cache bağlantımızı gerçekleştiren GetCache() metodunu içermektedir.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using Microsoft.ApplicationServer.Caching;
using System.Collections.Generic;
/// <summary>
/// Cache aygıtı
/// </summary>
public class CacheUtil
{
private static DataCacheFactory _factory = null;
private static DataCache _cache = null;
public static DataCache GetCache()
{
if (_cache != null)
return _cache;
//-------------------------
// Cache istemcisinin ayarlanması
//-------------------------
//1 cache sunucusu için liste tanımlıyoruz
List<DataCacheServerEndpoint> servers = new List<DataCacheServerEndpoint>(1);
//Cache sunucusunun parametrelerini set ediyoruz
// Parameter 1 = host adı
// Parameter 2 = cache port no
servers.Add(new DataCacheServerEndpoint("localhost", 22233));
//Cache ayarları
DataCacheFactoryConfiguration configuration = new DataCacheFactoryConfiguration();
//Cache'in hostu set edilir
configuration.Servers = servers;
//Varsayılan cache ayarları set edilir
configuration.LocalCacheProperties = new DataCacheLocalCacheProperties();
//Web sayfasında önemli mesajların gösterilmesi kapatılır
DataCacheClientLogManager.ChangeLogLevel(System.Diagnostics.TraceLevel.Off);
//Ayarlar cache factory'e aktarılır
_factory = new DataCacheFactory(configuration);
//"appFabricCache" factory'e kayıt edilir
_cache = _factory.GetCache("appFabricCache");
return _cache;
}
}
Kendi oluşturduğum cache adını özellikle verdiğime dikkat ediniz. Burada kendi oluşturduğunuz cache adını yazabilirsiniz.
Cache’i yönetmek için aşağıdaki metodları kullanabilirsiniz;
1
2
3
4
5
6
7
8
//Ekleme
m_cache.Add(orderid, order);
//Getirme
Order order = (Order)m_cache.Get(orderid);
//Güncelleme
m_cache.Put(orderid, order);
Böylece kurmuş olduğumuz sunucuyu nasıl kullanabileceğimizi görmüş olduk. Bundan sonra yapılması gereken cache’e ekleme yapan bir servis yazmaktır. Her güncellemede de cache’i güncellemesi gerekecektir. Ondan sonra istediğimiz yerden bu sunucuya ulaşarak rahatlıkla ve hızla verileri çekebiliriz.
Yorumlarınızı okumaktan ve sorularınızı yanıtlamaktan mutluluk duyarım.