ASPState Server Start Guide(TR) ASPStateLib version 1.2



Benzer belgeler
ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

KANTAR UYGULAMASI Kurulum Kılavuzu

Kets DocPlace LOGO Entegrasyonu

Bilgi ve Olay Yönetim Sistemi

ASP.NET ile Bir Web Sitesi Oluşturma

WEB KULLANICI KONTROLLERİ ve ANASAYFA KULLANMA(Master Page)

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

Asp.Net Veritabanı İşlemleri

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

VET ON KULLANIM KLAVUZU

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat

İnternet Programcılığı

MASTER PAGE SAYFASI KULLANIMI

KURULUM DÖKÜMANI ERP/ON ÜRÜNÜ İLK KURULUM DÖKÜMANI

Web Uygulama Güvenliği Kontrol Listesi 2010

NicProxy Registrar AWBS Modül Kurulumu Versiyon 1.0

Client Server Database

Q-Biz Kurulum Aşamaları ve Yönetim Ekranları

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

Vega Ayarları. Vega Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

Mikro Ayarları. Mikro Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

NA VNC SERVER KULLANIMI. Genel Bilgi NA VNC Server Ayarları

Bölüm 10: PHP ile Veritabanı Uygulamaları

FortiMail Gateway Modunda Kurulum. v4.00-build /08

«BM364» Veritabanı Uygulamaları

Üst Düzey Programlama

Kullanım Kılavuzu Milli Eğitim Bakanlığı 2010

IPACK LADDER. Arayüz Dökümantasyonu

Veri Tabanı Yönetim Sistemleri Bölüm - 02

Veritabanı. Ders 2 VERİTABANI

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

NicProxy Registrar WHMCS Modül Kurulumu Versiyon 1.0

Bilgi ve Olay Yönetim Sistemi

Programlama Yazılımı ile Web Sitesi Oluşturma

COĞRAFİ BİLGİ SİSTEMLERİ SERVER MİMARİSİ SERVER UYGULAMA GELİŞTİRME EĞİTİMİ

MaestroPanel Kurulum

Proticaret Exclusive v3.2.0 E-Ticaret Yazılımı Kurulum Dokümanı

MİLLİ EĞİTİM BAKANLIĞI YENİ EPOSTA SİSTEMİ HAKKINDA MEB

SQL Server 2014 Kurulum Adımları

Coslat Monitor (Raporcu)

ICATT ÇEVİRİ UYGULAMASI SİSTEM MİMARİSİ VE VERİTABANI TASARIMI

Cyberoam Single Sing On İle

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

AĞ KULLANIM KILAVUZU. Yazdırma Günlüğünü Ağa Kaydetme. Sürüm 0 TUR

Kurulum Dökümanı. v

GAP COTTON GAPCOTTON LAB PORTALI. Kullanım Kılavuzu.

Kurumsal Güvenlik ve Web Filtreleme

Beyhan KARPUZ, Uzman Kütüphaneci Karadeniz Teknik Üniversitesi 2017

Vega Web Sipariş Kurulum

ProTicaret yazılımının, en son sürüm dosyasını indirin.(

@6 SERİSİ ÜRÜN KURULUMU

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

MIRACLE DATA WORKS KURULUM DOKÜMANI

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 9 Tema Kullanımı

İçindekiler Tablosu Talep Destek Yönetim Sistemi Programı...3

SQL Uyarı Programı Kurulum ve Kullanımı

PAPERWORK TEKNİK MİMARİ

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

İÇİNDEKİLER. ERA Danışmanlık. Ataşehir Soyak Yolu Şehit Burak Kurtuluş Cad. Uğurlu Sok No 140/5 Ümraniye İSTANBUL TÜRKİYE

Kurumsal Güvenlik ve Web Filtreleme

Ağ Yönetiminin Fonksiyonel Mimarisi

08217 Internet Programcılığı I Internet Programming I

Üst Düzey Programlama

Kılavuz içerisinde sisteme ait tüm özellikler anlatılmakta olup, yapacağınız konfigürasyonlar satın aldığınız lisans ile sınırlıdır.

Veritabanı Uygulamaları Tasarımı

C# nedir,.net Framework nedir?

Veritabanı Yönetimi Bilgisayarların. Keşfi Hedefler. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi

Başlangıç Ayarları.

Basit bir web uygulaması

ProTicaret Exclusive 4.05 E-Ticaret Yazılımı Kurulum Dokümanı

Veritabanı İşlemleri

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

LİNUX İŞLETİM SİSTEMİNİN KÖPRÜ MODUNDA ÇALIŞTIRILMASI VE GÜVENLİK DUVARI İŞLEMLERİ

KULLANICI KILAVUZU: UEA FİX KULLANICILARININ SSLVPN ERİŞİMİ İMKB İÇİNDEKİLER

PROGRAMLAMA DERSİ 1. İNTERNET

Misafirlerinize internet hizmeti sunmanın en güvenli yolu!

Avrupa Komisyonu Kimlik Tanımlama Sistemi (ECAS) ile Kayıt İşlemi Unutulan şifre Ad-soyad veya e-posta adresi değiştirme 8

WebInstaller. 1. Kurulum Đçin Gereksinimler

İşletme ve Devreye Alma Planı Yerel Okul Sunucusu Uygulama Yazılımları Prototipi TRscaler Technology Solutions

Chronos Yönetim ekranları kullanım Kılavuzu

MODSECURITY DENETİM KAYITLARINI ANLAMAK. Gökhan Alkan,

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

AKINSOFT FilterPlus 2

WINDOWS SERVER 2008 R2-SERVER 2012 DE IP SANALLAŞTIRMA

e-fatura Portalı Kullanım Kılavuzu

"SQL Server Management Studio" yazılımını yüklemek için alttaki resmi sitesinden 180 günlük deneme sürümünü indirebilirsiniz.

Hızlı Başlangıç Kılavuzu

Google Cloud Print Kılavuzu

YENİ NESİL 720 SÜRÜMÜ GENEL DEĞİŞİKLİKLER

BİL-142 Bilgisayar Programlama II

HSancak Nesne Tabanlı Programlama I Ders Notları

INTERNET INFORMATION SERVICES 6.0 DA WEB SAYFASI YAYINLAMAK

VERİTABANI KURULUMU SQL 2005 EXPRESS EDITION KURULUMU

Transkript:

ASPState Server Start Guide(TR) ASPStateLib version 1.2 EKİM 2014

İÇİNDEKİLER 1. ASPState e Giriş a. ASPState Nedir? b. Hangi Sorunlara Çözüm Getiriyor? c. Çözümleri Nelerdir? 2. Özellikler a. Güvenlik b. LINQ Desteği c. Klasik ASP Desteği d. Bellek Katmanı e. Database Katmanı f. Olay Kayıtları g. Entegre GC İş Parçacığı h. API Desteği i. Serialize Obje Desteği j. Gelişmiş State Metodları k. Nesne Yönetim Araçları l. Bağımsız Çalışan Web Yönetim Arayüzleri m. Service Based Mimari n. Dead Lock Koruması o. Çoklu İzole Website Desteği p. Opsiyonel Katman Seçimleri

3. ASPState Server Kurulum a. Sistem Gereksinimleri b. Kurulum Arayüzü 4. İlk Kullanım a. Lisans Aktivasyonu b. Implementasyon ve Kod Entegrasyonu c. ASPState Website Manager Kullanımı d. Klasik ASP Desteğini Etkinleştirme 5. Sorun Giderme a. Kurulumda Karşılaşıbilecek Olası Problemler ve Çözümleri b. ASPStateLib ve Uygulamalarında Oluşabilecek Olası Sorunlar ve Çözümleri 6. Copyright

1. ASPState e Giriş ASPState Nedir? Klasik ASP ve ASP.NET uygulamalarında(webform, MVC) yeni nesil Session, Application ve Cache yöntemleri sunan ortak uygulama kütüphanesidir. Web uygulamalarında kullanılmak üzere, kurulumu kolay, kullanımı basit, servis tabanlı, OOP(Object Oriented Programming) destekli çözümler sunar. Hangi Sorunlara Çözüm Getiriyor? Web geliştiriciler, site yöneticileri ve sunucu yöneticilerinin genel talepleri şu sorunları işaret etmekte: A. Uygulama havuzunun recycle olması, sunucunun restart edilmesi, uygulamanın release/publish edilmesi gibi istisnai durumlarda geçici belleğin(cache) silinmesinden dolayı açık oturumların bellekten silinmesi. Beraberinde gelen veri kayıpları ve sonucunda ise yazılımsal problemler. B. Orta düzey(max günlük 500 bin ziyaretçi) bir web uygulaması(asp veya ASP.NET) için custom ve ücretli cache/session state server sistemlerinin çok yüksek maliyetlere sahip olması. Bu çözümlerin entegre edilebilmesi için uzun süren kurulum/implementasyon/eğitim süreçleri. C. Klasik ASP ile geliştirlimiş bir web sitesine ASP.NET uygulaması entegre edilmesi koşulunda, uygulama havuzlarının farklı olmasından kaynaklanan nesne iletişim sorunları. Klasik ASP kullanan web sitesinde oturum açmış bir kullanıcının, ASP.NET uygulamasına geçtiğinde tekrar oturum açmak zorunda kalması gibi, platform kaynaklı, tasarım kökenli problemler. D. Microsoft Session State teknolojisinin yönetimsel olmayışından kaynaklı bulma izleme güncelleştirme imkanlarının yetersiz kalması. Aktif oturumların kontrol altında tutulamamasıyla sonuçlanan yönetme ve işletme sorunları. E. Önbellekte(Cache) bulunan tüm öğelerin görüntülenemez, nesnenin içeriğinin(değer veya expiration time) görüntülenemez, değiştirilemez veya sona erme süreleri tekrar düzenlenemez olması. F. State(Cache, Application, Session) sunucularına direkt bir müdahale veya entegrasyon yapılamıyor oluşu. G. Oturumlar için, ek bir süreç maliyeti gerektirmeden IP bazlı engellemelerin yapılamaması. Bunun için ekstra yazılım işlemlerinin gerekmesi. Çözümleri Nelerdir? A. Web uygularında en çok karşılaşılan ve baş ağrıtan sorunlardan birisidir uygulama belleğinin release olması. Ziyaretçinin önemli bir işlemi yaptığı esnada Session sonlanabilir ve kullanıcı tekrar login sayfasına yönlenebilir bir farklı caseler ortaya çıkabilir. Böyle bir olasılıkta sayfanın derlenmesi esnasında yine bellek release edileceğindenuygulamanın exception fırlatmasına çoğu zaman kaçınılmaz olur. Bu gibi senaryolarda sunucu belleğinde tutulan Application, Cache ve Session öğeleri haliyle

silinmiş olacaktır. ASPSESSIONID ile oluşturulan cookie değeri, state serverda bulunmadığından istenilen öğenin ismiyle(key name) eşleşme gerçekleşmeyecek ve değerler null dönecektir. ASPState mekanizmasının en çarpıcı özelliği, klasik Microsoft State Server uygulamalarına ek olarak veritabanı yedekli olarak çalışmasıdır. CLIENT REQUEST 1. RESPONSE LAYER (Cache Layer) (Değere karşılık bulunamazsa talep veritabanına katmanına database layer yönlendirilir.) 2. RESPONSE LAYER (Database Layer) (Talep veritabanına yönlendiğinde yanıt, veritabanında ilgili değere karşılık gelen anahtardan gönderilir.) B. Web sitenizde kullandığınız uygulama dili ister Klasik ASP olsun ister ASP.NET(Web form, MVC, 32 64 Bit farketmeksizin) ASPStateLib(ASPStateLib.dll) kütüphanesini sisteme entegre etmeniz çok basittir. Yüksek ölçekli, replicated/mirrored cache server sistemleri gibi Windows kurulumları yapmanıza gerek yoktur. Server node kurulumu yapılmaya gerek duyulmaz. Bu uygulamaları kullanabilmeniz için kaynak kodlarınızda yapmanız gereken küçük modifikasyonlar gerekir. Bu sayede yüksek lisans maliyetlerinden kaçınmanın yanında, zaman maliyetleri de azaltılarak önemli bir avantaj sağlanacaktır. ASPState Server ı veya araçlarını kullanabilmeniz için tek bir Web kurulumu gerekir. Tamamen web tabanlı arayüzlerden oluşan uygulamalar sayesinde, kurulum ve implemente süreçleri çok kısa sürer. Ortalama olarak 15 dakikada ASPState Server ı kendi uygulamanızda, hiç bir kesinti olmaksızın kullanmaya başlayabilirsiniz. C. Genellikle geliştirilmesine ASP.NET ten önce, ASP tabanlı yazılım dilleriyle başlanmış yazılımların karşılaştıkları ortak bir sorundur. Gelişen teknoloji ve ihtiyaçlarla birlikte kurumlar mevcut yazılımlarına aynı web sitesi içerisinde fakat ASP.NET tabanlı yeni nesli bir uygulama geliştirmek istendiğin entegrasyon sorunları yaşanabilir. Ortak web sitesi, ortak veritabanı, ortak uygulama havuzu ve hatta aynı oturum kimliğine sahipistemcilere sahip olmalarına rağmen iki uygulama birbirinden bağımsız olarak çalışmak zorunda kalır. Session, Application, Cache nesneleri ortak olarak kullanılamaz. Bu tip sorunlara uygulamalar arasında güvenlik ihlalleri yaratabilecek geçiş köprüleri kurularak, tüm session application öğelerinin geçiş yapılan diğer uygulamaya post edilmesi gibi ilkel ve stabil olmayan metodlarla çözümler zaman zaman geliştirilebilmektedir. ASPState tüm bu sorunların üstesinden rahatlıkla gelebilmesi için tasarlanmıştır. İstemci, klasik ASP sayfasından, ASP.NET sayfasına geçiş yaptığı anda son SET edilen değerleri olduğu gibi okuyabilir veya tam tersi durumda ASP.NET sayfasında yazma işlemi yaptığı değeri ASP sayfasında kullanabilir. Bu özellik web uygulamaları arasında sorunsuz ve tam güvenli bir köprü kurulmasını sağlamaktadır.

D. ASPState in 3 farklı web yönetim arayüzü bulunmaktadır. Bunlardan ilki kurulum işlemlerinin yapıldığı ASPState Setup UI arayüzüdür. Diğer arayüz, web site oluşturma, aktivasyon ve yönetme aracı olan ASPState SA Manager arayüzü. Üçüncü ve en önemli web yönetim arayüzü ise ASPState Website Manager arayüzüdür. ASPState Website Manager arayüzü, tüm state server öğelerinizi tek bir konsoldan yönetebilmenizi sağlar. Bu konsol tüm state server öğelerine(application Cache Session) göz atabilmenizi, filtreleme yaparak arama sonuçlarında öğeleri listeleyebilmeniz, öğenin oluşturulma zamanı son erişme zamanı sona erme zamanı gibi bilgilerine ulaşabilmenizi, silebilmenizi veya güncellenebilir öğeleri değiştirebilmenizi sağlar. E. ASPState Website Manager arayüzününde yer alan ve state nesnelerinin listelendiği sayfalarda, object tipli serializable nesneler için Object Viewer adlı tool bulunmaktadır. Bu araç, basit sistem veri tiplerinin(boolean, string, datetime, integer) dışında kalan ve serializable olarak işaretlenmiş objelerin içeriğine göz atılabilmesini sağlar. Geliştiricilerin MS Visual Studio Debug moddan alışık olduğu bu özellik, uygulamanın canlıya geçtikten sonra üretilen nesneleri anlık olarak görüntülemesini sağlar.

F. ASPState mimarisi Object Oriented Programming standartlarına tam uygun olarak dizayn edilmiştir. Buna paralel olarak tüm aksiyonlar servis tabanlı olarak hazırlanmıştır. ASPState SA Manager, ASPState Website Manager web arayüzleri, ASPStateLib servisleri baz alınarak hazırlanmıştır ve geliştiriciler için bu projedeki tüm kaynak kodlar emsal teşkil edebilmesi için açık kaynaklı olarak sunulmuştur. Peki bu servisler nerede kullanılabilir? Şu örnek senaryo üzerinden bu gerekliliği basitçe anlatabiliriz: Microsoft Session State Provider kullanan MyContent.com isimli bir web portalı bulunmaktadır. Web yöneticisi portalda kayıtlı ve oturum açmış olan FAKUSER kullanıcı isimli, 85.233.128.12 IP adresli zararlı bir kullanıcı tespit eder. Yönetici, portalın administrator arayüzünden kullanıcıyı siler. Bu işlemden sonra Session henüz sonlanmadığından, Abandon() edilmediğinden, zararlı kullanıcı halen kayıtlı izin verilen kullanıcıların görüntüleyebilmesine izin verilen sayfalarda işlem yapabilmektedir. Bu örnek sernaryoda ASPStateLib.Service Namespace i altında bulunan servislerle oluşabilecek potansiyel problemler çözümlenebilir.

Web portalı, administrator arayüzünde, kullanıcı silme metodunun sonuna eklenecek şu basit kod bloğu, bu işlemin güvenli bir şekilde gerçekleştirilmesini sağlar. SearchModel searhparameters = new SearchModel(); searhparameters.clientip = "85.233.128.12"; List<SessionModel> activesessionlist = searchservice.searchsessionlist(searhparameters).data as List<SessionModel>; var getsession = activesessionlist.firstordefault(x => x.alias == "FAKUSER"); sessionservice.removesession(getsession); Bu kod tüm aktif Session öğelerinin olduğu listeden 85.2333.128.12 IP adresli tüm Session öğelerini getirir. List<SessionModel> türündeki listeden, lambda sorgusuyla takma adı FAKUSER olan kullanıcı getirilir. SessionService.RemoveSession metodu ile aktif kullanıcının oturumu sunucudan(ön bellek ve veritabanından) silinir. Daha fazla kod örneği için ASPState.sln/ASPStateExamples projesi içerisindeki örneklerini inceleyebilir, servis ve diğer nesneler hakkında detaylı bilgi için ASPState Sınıf Dokümantasyon sayfasına göz atabilirsiniz. http://www.aspstate.com/developer/documentation G. Web sayfasındaki içeriğin yetkilendirilmesi ve izinlerin düzenlenmesinde en etkin kullanılan yöntemler genellikle Session nesneleri üzerinden depolanmaktadır. If (Session["IsAuthenticated"] == true){...} gibi basitçe veya daha gelişmiş kontrollerle sayfa içerisindeki güvenlik sağlanmaktadır. Girişine izin verilmeyen IP adreslerine uygulanacak aksiyonlar için genellikle ekstra programlama süreci oluşturulur. ASPState te bulunan etkili araçlardan biriside BWL yani Black/White List uygulamasıdır. Bu sayede kendi web uygulamanızda belirlenmiş bir IP grubuna SET operasyonunu açabilir(whitelist Protection) veya belirli IP adreslerine kapatabilirsiniz(blacklist Protection). Client IP denied/granted aktivasyonuyla sadece izin verilen IP adreslerine Session Set işlemleri yapabilecektir. Özetle X IP adresli kullanıcı karalisteye eklenmiş ise, Session["IsAuthenticated"] = true; gibi bir kod satırından sonra bile bool authenticated = Session["IsAuthenticated"] kod satırı true döndürmesi gerekirken, IP filtresine girmiş olduğundan SET işlemi gerçekleşmeyecek, false yanıtı dönecektir. 2. Özellikler Güvenlik ASPState servisleri, uçtan uca tam güvenli ortamda iletişimini sağlamaktadır. Veritabanı katmanından, iş katmanına, yönetimsel araçlardan istemci bazlı servislere kısaca tüm işlemlerde yüksek katı güvenlik prosedürleri uygulanmaktadır. Bunlardan güvenlik ilkelerden public olmayan en önemlileri şunlardır: Yönetim uygulamasının(aspstate Website Manager) farklı bir sunucuda/domain altında çalışması durumunda kullanıcı oturumların depolandığı sunucu ile iletişim halinde olması gerekir.

Bu iletişim güvenliği APICredential servisi ile birden fazla doğrulama yapılarak gerçekleştirilir. Öncelikle gelen talep paketinin verisel bütünlüğü kontrol edilir. Ardından yönetici tarafından belirlenen APIAuthCode değerinin ve her 3200 saniyede otomatik oluşturulan APITokenKey bilgilerinin doğrulu kontrol edilerek talep paketinde gelen işlem gerçekleştirilerek yanıt(response) nesnesi karşılık olarak döndürülür. Uygulama katmanı ile veritabanı katmanı ayrılmış olup, SQL Injection gibi uygulama dışından sorguların çalıştırılamaması için tüm data işlemleri SQL saklı yordamlar(stored procedures) vasıtasıyla yapılmıştır. Sp(Stored procedure) dosyalarının dışında veri okuma veya yazma işlemleri uygulamanın hiç bir bölümününde yer almamaktadır. Session kullanımlarında kullanıcı kimliği yerine geçen SessionId değerleri sadece Session State Server tarafından oluşturulabildiği için dışarıdan verilebilecek farklı bir değer kabul edilmemektedir. ASPState Website Manager üzerinden yapılan tüm yönetimsel işlemler/uyarılar/hatalar sistem loglarına detaylı olarak kayıt edilir. LINQ Desteği ASP.NET ve MVC uygulamalarında kullanılmak üzere tüm durum nesnelerinde(application Cache Session State) LINQ sorgulaması yapılabilmesine olanak tanınmaktadır. ASPStateLib.Model namespace ağacı altında yer alan varsayılan modeller ile nesneler üzerinde işlemler pratik bir şekilde gerçekleştirilir. Klasik ASP Desteği.NET mimarisi üzerine kurulan ASPState, klasik ASP geliştiricilerinede tıpkı ASP.NET sayfalarında olduğu gibi durum nesnelerini(application Cache Session State) ve durum servislerini(application Cache Session Service) kullanma imkanı verir. Bellek Katmanı GET işlemlerinde ilk yanıtın döndürüldüğü katmandır. CachedRepository seçeneğinin aktif olması halinde işlemler gerçekleştirilir. Cache State nesnesinin dışında, Application ve Session durum nesneleride ASPState önbellek sunucusunu kullanmaktadır. Bellekte geçersiz duruma gelmiş, sona erme süresini tamamlamış öğeler için JobGarbageCollector isimli iş parçağı belirli sürelerde aktifleşerek bu öğeleri sistem belleğinden temizlemektedir. Bu olaylar aynı zamanda log kayıtlarına da eklenmektedir. Database Katmanı ASPState in en önemli özelliklerden birisi de, tüm veri kopyalarının senkron olarak depolandığı veritabanı katmanıdır(dbrepository). Veri kayıplarının önüne geçmek ve farklı platformlar arası(asp ASP.NET) senkron çalışan veri iletişimini sağlamak için oluşturulmuştur. Olay Kayıtları Servis metod çağrıları, ASPState Web Manager aracılığıyla yapılan tüm yazma(set) işlemleri, önem derecesine göre sistem loglarına detaylı olarak kayıt edilir. Kayıt edilen olaylara ait loglar ASPState Website Manager panelinden detaylı olarak gruplandırılabilmekte ve incelenebilmektedir. Kayıt edilen

bilgiler ise; istemcinin IP adresi, olay tipi(logmsgtype Enum), öncelik tipi(logprioritytype Enum), hata kaydı ise sunucu değişkenleri(servervariables), log detayı ile zaman damgası. API Callback işlemlerinde sunucu, kimlik doğrulama, veritabanı veya farklı bir istisna oluşması durumunda Request/Response JsonString bilgileride analiz edilmek üzere kayıt edilir. Ayrıca iş parçacıklarının(job) her görev tamamlama işleminden sonra bu işlemden etkilenen verilerde loglara kayıt edilir. Entegre GC(Garbage Collector) İş Parçacığı ASPState in önemli avantajlardan birisi de yedekli çalışmasına rağmen sunuduğu yüksek performanstır. Yazılım iş süreçleri de bu kriter doğrultusunda oluşturuldu. İstemcilerin Session nesnesine erişme zamanları(lastaccesstime), sona erme süresi(expirationtime) ve sona erme(expiration) süresi dolan Cache ve Session öğelerinin bellekten temizlenmesi gibi güncellenmesi gereken değerler bu iş parçağı ile anlık olarak(senkron) değil, bellekte biriktirme(queue) mantığıyla asenkron olarak yapar. Böylece sayfanın hızlı yanıt vermesi sağlanarak, bellek temizlenme süreçleri otomatik olarak çalışması sağlanır. API Desteği Esnek yapısı ile ASPState bileşenleri farklı sunucularda çalışma kabiliyetine sahiptir. Örnek bir senaryoda kurumun güvenlik prosedürleri gereği, web sitesinde çalışan uygulamanın dışında farklı bir

uygulamanın çalıştırılamayacağı varsayılmaktadır. ASPState Website Manager panelide bu kural gereği farklı bir alan adı altında çalıştırılması gerekecektir. Aynı senaryo web arayüzü ile yönetim paneli arayüzünün farklı alan adı veya farklı sunucularda çalıştırıldığı(örneğin store.com web sitesi, admin.storemanager.com yönetim sitesi gibi) durumlar içinde da geçerlidir. Local cache öğelerininde yönetilmesi, panelden Kill edilen Session öğesinin, asıl uygulamanın çalıştığı sunucuya da yansıtılması gibi, direkt uygulamanın çalıştığı, ApplicationPool işlemini etkileyen durumlar için ASPState API geliştirilmiştir. API, Http protokolünü kullanarak ASPStateLib nesnesinin kullanıldığı hedef web sitesinde ilgili servisi tetikleyerek, iki uygulamanın aynı web sitesinde çalışıyormuşçasına senkron yanıt vermesini sağlar. Bir Cache öğesinin ASPState Website Manager paneli üzerinden güncellendiği bir senaryo göz önüne alınırsa; AJAX talebi /ASPStateMng/OperationController.aspx sayfasına gönderilir. Sırasıyla OperationController.SetCacheItem ve ApiExecuteManager().CreateApiRequest metodu çalıştırılır. ApiExecuteManager().CreateApiRequest metodu ApiRequestModel türünde yeni bir nesne oluşturur. Nesnenin ApiRequestModel.ApiCredential üyesine ApiCredentialModel türünde kimlik doğrulama bilgileri atanır. Talebin hangi servisi tetikleceği ApiRequestModel.ActionType üyesine atanır. Karşı tarafa gönderilecek paket ApiRequestModel.SerializableObject nesne üyesine atanır. Oluşturulan ApiRequestModel türündeki obje serialize edilerek, JSON string formatına dönüştürüldükten sonra sistem ayarlarından PrimaryApiCallBackUrl olarak belirtilen adrese POST metodu ile gönderilir. Genel olarak PrimaryApiCallBackUrl değeri ile sadece birincil API adresi belirtmek yeterlidir. Fakat web sitesinde ASP ve ASP.NET aynı anda kullanılıyor ise ASPState Website Manager üzerinde yapılan değişikliklerin ayrı ayrı API adreslerine gönderilerek güncellenmesi gerekir. Bu gibi varsayımlarda kullanılmak üzere SecondaryApiCallBackUrl ile ikinci güncelleme fonksiyonu eklenmiştir. Sadece PrimaryApiCallBackUrl değerinin belirtildiği durumlarda okuma/yazma(get/set) işlemleri bu URL üzerinden yapılır. PrimaryApiCallBackUrl ve SecondaryApiCallBackUrl değerinin belirtildiği durumlarda ise okuma(get) işlemleri sadece PrimaryApiCallBackUrl üzerinden, yazma(set) işlemleri ise hem PrimaryApiCallBackUrl hem SecondaryApiCallBackUrl üzerinden yapılır. Kullanıldığı platform tipine göre ~/ASPStateApi/ApiRequest.asp veya ~/ASPStateApi/ApiRequest.aspx dosyası execute edilir. Talep işleme konulmadan önce ApiRequestModel.ApiCredentialModel üyesinde bulunan API Token Key ve API Auth Code verilerinin doğrulaması yapılır. Bu kimlik kontrol niteliği taşır. Talep edilen servis çalıştırıldıktan sonra oluşan yanıt değerleri ApiResponseModel türündeki nesneye atanır. Nesne yanıtı oluşturulduktan sonra bu obje yine serialize edilerek JSON string çıktısı üretilir. JSON Çıktı metni deserialize edilerek geri dönüş nesnesi olarak sayfada kullanılabilir. Serialize Obje Desteği

ASPState te bulunan tüm durum(application Cache Session State) hizmetlerinde, sistem nesnelerinin(system.string, System.Int16, System.Boolean) yanı sıra, serialize edilebilir nesnelerde katmanlarda bulundurulabilmektedir.(adodb nesneleri, hashtable, datatable, dictionary, uygulamaya özel model nesneler vb.) Bunun için ilgili nesne öz niteliğinin(attribute), serialize([serializable]) olarak işaretlenmiş olması yeterlidir. Gelişmiş State Metodları ASP ve ASP.NET uygulamalarında kullanılan klasik metodların(session.abandon(), Cache.Count, Application.AllKeys gibi) dışında ASPState yeni, kullanışlı metodlara sahiptir. Bunlar ise: Application.GetCurrentApplicationModel (get) Cache.GetCurrentCacheModel (get) Cache.Set (set) Session.Alias (get/set) Session.ClientIp (get) Session.GetCurrentSessionModel (get) Nesne Yönetim Araçları ASPState Website Manager da bulunan dahili araçlar şunlardır: Durum sunucularında(application, Cache, Session state) bulunan object tipinden türemiş nesnelerin görüntüleneceği Object Viewer. Session koleksiyonuna yazma(set) işlemi yapması engellenmek istenen veya sadece belirli IP adreslerine izin verilebilen kara liste uygulaması(bwl Manager). Sunucu kaynaklarının izlenebildiği, sistemdeki son aktivitelerin izlendiği ve hızlı güncelleme işlemlerinin(bwl liste temizleme, application cache session nesnelerini silme) yapılabildiği Dashboard/Giriş sayfası. Güncelleştirilebilir nesnelerin değer, sona erme süresi(expirationtime) gibi değiştirilebilir bilgilerin güncellenebilmesine olanak sağlayan Object Manager. Bağımsız Çalışan Web Yönetim Arayüzleri ASPState fonksiyonlarına sadece ASPStateLib kullanılarak uygulamada çalıştırılabileceği gibi, birbirinden bağımsız çalışan üç farklı arayüzde kullanılabilir. Arayüzler şunlardır: İlk ASPState Server kurulumunun yapıldığı ASPState Setup UI. Kullanıcının satın almış olduğu ASPState lisanslarını website bazında aktifleştirip, yönetebildiği ASPState SA Panel. Aktif edilen web sitelerindeki, tüm yönetim süreçlerinin gerçekleştirildiği ASPState Website Manager.

Service Based Mimari Tüm durum nesneleri servis tabanlı olarak, ASPStateLib.Service namespace ağacı altında bulunan metodları çalıştırarak işlem yapmaktadır. Bu sayede geliştiriciler servisleri kullanarak hem kendi uygulamalarına kolaylıkla entegre edebilir hem de bu servisler üzerinden yeni uygulamalar geliştirebilmektedir.

Servislerin, veritabanına ulaşması gerektiği durumlarda, aynı isimdeki saklı yordamlar(stored procedure) kullanılır. Servislerin kapsamları kısaca şu şekilde belirtilmiştir: ApiService : Talep(Request) ve Yanıt(Response) nesne iletişimleri, kimlik doğrulama işlemleri, tetiklemeler bu servis üzerinden gerçekleştilir. ApplicationService : Application durum nesnesinin(application State) tüm işlemleri bu servis aracılığıyla yapılır. Veritabanı ile ilgili olan işlemler spaspstate_applicationservice SQL saklı yordamı(stored procedure) ile yapılır. CacheService : Cache durum nesnesinin(cache State) tüm işlemleri bu servis ile yapılır. CommonService : Servislerin ortak kullandığı metod ve fonksiyonların bulunduğu servistir. Veritabanı ile ilgili olan işlemler spaspstate_commonservice SQL saklı yordamı(stored procedure) ile yapılır. SAService : ASPState SA Panel(System Administrator) aracılığıyla yapılan işlemler bu servis aracılığıyla gerçekleştirilir. Veritabanı ile ilgili olan işlemler spaspstate_saservice SQL saklı yordamı(stored procedure) ile yapılır. SearchService : ASPState Website Manager, Cache, Session, Application, Bwl ve Log listeleme sayfalarında kullanılan, ilgili nesnelerin filtrelenebilmesine olanak sağlayan servistir. Veritabanı ile ilgili olan işlemler spaspstate_searchservice SQL saklı yordamı(stored procedure) ile yapılır. SessionService : Session durum nesnesinin(session State) tüm işlemleri bu servis ile yapılır. Veritabanı ile ilgili olan işlemler spaspstate_sessionservice SQL saklı yordamı(stored procedure) ile yapılır. Dead Lock Koruması Derleyiciye gelebilecek anlık taleplerde veya yüksek sayfa görüntülemesine sahip web uygularının kuyrukta bekletmesi esnasında ortaya çıkabilecek bir sorundur. Web uygulama katmanında veya SQL veritabanı katmanında oluşabilir. Bu gibi durumlarla karşılaşılmaması için ilgili yerlerde lock koruması bulundurularak kod optimizasyonu sağlanmıştır. Çoklu İzole Website Desteği ASPStateLib uygulmasını kullanabilecek Windows sunucusunda, birden fazla web sitesi bulunabileceği olası bir durumdur. Her web sitesi için ayrı kurulum, ayrı veritabanı gibi bir gereksinim olmaksızın sitelerin tek bir sunucu ve veritabanında izole bir şekilde bağımsız çalışmasını sağlar. Opsiyonel Katman Seçimleri Kullanılan yazılım dili, performans seçimleri, yedekli çalışma sisteminin(dbrepository) gerekliliği gibi standartlar doğrultusunda oluşturulmuş olan katmanlardan talep edilenleri çalıştırılacaktır. Stabilite, performans ve veri kaybı yaşanmaması gibi gerekliliklerin talep edildiği durumlarda DbRepository ve CachedRepository açık duruma getirilir. Bu durum nesnelerin hem bellekte hem de veritabanında depolanmasını sağlar. Maximum performansın öncelikli olduğu durumlarda, durum nesnelerinin veritabanında depolanması gereksiz bulunabilir. Bu gibi senaryolarda DbRepository kapalı, CachedRepository açık konuma getirilerek nesnelerin sadece bellekte depolanması sağlanır.

ASP ve ASP.NET uygulamasının anlık olarak birbirinin iletişimde kalmasının istendiği durumlarda CachedRepository kapalı, DbRepository açık konuma getirilir. Tüm durum nesnesi öğeleri sadece veritabanında depolanacak ve yanıt veritabanından geleceği için farklı tipteki uygulamalar tam senkron olarak birbirleriyle etkileşim içinde çalışabilecektir. 3. ASPState Server Kurulum Sistem Gereksinimleri ASPState uygulamasının ve bileşenlerinin sunucuda stabil çalışabilmesi optimal fiziksel ve yazılımsal gereksinimlere ihtiyaç duyar. Kuruluma geçmeden önce sistem konfigürasyonunuzun aşağıda belirtilen kıstaslarla olan uyumluluğunu gözden geçirin. ASP ASP.NET Desteği (ASP desteği opsiyoneldir) Windows Server 2003 2008 2012 IIS 6.0 / 7.0 / 8.0 / 8.5 x86 / x64 Platform Microsoft SQL Server 2005 / 2008 / 2012.NET Framework 4/4.5/4.5.1 Kurulum Arayüzü İlk kurulumun işleminin yapıldığı aşamasıdır. Bu işlem her sunucuda sadece bir defaya mahsus olmak üzere yapılır. Aynı web sitesinde, başka bir çalışan web uygulaması var ise, bu uygulama kurulumdan hiç bir şekilde etkilenmemektedir. Kurulum kendi veritabanını oluşturmakta yine ilişkili yapılandırmaları gerçekleştirmektedir. Kurulumu başlatmak için öncelikle ~/ASPStateManager/ASPStateMng/Installation/Setup.aspx sayfası çalıştırılır. Tüm alanlar doldurulduktan sonra ASPState Setup UI şu işlemleri sırasıyla gerçekleştirecektir: SQL Connection String alanıda belirtilen MSSQL bağlantının geçerliliğini kontrol eder.(installationaction1) SQL Veritabanı oluşturulmamışsa yeni bir veritabanı oluşturur veya mevcut veritabanını güncelleştirir. Güncelleştirmeler ise ASPState_*** prefixi ile tabloların oluşturulması, spaspstate_*** prefixi ile saklı yordamlar(stored procedure) oluşturulması, fnaspstate_*** prefixi ile scalar functionların oluşturulması işlemlerinden oluşur. Varsayılan(DEFAULT) yapılandırma ayarları, ASPState_Setting tablosune eklenir. Log dizinine olan erişim kontrolünün yapılması ve web.config dosyasına ASPStateConn isimli bağlantı satırının eklenmesiyle tamamlanır.

4. İlk Kullanım Lisans Aktivasyonu Kurulumun ardından sıradaki işlem, satın alınan veya trial olarak edinilen lisans anahtarının aktifleştirilmesinden oluşur. ~/ASPStateManager/ASPStateMng/SA_Login.aspx sayfasından giriş yapılır. Ardından sağ üst köşedeki New Web Site butonu tıklanarak lisans kodu ve diğer bilgiler girilir. Lisans doğrulaması ve etkinleştirmesi online olarak yapılacağından, sunucunun https://secure.asptate.com web sitesine erişiminin açık olduğundan emin olunmalıdır. Aktivasyon işleminden sonra tüm tablo ve yapılandırma işlemleri sistem tarafından otomatik yapılarak ASPStateLib.dll ve ASPState Website Manager paneli kullanılabilir hale gelir. Implementasyon ve Kod Entegrasyonu Halihazırda kullanılan uygulamada yoğun bir kod değişikliği gerekmeksizin, şu basit değişiklikler yapılarak hemen kullanıma geçilebilir. Web.config dosyasında ASPStateConn isimli bağlantı satırının bulunduğunu onaylayın. Web.config dosyasında şu nodeların bulunduğunu onaylayın: <system.web> <httpruntime maxquerystringlength="32768" maxurllength="65536" /> <sessionstate mode="off" /> </system.web> Application Cache Session tanımlamaları için inherited class olarak ASPStateLib.Base.Page sınıfını referans gösterin. Bunun için Default.aspx dosyasında şuna benzer bir değişiklik yapılması gerekmektedir: public partial class Default: System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // ONLOAD CODE } } olan kodunuzu, public partial class Default: ASPStateLib.Base.Page { protected void Page_Load(object sender, EventArgs e) { // ONLOAD CODE } } şeklinde değiştirmeniz yeterli olacaktır. Aynı düzenlemeler MasterPage ve UserControl sayfaları içinde geçerlidir. Kullanım örnekleri ve detaylı anlatımlar www.aspstate.com/developer/documentation sayfasında detaylı olarak anlatılmıştır. MVC ve diğer tür ASP.NET uygulamalarında kullanmak için class başlangıç kodunuzun hemen içerisine şunları veya sadece kullanmak istediğiniz durum nesnelerini ekleyin:

public new ASPStateLib.State.HttpCacheState Cache = new ASPStateLib.State.HttpCacheState(); public new ASPStateLib.State.HttpSessionState Session = new ASPStateLib.State.HttpSessionState(); public new ASPStateLib.State.HttpApplicationState Application = new ASPStateLib.State.HttpApplicationState(); Uygulamanızı derleyin ve log dizininde herhangi bir hata kaydı olmadığından emin olun. ASPState Website Manager Kullanımı Başlamak için ~/ASPStateManager/ASPStateMng/Login.aspx sayfasını kullanın. SA Panelden state_admin varsayılan kullanıcı adıyla oluşturulan, Website yöneticisinin şifresini girerek login olun. Uygulama türüne göre API Configuration sayfasından APICallBackUrl bilgilerini ve diğer bilgileri güncelleyin. Daha detaylı bilgi ve ipuçları için ASPState Manager Panel Guide(TR) dosyasına göz atabilirsiniz. Klasik ASP(.asp) Desteğini Etkinleştirme Kurulum ve yapılandırma işlemlerinden sonra Windows servisleri üzerinde bir işlem yapmadan ASP.NET sayfaları için ASPStateLib.dll kütüphanesini hemen kullanmaya başlayabilirsiniz. Fakat klasik ASP sayfa kullanıcıları, ASPStateLib.dll ve ASPStateManager.dll bileşenlerini kayıt etmeleri gerekmektedir. Bu assembly dosyaları StrongNameKey(snk) ile işaretlenmiş ve kayıt edilebilir dosyalardır. Aşağıdaki örnekte olduğu gibi, ASPStateLib.dll ve ASPStateManager.dll dosyalarını, website kullanıcısının erişim yetkisine açık bir dizine kopyalayın. Ardından komut satırı istemcisini, yönetici modunda(run as administrator) çalıştırarak aşağıdaki kayıt(register) işlemlerini hem ASPStateLib.dll hem de ASPStateManager.dll için yapın. 1. %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe /codebase /tlb "C:\YOUR_APP_PATH\bin\ASPStateLib.dll" 2. %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe /codebase /tlb "C:\YOUR_APP_PATH\bin\ASPStateLib.dll" İşletim sistemi platform tipine(x64, x86) göre...microsoft.net\framework\v4.0.30319 olan register assembly(regasm) dosya yolunu...microsoft.net\framework64\v4.0.30319 olarak değiştirebilirsiniz. Klasik ASP kod ile örneklerini, Solution projesinde bulunan ASPStateExamples projesi içerindeki ASP dosyalarından inceleyebilirsiniz. 5. Sorun Giderme Kurulumda Karşılaşıbilecek Olası Sorunlar ve Çözümler Semptom: Start Setup butonuna basıldığında tarayıcı hata veriyor. Çözüm: Aşağıdaki örnekte, hata detaylarının nasıl görüntüleneceğine dair bir ekran görüntüsü yer alıyor.

Ekran görüntüsünde hatalı olarak işaretlenmiş satırın SQL bağlantı satırı olduğu ifade edilmekte. Bunun nedeni yanlış veya yetkisiz bir bağlantının belirtilmiş olmasıdır. Bu gibi durumlarda Restart Setup bağlantısını tıklayarak, ilk kurulum sayfasında belirttiğiniz değerleri tekrar gözden geçirerek yeniden kurulumu başlatmanız önerilir. Semptom: Parser Error Message: Unrecognized attribute 'maxquerystringlength'. Note that attribute names are case sensitive.

Çözüm: IIS sunucunuzda.net Framework 4.0 kurulu ve etkinleştirilmiş olduğundan emin olun. IIS Manager > Application Pool > Seçili Uygulama Havuzunu tıklayın. Advanced Settings... sekmesini tıklayın..net Framework Version seçeneğini v4.0 olarak tanımlayın. Ayrıca Enable 32 bit Application seçeneğinin True ve Managed Pipeline Mode seçeneğinin Integrated olarak seçildiğinden emin olun. ASPStateLib ve Uygulamalarında Oluşabilecek Olası Sorunlar ve Çözümler ASPStata Server kurulumundan sonra oluşabilecek hatalar veritabanına, fatal error olarak tabir edilen ve veritabanına yazılamayacak ölümcül hatalar ise, kurulum esnasında belirtilen fiziksel yolda oluşturulan günlük log dosyalarına yazılır. Bu yolu değiştirmek isterseniz, web.config dosyasına şu parametreyi ekleyin veya güncelleyin. configuration/appsettings anahtarının altına <add key="aspstatelogfolderpath" value="c:\aspstate\logs" /> etiketini ekleyin ve değeri değiştirin. Uygulamanın burada belirtilen yola yazma izni olduğundan emin olun. ASPState Website Manager panelde yer alan testi kullanarak yazma iznini test edebilirsiniz. Semptom: Hata Kodu > 2006 Hata Tipi > JobGarbageCollectorError Çözüm: ASPStatLib.Service namespace ağacı altında bulunan CommonService.JobSessionTimeoutExecuted metodunda oluşan ve genelde thread execute edilmesi esnasında oluşan yetki problemlerinden kaynaklanır. Yetki sorunlarında, IIS ayarlarından, uygulama havuzu ve web site kullanıcı yetkilerinin kontrol edilmesi gereklidir. Semptom: Hata Kodu > 3005 Hata Tipi > JobSessionTimeUpdaterError Çözüm: 2006 kodlu hatanın alınmasına sebebiyet verecek koşullar, bu hata tipinde de geçerlidir. Aynı çözüm bu hatanın giderilmesinde uygulanabilir.