Kategoriler


SON YORUMLAR
işsiz
bilgisayar mühendisi şu amk asp.net te şu get ile id i almayı bi öğrenemedim sikim böle işi php en iyisi better then
Ali yıldırım
Merhaba arkadaşlar c,c++,java,c#,php ödevlerinize uygun ücret ile yardim edebilirim iletisim=ali.yildirim.94@hotmail.com
Zekeriya
Microsoft ne iş yaparak bu kadar parayı kazanıyor?Sadece işletim sistemi ve ofisten bu kadar para gelir mi?118 bin çalışanı olupta neden bu kadar az yazılım yapıyor?Örnek grafik,animasyon,veri kurtarma,oyun vesaire.Bana kalırsa bir işletim sistemi bir çok işi kendi yapar.Dışarıdan herhengi uygulamaya ihtiyaç duymaz.Biz hala dışardan winrar yüklüyoruz.Neden işletim sitemini ve ofisi geliştirmiyor?Neden telefon piyasasına girmiyor?Ama kendi orjinelliğiyle,kendi anlayışıyla.Android veya ios.a yazılım yazmak zorlarına gitmiyor mu?Kendileri yazılmcı iken başkalarının yazdığı yazılımı kullanmaktan rahatsız olmuyorlar mı?Mesala o öyle mi yapılır?Şöyle bir özellikte olsaydı demiyorlar mı?Bahsettikleri çalışanların çoğu (72 bini) dışarda insan kaynaklarıyla uğraşıyorlar anladığım kadarıyla.Merkezdeki çalışan sayısı az.Güzel yazılımlar bekliyoruz.
Tutku
Teşekkürler sayende hayallerim yıkılmadı herkes diyordu meslek yok şu yok bu yok diye gerçeği söylediğin için teşekkürler b///k
Kaan
C#, Asp.net, Java SE, Java EE, Spring Framework, Android, C++, C, PHP ödevlerinizde yardımcı olabilirim. Geçmişte yaptığım projelerden birkaç tanesini https://github.com/kaan8792 adresinden inceleyebilirsiniz.Not: Whatsapp üzerinden iletişime geçerseniz daha hızlı cevap verebilirim. İletişim için; Mail: kaan8792@gmail.com | Whatsapp: 05428339141
Ercan Sezdi
Elektrik elektronik mühendisliği okuyorum. Python ve C++ ödevlerinizi, python bitirme projelerinizi makul ücretler karşılığında yapabilirim. İletişim:ercansezdizero@gmail.com
Tatar Ramazan
Bırakın bu saçmalıkları ahirete çalışın. Özel sektörde namaz bile kılamazsınız. 3 günlük dünya için uğraş dur. Boş işler. Ben 22 yıl eve kapandım çalıştım 11 yaşından beri. İş dünyası ve kızlar yüzüme bile bakmadı. Mezunlar yoğun rekabet içinde kıvranıyor. Maaşlı eleman olmak için çırpınıyorlar. En zor işi yaptıracaklar size. Diğer taraftan bir sürü kişi kolay iş yaparak mercedese biniyor. Adam din kültürü öğretmeni oldu. Verdiğim emeğin çok daha azını verdi. Manken gibi de karı aldı. Biz ortada kaldık. Kemalizm boş vaadler sunuyor size. Laik kapitalist firmalar çoğunuza köpek gibi davranacak. Atatürkçü anne babalarınız ve öğretmenleriniz ahiretinizi düşünmüyor. Gaflet ve dalalet içinde yaşıyorsunuz. Ölünce çarpılırsınız. Bir sabah namazı özelde 20 bin maaş almaktan daha hayırlıdır. Çünkü ahiret sonsuzdur.
ismet
10. madde ne zamana gelir bekliyorum.
Tatar Ramazan
Bu iş zordur. Yüksek kapasite gerekir. Bazı firmalar ALES 85 olsa iyi olur diye ilanda yazar (would be an asset). İyi para kazanan, iyi kariyer yapanların çoğu ilk 5 bine girmiş adamlardır. Ben 16500.üncü olmuştum. Bizim bölümün birincisi bile öyle havada kapılmadı. Benimle aynı yerde sayılır konum ve para olarak. Çoğunuz en fazla bir kurumsal firmada vasat bir maaşa çalışırsınız. O da iyiyseniz. Ne Devlet ne de özel size iyi para vermek istemeyecek. Yoğun rekabet var. KPSS lisans çok zorlaştı. 2006-2008 arası sorularda 85-90 yapardım. Şimdi 75 puanı geçemiyoruz. Bu durumda çoğu özel firma tabii ki yüksek maaş vermez muhtaçsınız onlara diye. Mesleğin ve sektörün sıkıntılı taraflarını yazdım 20 madde çıktı. Yazılımcı olacaksanız bari javacı olun. Microsoft devamlı yeni teknoloji çıkarıyor. 3 senede eskirsiniz. Javada rakip daha az. 10 yıl deneyimliyim. 8 bin maaşa bile devlete giremiyorum bilişim uzmanı olarak. Site sahibi yazmış "Ayrıca 10 yıllık tecrübelere sahipseniz genellikle şirketler size çok yüksek maaşlar yerine hisse yada kar payı önermeye başlayacaklardır." He he öyledir(!..) Ben Ankarada özelden bizim kuruma kaçan 5-10 yıl deneyimli 10 kişi gördüm. 10 yıl deneyimli bilişim uzmanı aldık. Zavallı adama 3 kat maaş vermeleri gerekirken 2 kat olarak aldılar (5 yıl ve üstü deneyimde 3 kat brüt ücret veriliyor normalde). Her yer en iyi adama en az para vermeye çalışıyor. Hayattan adalet beklemeyin. Ben 10 yıldır milyar dolarlık zenginler gibi çalıştım yer yer. 10 tane teknolojiyi A dan Z ye öğrendim. Binlerce sorun çözdüm kod yazdım. Sonra MVC-Core modası çıktı. İş dünyası beni anında deliğe süpürdü. Memurluktan istifamı versem aç kalırım aç. Daha yükselmem gerekirken, çok iyi paralar kazanmam gerekirken düştüğümüz hale bak. Verdiğim emeğin onda birini vermeyenler benden çok daha iyi hayat yaşadılar ve de yaşamaya devam ediyorlar. Mesela adam mesleki ve İngilizce bilgisi olarak boş tenekeydi. Yurtdışına gidiyor devamlı. 1 sene kalıyor. Her gidişinde 10 tane ülke dolaşıyor. Ticaret yapıp yolunu buluyor. Ben size çalışmayın demiyorum. Hiçbiriniz başarılı, mutlu olamazsınız demiyorum. Umudunuzu koruyun. Bir kısmınız iyi yerlere gelecektir tabii ki. Ama önemli bir bölümünüz aradığını bulamayacak. Belediyeye bile almayacaklar. Çalışmazsanız toplum sizi suçlar. Çalışın ki en azından ben çalıştım ne yapayım meslek fos çıktı dersiniz. İnsanlar zalimdir. Cahildirler. Halden anlamazlar. Kıytırık harita mühendisi torpille Belediyeye girer. Onu adam görürler görüntüsü boyu da varsa. Sen çok daha kalitelisindir ama işsiz kalsan sana saldırılar. Düz mantıkla hareket ederler. İnce düşünemezler. Site sahibi para kazanamamaktan değil saygı kazanamamaktan korkun diyor. Şunu belirteyim ki: İş dünyası size köpek gibi davranacak. Toplum size saygı bile duymayacak. Kız da vermeyecekler. Verecek kızları yok zaten. Hepsinin sevgilisi var. Mezun olunca az sövün lan. Yazıktır. Milletin anası, karısı, bacısı var. Sizdeki de iyi cesaret haa! Derece yapanlar mühendislikten kaçıp Tıbbı yazıyor. Siz cesur davrandınız bu hengameye soktunuz kendinizi. %10-15 iniz yolunu bulur. Diğerleriniz için El-Faaaaaatiha!...Bilişim çağı, geleceğin mesleği de iyi keklemişler sizi. Doğrudur her şey yazılımla oluyor. Yapılacak daha çok yazılım var. Çok yazılım talebi var. Ama iyi para kazanıp bi bok olamıyorsun ki. Sen bir bankaya başvuruyorsun senin gibi 3000 kişi de saldırıyor. Benim gibi memur (kariyer uzmanız biz mühendisin bir üstü) olan arkadaş 7600 TL maaş alıyor. İstanbulda 6000 TL ye 6 yıl deneyimli adam çalıştırıyorlar. 2 çocuklu aile ancak geçinir. Sadece araba masrafları bir ton tutuyor. Hayat zor. Bu maaşları yüksek zannetmeyin. Mesleğin ve sektörün sıkıntılarını yazayım mı? Yok boooluum bunalıma girmeyin şimdi. Sonra yazarız. Realist olun. Kendinizi kandırmayın. Genetik-yaratılış olarak kime benzediğinizi tespit edin. Kaderiniz, eşiniz ve hayattaki başarınız ona benzeyecektir. Sistem okullarda insanlara boş hayaller sunuyor. Çoğunluk avucunu yalıyor. Kendilerini kandırıp 35-40 yaşına kadar iyi iş, iyi eş arıyorlar. Bulacak olan hemen bulur iyisini. 1 yılda olmuyorsa 10 senede de olmaz. Karşınıza çıkan işi ve eş adayını reddetmeyin. Daha iyisini beklemek sadece zaman kaybı. Daha kötüsü gelir. Zaman geçtikten sonra değil şimdi akıllanın. Tecrübe konuşuyor burda. İyi kıvranmalar...
cöp
robot yazmis bak authorize yapmamissin patlatmis
İsmet
Ödev yaptırarak derslerinde öne geçenler şerefsizdir.
İsmet
Ödev yaptırarak derslerinde öne geçenler şerefsizdir.
İsmet
Ödev yaptırarak derslerinde öne geçenler şerefsizdir.
İsmet
Ödev yaptırarak derslerinde öne geçenler şerefsizdir.

