AppFabric Cache hakkında yazdığım önceki makalelerden gerek ne olduğu gerekse de yapısının nasıl olduğu hakkında detaylı bilgiler edindiğinizi umuyorum. Bu bilgilerden sonra eğer sizde bana benziyorsanız artık kodlamaya geçmek için sabırsızlanıyorsunuzdur; fakat kodlama aşamasına geçmeden önce takip etmeniz gereken bir kaç adım bulunmakta. Bu yazımda bu adımların neler olduğunu anlatmaya çalışacağım.
Makalemin içerisinde anlattığım komutları Windows PowerShell üzerinde çalıştırabilmeniz için öncelikle "Cache Administration" özelliğinin kurulu olması gerekli. Eğer AppFabric kurulumu sırasında bu bileşeni yüklemediyseniz üzülmeyin, "Add or Remove Features" bölümünden (Başlat menüsü -> Windows Server AppFabric -> Add or Remove Features) bu özelliği ekleyebilirsiniz.
Öncelikle AppFabric Cache öğrenirken denemelerinizi gerçekleştireceğiniz bir önbellek oluşturmalısınız. Bunun için bir Windows PowerShell komut satırı açarak PowerShell oturumunuz süresince çalıştıracağınız önbellek komutlarının hedefi olacak önbellek kümesini belirtmeniz gerekli.
Use-CacheCluster
Bu adımdan önce dikkat etmeniz gereken bir kaç noktayı özellikle not düşmem gerekir; bazı önbellek komutları ancak sistem yöneticisi yetkileri ile çalışmaktadır. Bu sebeple Windows PowerShell oturumunu sistem yöneticisi olarak başlatmanız önemli. İkinci olarak ise (yukarıdaki komutu yazımın devamını okumadan çalıştırdıysanız zaten göreceğiniz gibi) gerekli yönetim modülünü yüklenmeniz gerekli;
Import-Module DistributedCacheAdministration
Eğer DistributedCacheAdministration modülünü yüklemeden Use-CacheCluster komutunu çalıştırdıysanız aşağıdaki görüldüğü gibi “The term 'Use-CacheCluster' is not recognized as the name of a cmdlet, function, script file, or operable program. check the spelling of the name, or if a path was included, verify that the path is correct and try again.” şeklindeki hata mesajı ile karşılaşacaksınız.
Use-CacheCluster komutu Provider ve ConnectionString adlarıyla iki parametre de kabul etmektedir. Bu parametrelerden;
Üzerinde çalışacağınız önbellek kümesini belirtmeniz ardından artık yeni bir önbellek oluşturabilirsiniz;
New-Cache deneme
Yukarıdaki komutun PowerShell oturumunda çalıştırılmasıyla birlikte önbellek kümesinde deneme adıyla yeni bir isimlendirilmiş önbellek oluşturulacaktır. Burada deneme dışında istediğiniz herhangi başka bir önbellek ismi de seçebilirsiniz.
Yeni bir önbellek oluşturulurken yukarıda olduğu gibi sadece önbelleğin adının verilmesi yeterli olacaktır; fakat istenirse yüksek erişilebilirlik, nesne yaşam süresi, bilgi verme gibi ayarlarını da verebilirsiniz.
Yüksek erişilebilirlik konusunda düşmem gereken önemli bir not, bu özelliğin aktif olması için önbellek kümesinde birden fazla önbellek sunucusunun bulunuyor olması ve bu önbellek sunucularının her birinde Windows Server 2008 Enterprise ve/veya Windows Server 2008 R2 Enterprise işletim sisteminin çalışıyor olması gerekmekte.
Sıradaki adımda oluşturmuş olduğunuz isimlendirilmiş önbellek için kendinize erişim hakkı tanımlamalısınız;
Grant-CacheAllowedClientAccount $env:username
Burada $env:username kullanarak PowerShell oturumunu açmış kullanıcı adını vermiş olursunuz. İsterseniz bunun yerine kendinizin ya da izin vermek istediğini bir başkasının oturum adını kullanabilirsiniz.
Tüm bu ayarlamalar ardından önbellek kümesini aşağıdaki komut ile başlatabilirsiniz;
Start-CacheCluster
Yukarıdaki adımlar size sıkıncı geliyorsa, sizler için hazırladığım ve geliştirme ortamını kurmanıza yardımcı olacak bir cmdlet’i aşağıda bulabilirsiniz:
################################################################# # AppFabricCacheSetup.ps1 PowerShell Cmdlet # ################################################################# # AppFabric önbellek kümesini geliştirme ortamında kullanılmaya # # hazır hale getirir. # ################################################################# # Fatih Boy, Mart 2010 # # Version 1.2 # ################################################################# $user = [Security.Principal.WindowsIdentity]::GetCurrent() if((New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)){ Write-Host "Dağıtık önbellek yönetim modülü yükleniyor, lütfen beleyiniz..." Import-Module DistributedCacheAdministration Use-CacheCluster $cacheName= Read-Host "Lütfen oluşturulacak cache adını giriniz (default'u kullanmak için enter'a basınız)" if($cacheName -ne ""){ New-Cache $cacheName } if ((Get-CacheAllowedClientAccounts) -notcontains $env:username) { Write-Host "$env:username kullanıcısı için önbellek erişim yetkisi veriliyor..." Grant-CacheAllowedClientAccount $env:username } $hostinfo = Get-CacheHost if($hostinfo.Status -eq [Microsoft.ApplicationServer.Caching.AdminApi.ServiceStatus]::Down){ Write-Host "Önbellek kümesi başlatılıyor, lütfen bekleyiniz..." Start-CacheCluster } if($cacheName -ne ""){ Write-Host "" Write-Host "$cacheName önbellek özellikleri : " Write-Host "----------------------------------" Get-CacheConfig $cacheName }else{ Write-Host "" Write-Host "default önbellek özellikleri : " Write-Host "----------------------------------" Get-CacheConfig default } }else{ Write-Warning "Bu betiğin doğru çalışması için lütfen sistem yönetici haklarıyla çalıştırınız." }
Bu cmdlet'i çalıştırdığınızda “AppFabricCacheSetup.ps1 cannot be loaded because the execution of scripts is disabled on this system.” şeklinde bir hata mesajı alabilirsiniz. Bu hatayı almanızın sebebi PowerShell’in varsayılan olarak güvenilir bir elektronik imza ile imzalanmamış (un-signed) betikleri çalıştırmayacak şekilde yapılandırılmış olmasıdır. Doğru şekilde çalıştırmanın iki yolu var; betiği bir elektronik imza ile imzalamak ya da komut satırından aşağıdaki komutu yazarak imzalanmamış betiklerin çalışmasına izin vermek.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
Bu komutta kapsam (-Scope) parametresine verdiğiniz Process değeriyle PowerShell’e bu çalıştırma ilkesini sadece içinde bulunduğumuz PowerShell oturumu süresince uygulaması gerektiğini belirtmiş olursunuz. Bu durumda imzalanmamış bir betik kullanacağınız her bir oturumda bu komutu yeniden vermeniz gerekmekte. Yine komutta çalışma ilkesi (-ExecutionPolicy) parametresine verdiğiniz RemoteSigned değeriyle sadece internetten indirdiğiniz betikler için güvenilir imza zorunluluğu olduğunu belirtmiş olursunuz.
Bu komutu her oturumda tekrar tekrar girmek size zor geliyorsa Scope parametresine CurrentUser (aktif kullanıcı) ya da LocalMachine (yerel makine) değerlerini vermelisiniz. Ek olarak; ExecutionPolicy parametresine vereceğiniz Restricted, AllSigned, RemoteSigned, Unrestricted, Bypass ve Undefined değerleriyle çalıştırma ilkesinin ne şekilde yapılandırılacağını belirtebilirsiniz.
Fatih Boy
http://www.enterprisecoding.com http://twitter.com/fatihboy