Makale Özeti

ASP.NET web uygulamalarında HttpBrowserCapabilities sınıfı aracılığıyla istemcinin tarayıcısı ile ilgili bilgiler elde edebilmekte ve tarayıcı bazlı işlemler yapabilmekteyiz. Makalemizde, bu sınıfı incelemeye çalışacağız.

Makale

Web sayfamıza bağlanan istemcilerin kullandıkları tarayıcıların (web browser) tipi, versiyonu, eklentileri, özellikleri farklı olabilmekte ve bu farklılıklar bazı durumlarda sorunlar oluşturabilmektedir. Örneğin bir tarayıcıda düzgün ve sorunsuz görüntülenen bir sayfa, başka bir tarayıcıda hatalı olarak görüntülenebilmektedir. Bu noktada uygulama geliştirilirken tarayıcı bazlı olarak bazı kontrollerin yapılması ve buna göre de istemciye uygun içeriklerin gönderilmesi gerekebilir.

Bir web uygulaması geliştirilirken, bazı durumlarda istemcinin tarayıcısı hakkında bilgiler elde etmek ve bu bilgiler doğrultusunda işlemler yapılmak istenilebilir. ASP.NET web uygulamalarında bu tip işlemleri kolay bir şekilde yapmamızı sağlayan HttpBrowserCapabilities sınıfı bulunmaktadır. HttpBrowserCapabilities sınıfından oluşturacağımız bir nesne örneği ile sayfamıza bağlanan ziyaretçinin kullandığı tarayıcı ile ilgili bilgilere erişebilir ve bu bilgilere göre farklı sayfalara yönlendirme yapmak, farklı içerikler görüntülemek gibi işlemler yapabiliriz. Yine sitemize bağlanan ziyaretçilerin tarayıcılarının istatistiklerini veritabanında tutmak için de bu sınıfı etkili bir şekilde kullanabiliriz.

HttpBrowserCapabilities sınıfı, HttpCapabilitiesBase sınıfından türetilmiştir ve System.Web isim alanı (namespace) altında yer almaktadır. Oluşturulacak nesne örneği ile Request.Browser özelliği üzerinden işlemler yapılabilmektedir. Nesne üzerinden erişeceğimiz özellik (property) ve metotlar aracılığıyla tarayıcıya ait bilgileri alabilir, bu bilgilere göre işlemler yapabiliriz.

Nesne örneği oluştururken kullanıcının tarayıcı bilgilerini elde edebilmek için;

HttpBrowserCapabilities tarayici = Request.Browser;

şeklinde bir tanımlama yapılmalıdır. Oluşturulan HttpBrowserCapabilities nesne örneği üzerinden erişebileceğimiz bazı önemli üyeler şunlardır:

Özellik Adı İşlevi
ActiveXControls Tarayıcının ActiveX desteği olup olmadığı hakkında bilgi verir. (bool tipinde değer döndürür)
Beta Tarayıcının beta sürümü olup olmadığı hakkında bilgi verir. (bool tipinde değer döndürür)
Browser Varolan tarayıcı bilgilerini verir. (string tipinde değer döndürür)
ClrVersion İstemcide kurulu olan .NET Framework sürümünü getirir. (string değere dönüştürülerek kullanılabilir)
Cookies Tarayıcının cookie desteği olup olmadığını verir.  (bool tipinde değer döndürür)
Crawler Bağlanan tarayıcının crawler (Google, Yahoo gibi site indeksleyicileri) olup olmadığını verir. (bool tipinde değer döndürür)
EcmaScriptVersion Tarayıcının desteklediği ECMA script versiyonunu verir. (string değere dönüştürülerek kullanılabilir)
Frames Tarayıcının HTML frame desteği olup olmadığını verir.  (bool tipinde değer döndürür)
IsMobileDevice Tarayıcının mobil bir cihaz üzerinde çalışan tarayıcı olup olmadığını verir.  (bool tipinde değer döndürür)
JavaScript
VBScript
JavaScript özelliği JavaScript desteğinin olup olmadığını, VBScript ise VBScript desteği olup olmadığını verir. (bool tipinde değer döndürür)
JScriptVersion Tarayıcının desteklediği Jscript versiyonunu verir. (string değere dönüştürülerek kullanılabilir)
Platform Ziyaretçinin bulunduğu platform ile ilgili bilgileri verir. (string tipinde değer döndürür)
SupportsCallback Tarayıcının Client Script CallBack desteği olup olmadığını verir.  (bool tipinde değer döndürür)
Type Tarayıcının ismini ve tipini verir. IE7 gibi. (string tipinde değer döndürür)
Version Tarayıcının versiyon numarasını verir. (bool tipinde değer döndürür)
Win16 İstemcinin Win16 tabanlı bir bilgisayarda çalışıp çalışmadığını verir. (bool tipinde değer döndürür)
Win32 İstemcinin Win32 tabanlı bir bilgisayarda çalışıp çalışmadığını verir. (bool tipinde değer döndürür)