Bilgisayar Mühendisleri
Here is the website inspired me to use 
it as a guide when I tried to define 
myself as an engineer candidate a few 
years ago. It really helped me to work
 and study feeling in confidence with 
being on the right way. I suggest this 
website to whom it may direct her/his 
to find the right career path. It 
includes many articles varies from 
real life experiences to detailed 
software engineering issues. But the 
most dignified parts for me are the 
articles in general and career titles.
Son okunan makaleler:
ASP.NET Output Cache Modeli
Bilgisayar Mühendisliği Hakkındaki 10 Büyük Yalan!
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
Flash CS4’ün Getirdiği Yenilikler II - Programcılar Açısından
Oracle - Query Optimizer
İTURO 2008 Microsoft Robotics Studio Finalisti Üniversiteler
Ajax kullananlar için yükleniyor resimleri
Microsoft Doktora Yapanlara Yıllık 33 Euro Burs Veriyor.
Microsoftda Çalışan Bir Türk ile Yapılmış Röportaj
Oracle - Data Cartridges
Dünyanın En İyi 500 üniversitesi 2007 Sıralaması Açıklandı
Bilgisayar Mühendisi olacaklara üniversite seçme rehberi?
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
Kredi Kartı Numarası Doğrulama- Lhun algoritması
Bilgisayar Mühendisleri Kaç Para Alır?
Kısa sorular Kısa Cevaplar - 2
Transact-SQL - T-SQL - SQL NEDİR?
Bilgisayar Mühendsileri için CV hazırlama rehberi - 1
MODEM ÇEŞİTLERİ
VERİ İLETİM TİPLERİ - Half Duplex - Full Duplex - Simplex

