26 Eylül 2007

Web Sayfalarını Temel Bir Class'tan Kalıtmak

Nesne yönelimli programlamanın (OOP) en temel yapı taşlarından biride kalıtımdır(inheritance). .NET mimarisinde her yerde olduğu gibi ASP.NET web uygulamalarında da gerek sayfa tiplerinde gerekse kontrollerde kalıtımın getirilerini ve etkilerini önemli derecede görüyoruz. Fakat eğitimlerimde ve kendi çevremde gördüğüm kadarıyla kalıtımın web sayfalarında en güzel uygulanabileceği noktalardan birisini kaçırıyoruz.

Şöyle bir senaryo üzerinden anlatmaya çalışacak olursam; bir projede kullandığımız birçok sayfanın ortak işlevleri olsun. Mesela bu sayfaların tamamında online kullanıcı sayısını görüntülemek isteyebiliriz. Yine sayfanın title bilgisini veritabanından dinamik olarak çekip görüntülemek isteyebiliriz. Normal şartlarda aklımıza gelen ilk yol tüm sayfaların code-behind kısmında bu işlemleri metot-property olarak tek tek yazmak olabilir. Yine bu işleri yapan bir class yazarak her sayfada class'ın nesne örneğini elde ederek bu işlemi instance üzerinden yürütmekte akla gelen bir diğer yol olabilir. Fakat benim bahsetmek istediğim yol bu iki yoldan da daha kolay ve pratik olacaktır.

Bildiğimiz gibi aspx uzantılı sayfalarımız System.Web.UI.Page sınıfından kalıtılarak elde edilir. Eğer kendimiz için bir sayfa prototipi çıkarır ve bunu System.Web.UI.Page sınıfından kalıtılan BasePage isminde bir class olarak oluşturursak, artık Default.aspx gibi bir sayfanın class'ını System.Web.UI.Page yerine BasePage gibi bir class'tan kalıtacak olursak istediğimiz işlemi gerçekleştirmiş olacağız. Anlaşılmadı mı? O zaman örnek kodlara bakalım.

BasePage.cs
public class BasePage: System.Web.UI.Page
{
public int OnlineKullaniciSayisi
{
get {
// Online kullanıcı sayısını bul ve return ile döndür
}
}
public BasePage()
{
// Tüm sayfalar ilk çalıştırıldığında yapılması istenilen değişiklikler
// constructor'da yapılabilir. Örneğin; sayfanın adını çözümle,
// veritabanına git ve sayfanın ziyaret edilme sayısını 1 arttır...
this.Title = "Dinamik oluşan başlık bilgisi...";
}
}

Default.aspx
public partial class Default : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Sitedeki online kullanıcı: " +
this.OnlineKullaniciSayisi.ToString());
}
}

Böylece artık tüm sayfaları BasePage isimli class'tan kalıtarak sayfalar ile ilgili temel ve ortak işlemleri daha kolay yönetebilir hale getirebilirsiniz.

24 Eylül 2007

ASP.NET 2.0 Tema(Theme) Kullanımında Bir Sorun ve Çözümü

Az önce Rick Strahl'ın blogunda okuduğum bir bilgiyi sizlerle paylaşmak istedim. Bildiğiniz gibi bir ASP.NET sayfasında tema(theme) kullandığınızda ilgili App_Themes alt klasörünün içerisindeki css ve skin dosyalarındaki stiller sayfanıza uygulanır. Fakat bu stilleri sayfa içerisine ekstra css kodları ekleyerek değiştirmeye çalıştığınızda, eklenen css kodları maalesef temadan gelen css kodlarını override edemediği için, yeni stilleri sayfaya uygulamada sıkıntı yaşarsınız. Eğer böyle bir sıkıntı ile karşılaşırsanız; eklenecek css kodunu sayfanın form etiketi içerisine yerleştirmek bu sorunu aşmanıza yardımcı olabilecektir.

Rick Strahl'ın bu konuyla ilgili ASP.NET and Styles & CSS Embedding yazısını okumak için buraya tıklayabilirsiniz.

22 Eylül 2007

Ajax View JavaScript Instrumentation Proxy

