Webiner duyurusunu yapmakta biraz geç kaldım, ama çok da geç kalmış sayılmam, 6 webinerimiz daha var :)
Bu ay gerçekten dolu dolu bir programımız var. Ben yoğun iş temposu, INETA NEXT seminerleri ve zaten dolu bir webiner programı olması nedeniyle bu ay webiner düzenlemiyorum. Programda;
- Workflow Foundation 4.0 (dün akşam yapıldı)
- SEO - Arama Motoru Optimizasyonu (bu ayın en ilgi çekici konusu sanırsam)
- Paralel Programlama
- WCF RIA Servisleri (Burak Hocam bu ay webinerleri üçledi, maşallah diyelim)
- BI - İş Zekası (Osman Hocam BI konusunun gurularındandır. Bu ay itibariyle onun deneyimlerini dinlemek harika olacak)
- SQL Server 2008 ile İş Zekası
- XNA Game Studio ile 3D Oyun Hazırlama
gibi konularda gerçekleşecek toplam 7 webiner var. Webiner programına erişmek ve facebook ajandanıza kaydetmek için bu linki kullanabilirsiniz.
ASP.NET 3.5 ile gelen veri kontrolü ListView oldukça esnek bir yapı sunmaktadır. GridView ile yapılabilen tüm işlemleri gerçekleştirebildiğimiz bu kontrolde GridView’a ek olarak Insert işlemlerini de yapabiliyoruz. Diğer yandan oluşacak HTML çıktıda tamamen bizim elimizde, yani istediğimiz şekilde HTML çıktıyı oluşturabiliyoruz. GridView’da bu tarz bir işlemi yapmak neredeyse imkansızdı.
ListView’ın bir diğer avantajı ise sayfalama(paging) işlemlerini QueryString üzerinden yapıyor olabilmemiz! ListView kontrolü sayfalama işlemlerini DataPager adındaki bir kontrol üzerinde yapmaktadır(DataPager’ın da ASP.NET 3.5 ile geldiğini belirtmek gerekir). Normal şekilde oluşturulan ListView kontrolü sayfalama işlemlerini DataPager içerisindeki LinkButton’lar ile yapar; yani PostBack işlemi sonucunda çağrılan JavaScript fonksiyonları sayfalamanın yapılmasına yardımcı olur. Dolayısıyla sayfanın URL’sinde herhangi bir değişiklik olmaz. Eğer sayfalama işleminin QueryString üzerinde taşınan SayfaNo gibi bir değer ile UrunListele.aspx?SayfaNo=3 şeklinde gerçekleşmesini istiyorsak yapmamız gereken tek şey DataPager kontrolünün QueryStringField özelliğine SayfaNo gibi bir değer atamak olacaktır. Yine elimiz değmişken şu özellikten de bahsedeyim; DataPager’ın PageSize özelliğinden de bir sayfada kaç kayıt görüntüleneceğini belirleyebilirsiniz. Aşağıda DataPager üzerinde yapılan değişiklikler ve örnek bir ekran çıktısı yer alıyor.
<asp:DataPager ID="DataPager1" runat="server" QueryStringField="SayfaNo" PageSize="15">
...
</asp:DataPager>
Kullanıcıların QueryString üzerinden istediği sayfalara gidebilmesi ve arama motoru iyileştirmesi(SEO) açısından oldukça önemli ve kullanışlı bir ipucu aslında ;)
SEO(Search Engine Optimization) yani arama motoru iyileştirmesi son yıllarda internet dünyasında tanınmak ve para kazanmak isteyen çoğu kişinin ağzından düşürmediği bir kavram. Arama motorlarında üst sıralara çıkmak, adsense reklamlarından iyi gelirler elde etmek başlı başına bir sektör haline bile geldi! Hatta sırf bu işten ayda 1.000$’ın üzerinde gelir elde eden tanıdıklarım bile var(İmreniyorum sizlere arkadaşlar). Geçtiğimiz haftalarda Ineta Next Hit’teki ASP.NET 4.0 sunumuma hazırlanırken sayfa yönlendirme ile ilgili ASP.NET uygulamalarına has güzel bir ipucu keşfettim. Aslında Response.Redirect() metodunun tarayıcılara(web browser) HTTP 302 durum kodunu gönderdiğini ASP.NET’le ilk tanıştığım zamanlarda bile biliyordum, ama bu metotla beraber tarayıcıya nasıl HTTP 301 durum kodu göndeririz ve arama motorları tarafından nasıl daha fazla seviliriz, işte bu idi yeni keşfettiğim nokta:)
Response.Redirect programatik olarak sayfa yönlendirme işlemleri yapmamızı sağlıyor bildiğiniz gibi, ancak ilginç bir ayrıntısı da var, o an talepte bulunan istemciye HTTP 302(yani Temporary Redirect) bilgisini gönderiyor. Tabi ki bu mesajı gören arama motoru boot’ları da; “demek ki bu sayfaya geçici olarak geldim, yakında bu sayfayı belki de bulamayacağım, önemsiz bir sayfa, gerilere at!” der. Halbuki işin aslı bu kalıcı bir sayfa ve arama motorlarının da bunu böyle bilmesi gerekir. Eğer gönderilen cevabın içeriğine HTTP 301(Moved Permanently) bilgisini ekletebilirsek süper olacak. Aşağıda bu işi nasıl yapabileceğimizi görebilirsiniz. Tabi ki Response.Redirect() kullanmadan;
Response.StatusCode = 301;
Response.StatusDescription = "Moved Permanently";
Response.AddHeader("Location", "Default2.aspx");
Yukarıdaki üç satırı beğenmeyen varsa güzel bir haber vereyim; ASP.NET 4.0 ile gelecek olan Response.RedirectPermanent() metodu bu üç satırın işini görecek. Yani bu metot yönlendirmeyi yaparak istemciye HTTP 301 durum kodu gönderecek. Küçük ama hoş bir yenilik olacağa benziyor.