Bilgisayar Mühendisleri Portalı

ASP.NET Output Cache Modeli

ASP NET sitelerinde performansı arttırmak için kullanılan en önemli yapılardan biri olan Caching mekanizmasını anlatmaya çalışacağım. Caching’in Türkçesi önbellekleme demektir ki adından da anlaşılacağı gibi sayfanızın bir kopyasının önbellekte saklanması ve artık gelen isteklere de önbelleklenmiş sayfanın gösterilmesi ve bu sayede ASP.NET sayfamızın yeniden derlenmemesi ve böylece artan performans. Artık düşündüğümüzde 1000 lerce kişinin bağlandığı bir server da isteklere göre sayfaların derlenmesi ve kullanıcılara gösterilmesinin oluşturacağı gecikmeyi herhalde tahmin edebilirsiniz ama tabiî ki cachin’gin iyi yönleri olduğu gibi kötü yönleride vardır, aslında kötü yönleri demeyelim de dezavantajları diyelim ama ne güzeldir ki yine bu dezavantajları da caching için kullanacağımız kodlarda bazı değişikler yaparak giderebiliriz.

Caching olayını eğer sınıflamak gerekirse ana başlık altında 2 sınıfta toplayabiliriz.

1- OutPut Caching (*Çıktı Önbellekleme)
2- Data Caching (*Veri Önbellekleme)

Ve bunların dışında ama yukarıdakiler ile alakalı alt başlık olarakta koyabileceğimiz özelleşmiş cachingler ise Fragment Caching (*Parça parça önbellekleme) ki bu OutPut Caching’in özelleşmiş bir halidir ve DataSource Caching (*VeriKaynağı Önbellekleme) ki bu da Data Caching in özelleşmiş halidir.

Biz bu makalemizde Data Cacheing hariç diğer bütün yöntemlere göz atmaya çalıcağız.

OutPut Caching : Bu Cachleme sayesinde sayfamızın son HTML halininin önbellekte bir kopyası oluşturulur ve gelen isteklere bu sayfalar gönderilir ama unutmadan söyleyelim cache için bir yaşam süresi diyebileceğim Duration alt özelliğini eklememiz gerekecektir. Bunun sayesinde cache mizin ne kadar süre
önbellekte saklanacağını ayarlamış olacağız. Şimdi bu dediklerimizi bir örnekle açaklamaya çalışalım.

İlk başta kendinize yeni bir ASP.NET projesi oluşturun. Aşağıdaki resimde olduğu gibi sayfasınıza


<%@ OutputCache Duration="5" VaryByParam="None" %>
satırını ekleyin.



Bu kod satırını açıklamak gerekirse ;
*Duration : Sayfamızın önbellekte ne kadar saklanacağını belirttiğimiz alt özelliktir.
* VaryByParam : Bu alt özellikiğin “None” yapılması demek, Sayfamızın tamamının önbelleğe alınması demektir ki buna ileride daha detaylı değineceğiz.

Şimdi sayfamıza önbelleklemeyi somut bir şekilde görmek için Zaman ekleyelim. Bunu yapmak için tek yapmanız gereken sayfamıza bir tane label eklemeniz ve şu kodları yazmanız;

public partial class _Default : System.Web.UI.Page
{
         protected void Page_Load(object sender, EventArgs e)
         {
               label1.Text = DateTime.Now.ToLongTimeString();
         }
}

Yukarıda bulunan kodda sizinde göreceğiniz gibi Sayfa her Yüklendiğinde eğer önbellekleme yapılmamış ise o anki saati gösterir ama şimdi sayfamızı derleyelim ve sayfamızı devamlı Refresh yani yenileyelim , ne gördünüz? Tabiki saatin hiç değişmediğini, neden? Nedeni ni söyleyelim ; Önbellekleme tabiki. Sayfamızı devamlı yenilerseniz 5 saniyede bir saatin saniyesinin değişeceğini göreceksiniz. Çünkü biz önbellekleme süresini 5 saniye olarak ayarladık ve her 5 saniyede yeni bir cachimiz oluşturulur.

Bu olayın avantajları :

