C# Programsal Olarak AppFabric Cache Host Bilgisine Erişmek

AppFabric Cache ile ilgilendiğinizde gördüğünüz ilk şeylerden birisi kurulumunu ve yapılandırmasını PowerShell üzerinden yapabilmenizdir. AppFabric Cache yönetimsel araçlarını kurarak erişebileceğiniz bu yapılandırma cmdlet’leri sayesinde gerek yerel gerekse de uzak sunucularınızda ihtiyacınız olan her türlü önbellek işlemini yapabilirsiniz.

Zamanla, yaptığınız bu yönetimsel işleri programsal olarak yapmak isteyebilirsiniz ya da iş mantığınız gereği önbellekte bulunacak verileri en baştan atmak isteyebilirsiniz. Her ne kadar bu gibi şeyleri yazacağınız PowerShell cmdlet’leri ile yapabiliyor olsanız da (burada ve burada örneklerini bulabileceğiniz gibi) bu işi programsal olarak yapmak en az benim kadar sizin de hoşunuza gidecektir.

İşe öncelikle PowerShell komutlarını çalıştırabileceğimiz ortamı hazırlamakla başlamalıyız. Bunun için, şimdiye kadar yapmadıysanız eğer, PowerShell v2 SDK’sını indirerek bilgisayarınıza kurmalısınız.

var initialSessionState = InitialSessionState.CreateDefault();
initialSessionState.ThrowOnRunspaceOpenError = true;

runspace = RunspaceFactory.CreateRunspace(initialSessionState);

runspace.Open();

Yukarıdaki kod bize PowerShell komutlarımızı çalıştırabileceğimiz bir ortam sağlayacaktır. Ardından komutlarımızı vereceğimiz bir PipeLine oluşturmalıyız;

var pipeline = runspace.CreatePipeline();

Nerdeyse programımız bitmek üzere, aynı yeni bir PowerShell komut satırında olduğu gibi önbellekte çalıştırılacak komutlarınızı pipeline’a geçmemiz gerekli;

pipeline.Commands.Add(new Command("Use-CacheCluster"));
pipeline.Commands.Add(new Command("Get-CacheHost"));

Get-CacheHost komutu bize önbellek sunucumuz hakkında bilgiler verecektir. Yukarıda ardıl olarak sıralamış olduğumuz komutlar pipeline üzerindeki invoke metodu ile çalıştırabiliriz;

var result = pipeline.Invoke();

Bu noktada result nesnesi, içerisinde sunucu hakkındaki adı, port numarası, servis adı, sürümü  ve durumu gibi bilgileri barındıran HostInfo (Microsoft.ApplicationServer.Caching.AdminApi.HostInfo) türündendir.

Son bir dokunuşla kodumuza önbellek komutlarını çalıştırmak için gerekli olan DistributedCacheAdministration modülünün yüklenmesinide ekleyecek olursak işimizi tamamlayabiliriz;

var initialSessionState = InitialSessionState.CreateDefault();
initialSessionState.ImportPSModule(new[] { "DistributedCacheAdministration" });
initialSessionState.ThrowOnRunspaceOpenError = true;

runspace = RunspaceFactory.CreateRunspace(initialSessionState);

runspace.Open();

var pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(new Command("Use-CacheCluster"));
pipeline.Commands.Add(new Command("Get-CacheHost"));
var result = pipeline.Invoke();

var hostInfo = (HostInfo)result[0].BaseObject;

Console.Out.WriteLine("Sunucu Adı        : " + hostInfo.HostName);
Console.Out.WriteLine("Sunucu Portu      : " + hostInfo.PortNo);
Console.Out.WriteLine("Sunucu Servis Adı : " + hostInfo.ServiceName);
Console.Out.WriteLine("Sunucu Durumu     : " + hostInfo.Status);
Console.Out.WriteLine("Sunucu Sürümü     : " + hostInfo.VersionInfo);

Yukarıdaki kodun çalışabilmesi için aşağıdaki assembly’lerin referanslarınızda olması gerekli;

  • Microsoft.ApplicationServer.Caching.Client
  • Microsoft.ApplicationServer.Caching.Core
  • Microsoft.ApplicationServer.Caching.Management
  • System.Management.Automation

 

Not 1 : 64-bit bir işletim sistemi üzerinde çalışıyorsanız. AppFabric Cache referanslarını eklenmesi ile ilgili makalemi okumanızı tavsiye ederim.

Not 2 : Yukarıdaki kodu Visual Studio 2010 ve .Net framework 4.0 ile derlemeye çalışıyorsanız hedef framework’ünüzün “.Net Framework 4 Client Profile” değil “.Net Framework 4” olduğunu kontrol edin.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir