Hepinizin bildiği gibi ASP ve ASP.NET uygulamaları arasında state serverler farklı Thread ve Pool da çalıştığından, bu işleyicilere ait depolama servislerini aynı anda kullanamıyoruz.
Bu dosyalar aynı IIS AppPool ve Website üzerinde çalışmasına rağmen, ASP dosyasından SET ettiğiniz bir nesneyi ASP.NET uygulamanızda GET edemiyor olmamız buna bir örnek.
İşte bu gereksinim doğrultusunda geliştirdiğim(aynı zamanda projelerde kullandığım) ASPState uygulaması bu soruna çözüm olmakla birlikte, işin içerisine yönetilebilirliğide katarak Session, Application ve Cache nesnelerini bağımsız olarak kullanabilmemizi sağlıyor. Oturumlarınızı, application itemlerinizi, cache objelerinizi kendi yapısı üzerinde depolamakla kalmıyor bunlar web yönetim arayüzü üzerinden görüntülemenizi ve editlemenizide sağlıyor. Bu özellikleriyle alanında tek ücretsiz uygulama olduğunu söylemekte fayda var.
Projeyi yakın zamanda yayınlamayı düşündüğüm Github gibi geliştirici ortamlarından önce kişisel web sitemden .NET geliştiricileri ile paylaşmak istedim.
.NET'e göz kırpan ama ASP ile yola çıkmıştım diyenler artık rahat bir nefes alabilirler .
Solution ve obje kütüphane dokümantasyonu İngilizce, kullanım kılavuzunu ilk buradan paylaştığım için Türkçe olarak hazırladım. İngilizce kullanım kılavuzu çalışmasına ise başlandı ve yakın zamanda bitirerek yine buradan geliştiricilerle paylaşmayı düşünüyorum.
VS Solution Projesini Ücretsiz İndirmek için www.aspstate.com web sitesini ziyaret edebilirsiniz. Projenin yanı sıra geliştirici dokümanlarına bu web sitesinden ulaşabilirsiniz.
------------------------------------------------------------------------------------------------
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:
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.
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.
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.
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ı.
Ö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ı.
State(Cache, Application, Session) sunucularına direkt bir müdahale veya entegrasyon yapılamıyor oluşu.
Oturumlar için, ek bir süreç maliyeti gerektirmeden IP bazlı engellemelerin yapılamaması. Bunun için ekstra yazılım işlemlerinin gerekmesi.
ASPState Özellikleri
- LINQ Desteği
- Klasik ASP Desteği
- Seçilebilir Bellek Katmanı
- Seçilebilir Veritabanı Katmanı
- Olay Kayıtları
- Entegre GC İş Parçacığı
- API Desteği
- Serialize Obje Desteği
- Gelişmiş State Metodları
- IP Black/White List
- Nesne Yönetim Araçları
- Bağımsız Çalışan Web Yönetim Arayüzleri
- Service-Based Mimari
- Dead-Lock Koruması
- Çoklu-İzole Website Desteği
- Opsiyonel Katman Seçimleri
İlk bilgisayarla tanışmamı daha dün gibi hatırlıyorum. O siyah ekranlı günlerden bugünlere teknoloji gerçekten o kadar hızlı ilerlemiş ki bilgisayarla büyüyen ben bile buna inanamıyorum.
O zamanlar henüz 13 yaşındaydım ve şu an neredeyse hayatımın tamamını kapsayan bilgisayarla çocukluk arkadaşım sayesinde tanışmıştım.
O zamanları hatırlıyorum da, her okuldan sonra yemek dahi yemeden hemen çocukluk arkadaşımla bilgisayarın başına geçip saatlerce oyun oynardık. Derken Atari girdi hayatıma. Gözlerimiz kıpkırmızı olana, ellerimiz artık joystickten yapışana kadar televizyon ekranının karşısına çakılı kalırdık. Sadece 2 ay oynayabildik ve artık sıkıldığımızı hissetmiştik. Oyun oynamaktan sıkıldığımız gün programlama dünyasına adım attığımız günde oldu. İlk başlarda eğlenceli olması için site işine hazır sitelerle start vermiştik. O zamanlar Mynet’in ücretsiz olarak sunduğu .sitemynet.com uzantılı alan adları ve hazır site servisi vardı. İlk deneyimimizi bu hazır sitelerle yaşadık. Üretmenin verdiği hazzı bir defa tattınız mı artık o sizin peşinizi bırakmıyor. Devamı ise basit html siteler hazırlayarak geldi. Çok keyif alıyorduk bu çalışmaları yaparken. Yaptığımız siteleri ise tahmin edersiniz. Sağ üst köşede analog bir saat, hemen altında bir takvim, altında dost siteler ve şimdi baktığımda saçma denilebilecek salt kalıplarla(***Siteme Hoş Geldiniz****. Aradığınız her şey burada. Hiç çıkmak istemeyeceksiniz. vs vs) oluşturulmuş bir site. O zamanlar Brinkster, domaindlx ve cjb.net gibi ücretsiz hizmet sunan servis sağlayıcıları bizim gözümüzde birer ilahtı. Bununla birlikte beklentilerimizde artıyordu. Arge ruhumuzda geliyor sanırım.
Keşfetmek istiyordum fakat neyi nasıl yapacağım konusunda hiçbir fikrim yoktu.
Yıl 2002. Bir gün gittiğimiz internet cafede çalışan bir büyüğümüz yardımımıza hemen yetişti. “Nereye gideceğini bilmiyorsan gittiğin yolun bir önemi yoktur” modunda kaynakları araştırıyor iken üstadımız Sedat Öztunalı nereye gideceğini bilmeyen bizi bu teknolojilerle tanıştırdı. Gitmemiz gereken yolu bize gösterdi ve hayatıma yön verecek olan ASP programlama dili ile tanışmamıza vesile oldu. İlk eğitim kaynağımız Türkiye’nin bu alandaki ilahlarından diyebileceğim Hakkı Öcal’ın hazırladığı elektronik kitap oldu.(Aynı zamanda yazılım eğitimi amaçlı okuduğum son kitapta oldu). Kitapçık bittikten sonra bu yola başladığım ve “Evet budur” dediğim ilk program komutu ise ,
<% Response.Write “Hello World” %>
oldu ve o günden bu güne çok yol kat ettik.
Bugün bana ilk ateşi veren o sihirli kelimenin ardından çok yol kat ettiğimi, bu yolculuğun ise hiç bitmeyeceğide açıkça görülüyor. Steve Jobs’un dediği gibi: Asıl ödül, yolculuğun kendisidir.