*Sayfamız yeniden derlenmedi
*Kullanıcılara değişmeyen yani static sayfalar daha hızlı bir şekilde gösterilir
*Server gereksiz yere yorulmaz
(Static sayfalarda performans için mükemmel bir yöntem.)

Kısacası performans artışı…

Dezavantajlar ise :

*Eğer sayfamız dinamik olsaydı ve dışarıdan QueryString ler ile farklı bilgiler gelseydi !

İşte yukarıdaki dezavantajtan sıyrılmanın yöntemi :

Yeniden bir proje açın ve bu sefer iki tane asp.net sayfası ekleyin projenize. İsimleri Default.aspx ve Default2.aspx olsun.Default2.aspx sayfasının Source kısmına şunu yazmayı uutmayın : <%@ OutputCache Duration="10" VaryByParam="None" %> Burada önbellekte kalma süresini 10 saniye yaptık. Şimdi Default.aspx sayfamızın Kod kısmı olan Default.aspx.cs sayfasının Button_Click olayına aşağıdaki kodları yazın ama bundan önce tabi sayfamıza bir tane TextBox ve bir tane de Button Kontrolu koymayı unutmayın.

protected void Button1_Click(object sender, EventArgs e)
{
      Response.Redirect("Default.aspx?giden=" + TextBox1.Text);
}

Burada Default2.aspx sayfamıza giden QueryStringi sayesinde TextBox1 den alınan veriyi gönderiyoruz şimdi de Default.aspx sayfasına bir tane Label koyun ve Default2.aspx.cs sayfasına ise şu kodları yazın ;

protected void Page_Load(object sender, EventArgs e)
{
      Label1.Text = Request.QueryString["giden"].ToString();
}

Burada ise gelen verimizi Request ile aldırdıktan sonra Labelimiza yazdırıyoruz. Evet şimdi deneyin bakalım ne olacak.Ben size söyleyeyim ilk gönderdiğiniz veri (TextBox a yazıp buttona bastıktan sonra gönderilen veri yani) Default2.aspx sayfamızda görülecek ama bunda sonra her göndereceğiniz veride yeni ilk gönderdiğiniz veri şeklinde gözükecek.Yani Label kontrolmuzde hep aynı yazı gözükecek taki 10 sn geçene kadar.İşte size Dezavantaj ?. İşte bundan şöyle sıyrılacağız : <%@ OutputCache Duration="10" VaryByParam="*" %> kodumuzun VaryByParam özelliğini “*” bu şekilde yapın ve bu sefer yeniden deneyin bakalım ne olacak o zaman. İşte şimdi problem çözüldü. Artık her gelen yeni QueryStringe göre bir cache oluşturulup kullanıcılara en taze hali gösterilir ama burada da çok ama çok önemli bir durum söz konusu: Şimdi siz mesela “Ahmet” diye bir QueryString gönderdiniz Default2.aspx sayfamıza ve doğal olarak ta label kontrolmuzda “Ahmet” gözükecektir.İşte bu sayfanın serverda A kopyası olarak saklandığını düşünelim.Peki başka bir kullanıcı ise “Mehmet” diye bir QueryString gönderdi o zaman Default2.aspx sayfamda ise “Mehmet” olarak gözükecektir Label kontrolum ama önceki A kopyam silindi mi peki? Cevap vereyim: Kocaman bir Hayır! A kopyam hala saklanmakta ve bu sefer ise “Mehmet” olan B kopyam olarak saklanıyor.Eğer başka bir tane daha farklı bir QueryString ile sayfama istekte bulunulursa bu sefer sayfam C kopyası olarak saklanacaktır. Peki bunlar saklandı ama ne olacak bunlara.Eğer bir kullanıcı sayfamı Ahmet QueryString ile çağırırsa o zaman ona A kopyası gösterilecek ve sayfam yeniden derlenmecektir.Eğer başkası ise “Mehmet” QueryString ile çağırırsa ona da B kopyası gönderilecektir ve bu sayede yine performans artışı sağlanacaktır.Nasıl ama? ? Peki ben eğer iki tane QueryString gönderirsem ama sayfamın sadece bir tane QueryStringim değiştiğinde cachleme yapmasını istiyorsam o zaman ne yaparım.Düşünün bir UrunlerID ve HizmetID diye iki tane QueryStringim var ve ben bunlardan sadece HizmetID değiştiğinde sayfamın serverda farklı bir cachlenmiş halinin saklanmasını istiyorum.O zaman yapmam gereken sadece şu : <%@ OutputCache Duration="10" VaryByParam="HizmetlerID" %> İşte bu kadar. Artık istediğim gibi oldu.(Unutmadan! Bakın bu yöntemler sadece QueryStringler için geçerlidir.Cookiler ve Sessionlar için geçerli yöntemler değillerdir) Eğer ki ben birkaç tane QueryString e göre cachleme yapmak istiyorsam o zaman ise Noktalı Virgül kullanmam yeterli olacaktır. Örneğin VaryByParam=”HizmetlerID;UrunlerID;SenID” vs gibi.Gayet kolay değil mi?