Microsoft'un web geliştiriciler için sunduğu bu araç ile hazırladığınız web uygulamalarında kullanılan JavaScript kodlarının işleyişini ve performansını test edebilirsiniz. Özellikle AJAX geliştiricilerin ilgisini çekeceğini düşündüğüm kullanışlı bir araç. Uygulama sadece performans ile ilgili istatistikleri değil, aynı zamanda uygulamada karşılaşılan fakat tarayıcı tarafından önemsenmeyen JavaScript hatalarını da listeliyor.

Kullanımı ilk bakışta biraz karışık gibi görünsede, bu linkteki 515 kb.lık bir dosyayı bilgisayarınıza yükleyip, bu linkteki dökümanı da adım adım takip edecek olursanız izleme işlemlerinin sonuçlarına kolay bir şekilde erişebilirsiniz. Unutmadan; programla işiniz bittiğinde Internet Explorer'ın proxy ayarlarını düzeltmeyi unutmayın.

12 Eylül 2007

.NET ile Programlamaya Giriş Seminerine Davetlisiniz

15 Eylül Cumartesi günü İstanbul-Bakırköy'de .NET ile Programlamaya Giriş semineri veriyor olacağım. Temel olarak .NET ortamını tanımak ve bu ortamda hızlı uygulama geliştirmek (Rapid Application Development) üzerine konuşma yapacağım bu seminere özellikle programcılığa yeni başlayan veya başlamayı düşünen arkadaşların katılımlarını bekliyorum.

Ayrıntılı bilgi ve kayıt işlemi için buraya tıklayabilirsiniz.

09 Eylül 2007

PC MAGAZINE'de Yazmaya Başlıyorum

Ekim ayı itibariyle PC MAGAZINE dergisinde yazmaya başlıyorum. Bundan sonra bir aksilik çıkmazsa ASP.NET konusundaki bilgilerimi sizlere PC MAGAZINE dergisi aracılığıyla da ulaştırıyor olacağım. İlk yazımın başlığı ASP.NET AJAX ile Web Sayfaları Geliştirmek olacak.

Bu olayda her türlü yardımlarından ve desteğinden dolayı değerli Ali Rıza BABAOĞLAN'a teşekkürlerimi blogumdan da sunmak isterim.

05 Eylül 2007

INETA Türkiye Toplantısı

Bugün INETA (International .NET Association) Türkiye Toplantısını Microsoft İstanbul'da gerçekleştirdik. nedirTV?com Topluluk Lideri olarak benimde bulunduğum bu toplantıyı INETA MEA Bölge Başkanı Aykut Taşdelen ve INETA Türkiye Başkanı Bülent Sözge'nin katılımlarıyla gerçekleştirdik. Toplantıda INETA'ya üye olan topluluklar olarak önümüzdeki dönemlerde yapabileceğimiz organizasyonlarla ilgili olarak uzunca konuştuk ve tartıştık. Önümüzdeki günlerde eminim ki bizleri oldukça güzel organizasyonlar bekliyor olacak.

04 Eylül 2007

Substitution ile Önbellekleme İşlemleri

ASP.NET 2.0 ile birlikte gelen yeni kontrollerden biri olan Substitution kontrolünü önbellekleme işlemlerinde kullanabiliyoruz. Tamamı önbellekten getirilen bir sayfanın içerisinde sadece belirli bir alanın dinamik şekilde oluşturulması için bu kontrolü kullanabiliriz. Aşağıdaki görsel derste Substitution kontrolünün nasıl kullanabileceğini görebilirsiniz.


ASP.NET 2.0'da Substitution ile Önbellekleme İşlemleri

Türkiye'deki ilk SilverLight Uygulaması: SilverLightTV

Değerli arkadaşım Tayfun AKÇAY'ın sitesinde gördüğüm ve ilgiyle okuduğum haberi sizlerle paylaşmak istedim. Ankara'dan uzun süredir uzak kaldığım için bu tip gelişmelerden ancak 3. şahıs olarak haberdar olabiliyorum. Değerli hocam ODTÜ BÖTE Bölüm Başkanı Prof.Dr. M.Yaşar ÖZDEN'in emekleri ile hazırlanan ve Türkiye'deki ilk SilverLight örneği olma özelliğini taşıyan bu projeye buradaki linkten ulaşabilirsiniz. İlgili sayfada SilverLight plugin'i aracılığıyla 24 saat kesintisiz olarak NTV kanalını canlı yayında izleyebilirsiniz.