HttpBrowserCapabilities'in özelliklerini daha yakından inceleyebilmek için örnek bir uygulama geliştirelim. Açacağımız ASP.NET web uygulaması içerisinde sayfamızın Page_Load olayı için aşağıdaki kodları Default.aspx.cs dosyasına ekleyelim.

protected void Page_Load(object sender, EventArgs e)
{
    // İstemcinin tarayıcısı ile ilgili bilgilere ulaşabilmek için HttpBrowserCapabilities nesnesini
    // aynı tipten değer getiren Request.Browser özelliği aracılığıyla oluşturmalıyız.

    HttpBrowserCapabilities tarayici = Request.Browser;

    Response.Write("Tarayıcı beta sürüm mü? : " + tarayici.Beta + "<br>");
    Response.Write("Tarayıcının cookie desteği var mı? : " + tarayici.Cookies + "<br>");
    Response.Write("Tarayıcı mıbil bir cihazda mı çalışıyor? : " + tarayici.IsMobileDevice + "<br>");
    Response.Write("Tarayıcının Ecma script versiyon numarası : " + tarayici.EcmaScriptVersion + "<br>");
    Response.Write("Tarayıcının çalıştığı işletim sistemi : " + tarayici.Platform + "<br>");
    Response.Write("Tarayıcının tipi: " + tarayici.Type + "<br>");

}

Uygulamayı çalıştırdığımızda kendi tarayıcılarımız ve çalıştığımız sistem ile ilgili olarak aşağıdaki gibi bir sonuç elde edeceğiz.


Tarayıcı ile ilgili bilgilere ulaşmak

NOT: Tarayıcı ile ilgili bilgilere erişmek için HttpBrowserCapabilities sınıfından bir nesne örneği oluşturmak zorunlu değildir. tarayici isimli nesne örneği üzerinden noktaya basarak sınıf üyelerine ulaşabildiğimiz gibi Request.Browser özelliği aracılığı ile de aynı üyelere erişip işlemler yapabiliriz.


Nesne örneği veya Request.Browser özelliği üzerinden tarayıcı özelliklerine ulaşabiliriz

Günümüzde üçüncü parti yazılım olarak bir çok site web sayfalarını ziyaret eden kullanıcılar ile ilgili bazı bilgileri yukarıda kullandığımız gibi farklı yöntemlerle tutmaktadır. Kendi web uygulamamızda da HttpBrowserCapabilities sınıfını kullanarak site ziyaretçilerinin tarayıcıları ile ilgili istatistikleri tutabiliriz. Yine bu özellikleri kullanarak tarayıcının tipine göre farklı içerikler sunabilir, farklı sayfalara yönlendirme işlemleri yapabilir. Örneğin, sitemiz ziyaret edecek kullanıcıların masaüstü bilgisayarlardaki tarayıcıları kullanabilecekleri gibi, mobil bir bilgisayardan da erişebilecekleri olası bir durumdur. Mobil tarayıcılar ise normal bir tarayıcı kadar işlevsel olmadıkları için sayfalarımızdaki içeriklerin bazılarını görüntüleyemez veya hatalı görüntüler. Böyle bir durum karşısında mobil bir tarayıcı için farklı sayfalar tasarlamak ve gelen kullanıcıları bu sayfalara yönlendirmek isteyebiliriz. Aşağıdaki gibi hazırlanan bir projenin anasayfası içerisinde gerekli kontroller ve yönlendirmeler yapılırsa istenildiği gibi kullanıcının doğru içeriğe erişmesi sağlanabilir. Yine kullanıcının tarayıcısının Cookie, JavaScript gibi sitenin işleyişi açısından önem taşıyan bileşenleri desteklememesi durumunda, site düzgün bir şekilde kullanılamayacağı için kullanıcıya bilgilendirici mesajlar verilebilir.


Tarayıcının özelliklerine göre kullanıcıya farklı içerikler sunabiliriz.

Bu makalede HttpBrowserCapabilities aracılığıyla sitemizi ziyaret eden kullanıcıların tarayıcıları ile ilgili bilgilere nasıl ulaşabileceğimizi ve bu bilgileri kullanarak ne gibi işlemler yapabileceğimizi gördük. Bir başka makalede görüşmek dileğiyle.

Uğur UMUTLUOĞLU
www.nedirtv.com