Şimdi diğer özellikleri inceleyelim (Bu makalede bunları yüzeysel geçeceğiz ama diğer makalelerde hepsine teker teker inceleyeceğiz) :

*VaryByCustom : Bu alt özellik ; kendi yazacağımız kodumuza göre Cahcleme yapabiliriz.Mesela Browser farklılıklarına göre bile Önbellekme yapabiliriz.Bir düşünün Nescape kullanan ve bir kullanıcı doğal olarak Nescape-Optimized sayfalara ulaşacaktır aynı şekilde IE kullanan ise Explorer-Optimized sayfalar kullanmak ister.İşte bu farklılık doğal olarak Cachlemeyede yansır. Aynı şekilde başta ta dediğimiz gibi kendinize Procuderler yazarak (Code-Behind a yazabileceğiniz gibi Global.asax dosyalarında yazabilirsiniz ) istediğiniz bir şeye göre cachleme yapabilirsiniz.Diğer makalemizde kodların nasıl yazılacağını göstermeye çalışacağız ki bu özelliğin kullanması ise özel bir kod yapısı kullanması gerekmektedir.

*DiskCacheable : Bu alt özellik ise diskinizin önbellenebilir veya olmadığını ayarlamanızı sağlar.Bool değer geriye dönderir.( True/False)

*VaryByHeader : Bu alt özellik ise HTML başlığınızın değişimine göre Cachleme yapılmasını sağlar.

*Location : Bu ise Cachlemenmiş dosyaların nerede saklancağını göstermenizi sağlar.

*NoStore : Depolama yapılıp yapılmayacağını belirtmenizi sağlar. (True/False)

*SqlDependency : Bu alt özellik ise gerçekten en önemli özelliklerden biridir ve Sql bağımlılığını gösterir. Şöyleki DataBase olarak Sql kullandığınız durumda eğer sayfanızı önbellekliyorsanız ve eğer değişen verileriniz (Delete/Update vs gibi) varsa doğal olarak sayfanın en güncel veriyi kullanıcılara göstermesi gerekecektir. Bu durumda bu özelliği kullanarak eğer veritabanınızda bir değişiklik olmuş ise yeni bir cachin oluşturulması sağlanır.

*VaryByControl : Bu ise istediğiniz kontrollere göre önbellekleme yapılmasını sağlar.

Unutmadan söyleyelim bu anlatılanları hepsi OuptPut Caching kapsamına girmektedir.

Fragment Caching : Bazen sayfamızın her tarafını değilde bazı yerlerini önbellekleme ihtiyacı duyarız ki bu bazen çok önemli bir ihtiyaçta olabilir.İşte bu durumlarda kullanılacak olan Fragment Cachingtir.Bunu yapmak aslından çok basittir ve User Controls kullanılmasını gerektirir. Eğer User Controls bilmiyorsanız ilk başta onları incelemenizde yarar var. User Controls oluşturun ve bunu VaryByControl özelliğine bağlayın ve bitti.Unutmadan söyleyelim eğer bu yapıyı kullancaksanız Cachleme zamanı bitmeden Önbelleklediğiniz User Controllerinin (*Kullanıcı Kontroleri) Event’ler (*Olayları) çalışmaz.

İlk başta anlattığımız ama örnek vermediğimiz Fragment cahcing ile devam edelim. Kısaca özetlemek gerekirse bu cachleme yöntemi parça parça cachleme olarakta türkçe bir karşılık getirebiliriz. Bu yöntemde amaç sayfamızın belli bölümlerini önbellekleme yapmak ve böylece istediğimiz doğrultuda performans artışına gitmektir. Unutmadan söylemek gerekki burada ki ince nokta user controls ( kullanıcı kontrolleri ) kullanmak. Tabi ki bu yöntemi uygulama sırasından tek user controls kullanılacak diye bir olay aynı şekilde subsitution kontrolunu kullanarak ta yapabiliriz.

Bu özetlerden sonra konumuza başlayalım. Önceki bölümlerde Directive bölümüne cachleme işlemi yapmak için hangi directive leri yazdığımızı görmüştük şimdi bunlardan yola çıkarak çok basit ve anlaşılır örnekler ile konumuzu inceleyelim.(Unutmadan eğer user controls hakkında bilginiz yoksa bu makaleyi okumada önce ilk başta user controls konusunu incelemenizi şiddetle tavsiye ederim.)

1.) İlk başta Toplama isimli bir user control ü projenize ekleyiniz ve aşağıdaki tasarimi yapınız

2.) Bu tasarımı yaptıktan sonra Kullanıcı Kontrolümüzde Source (kaynak) kısmına gelip şu direktivi ekleyelim sayfamızın üst kısmına
<%@ OutputCache Duration="5" VaryByParam="None" %>

2.) Yukarıda dikkatinizi çeken kısımlardan biri duration yani cache mizin kullanılma süresinini 5 saniye yaptık.
3.) Şimdi bu oluşturduğumuz Kullanıcı Kontrolunün Toplama isimli tuşun olay yordamına şunu yazın ;

protected void btnToplama_Click(object sender, EventArgs e)
{
       lblSonuc.Text = (Convert.ToInt16(txtSayi1.Text) + Convert.ToInt16(txtSayi2.Text)).ToString();
}

Evet bunları yaptıktan sonra artık iki sayıyı toplayan ve sonucunu bize veren bir kullanıcı kontolümüz olmuş oldu. Şimdi ise yapmamı gereken olay bunu Default.aspx sayfamıza eklemek. Ekledikten sonra cachlemeyi daha iyi farkedebilmek amacıyla Default.aspx sayfamıza bır tane label ekleyin ve Page_Load olayına şu kodları yazın :

protected void Page_Load(object sender, EventArgs e)
{
     Label1.Text = DateTime.Now.ToLongTimeString();
}

Evet artık sistemimiz çalışmaya hazırdır ve şimdi derleyiniz. Evet açılan sayfamızda bulunan Kullanıcı Kontrolümüzde sayıları girip Toplama tuşuna basınız. Neler gördünüz ? Tabiki herhangi bişey değişmedi ama Default.aspx sayfasına eklediğiniz Label baktığımzda ise her sayfayı yenilemede değiştiğini göreceksiniz ve 5 saniye sonra ise Kullanıcı Kontrolümüz değişir. Burada önemli noktalardan biri ise Cache in kullanımı sırasında Kullanıcı Kontrolu için yazılan Code-Behind (Toplama.ascx.cs) deki kodun derlenmeyeceğidir. İşte sizde Fragment önbelleklemenin ne kadar kolay olduğunu gördünüz.

Peki ben Default.aspx sayfasına koyduğum Label1 kontrolunun içeriğinin Herhangi bir kontrole göre değişmesini isteseydim yani, Default.aspx sayfamda yeni bir cache oluşturulmasını tetikleyici etkenin benim belirlediğim kontrolümün olmasını isteseydim bunu nasıl yapardım ? Bunun için tek yapmanız gereken olay şu :

Default.aspx sayfasına bır tane örnek olması amacıyla DropDownList ekleyiniz. Ve EnableAutoPostBack özelliğini true yaptıktan sonra 3-4 tane içine item ekleyiniz yada direk aşağıda bulunan kodu Default.aspx sayfanızın Source kısmına ekleyiniz :

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
<asp:ListItem>Visual C#.NET</asp:ListItem>
<asp:ListItem>ASP.NET</asp:ListItem>
<asp:ListItem>CSharpnedir.com</asp:ListItem>
</asp:DropDownList>

Şimdi bunu ekledikten sonra Default.aspx sayfamızda Directive bölümüne şunu eklemeniz gerekecek :

<%@ OutputCache Duration="5" VaryByControl="DropDownList1" %>

Evet şimdi burada önemli olan nokta VaryByControl ( Kontrole göre değiştir ) özelliği. Burada amacımız DropDownList1 kontrolünün değişimine göre önbellekleme yapmak. ( Tabiki hala önceden eklediğimiz ve güncel zamanı gösteren Label1 kontrolümüz duruyor olması gerekir.) ve sayfamızı derleyelim. İlk başta sayfamızı yenileyelim bakalım zamanı gösteren label kontrolünde herhangi bir değişim oluyo mu? Dikkat ettiyseniz her 5 dakikada bir değişim olduğunu göreceksiniz ve şimdide eklemiş olduğumuz DropDownList1 kontrolümüzün seçili olan indexini değiştirin. Ne oldu ? Tabiki sayfamız önbellekleme zamanının bitmesini beklemeden yeniden bir önbelleği oluşturuldu ve güncel sayfa önümüze geldi. İşte bu şekilde herhani bir kontrole göre de nasıl önbellekleme yapabileceğimizi görmüş olduk.

Bu arada değinmeden geçmek istemediğim bölümlerden birisi ise Önceki örneğimizde Kullanıcı Kontrolleri ile çalışırken şöyle bir ifadeninde Kullanıcı Kontrollerinde önbellekle yapma sırasında gözükebileceği :

<%@ OutputCache Duration="5" Shared="true" %>

Peki buradaki Shared özelliği ne işimize yarıyor. İlka başta adından da anlaşılacağı gibi paylaşılmış manasına gelen bu özellik : aynı kullanıcı kontrolünü birden fazla yerde kullanabilirsiniz ve her farklı sayfa için asp.net bu kullanıcı kontrolünün farklı bir önbelleklenmiş kontrolünü oluşturur. Ama eğer biz böyle bir gereksinime ihtiyaç duymuyorsak ve her sayfa için aynı önbelleklenmiş kullanıcı kontrolünü kullanmak istiyorsak o zaman Share özelliğini true yapmamız sorunumuzu giderecektir.

Bu makaleyi beğendin mi? Yorumunu Yaz!







Sizden Gelen Yorumlar:

Yorum Yazın

Erol(22.7.2011 10:26:28)
Çok güzel ve açıklayıcı anlatım olmuş, ben bildeadam da bu kadar net görmedim bunları, tşk. ediyorum.
%33 %0 %67
Katılıyorum Çekimserim Katılmıyorum



Samet(15.6.2010 17:28:35)
eline koluna sağlık

harika bir makale
%62 %12 %25
Katılıyorum Çekimserim Katılmıyorum



Master(15.2.2010 15:30:14)
yalnız biraz daha siteyi açık hale getirebilirdiniz ne bileyim bir programcı olarak bu siteyi mat görüyorum
%31 %8 %62
Katılıyorum Çekimserim Katılmıyorum



Master(15.2.2010 15:29:16)
slm arkadaşlar kolay gelsin
%20 %20 %60
Katılıyorum Çekimserim Katılmıyorum






Copyright© 2001-2019. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.