Her ne kadar günümüz web geliştirme mimarisindeki popülarite Asp.Net MVC ve MVC Core tarafında yoğunlaşmış olsa da Web Forms ile uygulama geliştiren veya proje devamlılığı sebebiyle geliştirmelerine devam eden okurlarımız için bu bölümde Asp.Net Web Forms mimarisindeki Url Routing mekanizmasından bahsedeceğim.
Url Routing Nedir?
Asp.Net Web Forms mimarisinde QueryString yapıları sıklıkla kullanılmaktadır. QueryString yapısı ile URL üzerinden veri aktarımı yapılmak suretiyle sayfalar arası etkileşim sağlanmaktadır. QueryString ile ilgili yazımı buradan inceleyebilirsiniz. QueryString kullanımının dezavantajı olarak ifade edilmese bile göze hoş gelmeyen bir yanı bulunur. Bu da tahmin edeceğiniz üzere linklerdeki karmaşık ifadeler ve görülmemesi gereken ID türü değerlerdir. Bunları ortadan kaldırmak, kullanıcıya ve en önemlisi tarayıcıya daha kararlı ve kurallı linkler sunmak için URL Routing mekanizması yardımımıza koşmaktadır. SEO uyumluluğu ve Google için anlamlı ifadeler oluşturulması bakımından tarayıcıya daha hoş görünen linkler ifadesini kullanıyorum.
Url Routing Oluşturulması
URL Routing mekanizmasını tamamlanmış bir web forms uygulamasına istenilen bir aşamada uyarlamak mümkündür. Elbette tavsiye edilen projeyi geliştirirken eklenen her bir sayfa (web form) için bir taraftan da link yapısını Url Routing ile ayarlamaktır. URL Routing mekanizmasını çalıştırabilmek için öncelikle proje içerisinde eğer yoksa Global.asax eklememiz gerekiyor. Global.asax üzerinde proje çalıştırıldığında, durdurulduğunda, uygulama açıldığında, şöyle olduğunda böyle olduğunda gibi çeşitli metotlar bulunmaktadır. Application_Start isimli önceden oluşturulmuş olan Global.asax metodu içerisinde Routing ile ilgili işlemleri çağıracağız. Ayrıca sitelerde ziyaretçi sayısı, online ziyaretçi gibi işlemleri de bu metot ile kontrol edebiliriz.
Şimdi Url Routing işlemini gerçekleştirebilmek için Global.asax dosyasında bir adet metot oluşturalım. Metot ismine RouteYapilandir adını verebiliriz.
Resim-1
Resim-1’de yer alan metodu incelediğimizde RouteCollection parametresine ait MapPageRoute metodu ile URL şablolanlarının tanımlandığı görülmektedir. Bu tanımlamadaki şablon aşağıdaki gibi bir dizilime sahiptir.
Route.MapPageRoute(“Şablonun Adı”, “URL Şablonu”, “Şablonun Uygulanacağı Sayfa”);
Şablonu Global.asax dosyasında oluşturduktan hemen sonra yapılması gereken işlem yukarıda da bahsettiğim gibi Application_Start metodunda bu işlemi çalışır hale getirmek. Bunun için Global.asax dosyasındaki metotlardan en üst sırada bulunan Application_Start metoduna Resim-2’de yer alan kodlama yapılmalıdır.
Resim-2
RouteYapilandir isimli metot RouteCollection tipinden parametre alır. Yani yönlendirme işlemlerini RouteCollection tipi sayesinde yapabilmekteyiz. Bu işlemde yapıldıktan sonra geriye sayfaların çağırıldığı yerlerde linkleri düzenlemek kalıyor. Yani örneğin menü item’ları içerisinde Default.aspx yazan href alanında artık Giriş yazmalıdır. Çünkü route şablonu ile tüm sayfalara yeni bir takma isim verdik ve artık ilgili yerlerde bu yeni adlarıyla çağırmamız gerekiyor.
Web sitelerinde site hangi dil ile geliştirilmiş olursa olsun uzantıların .html olduğunu görmüş olabilirsiniz. Eğer böyle bir kullanım istiyorsanız öncelikle Asp.Net uygulamasının IIS tarafından .html uzantısının engellenmiş olup olmadığını kontrol etmelisiniz. IIS tarafında .html uzantılarını kullanabilmek için web.config dosyası içerisinde resim-3’de ki gibi bir düzenleme yapabilir veya benzer bir düzenleme ile yalnızca şu uzantıları çalıştır da diyebiliriz. Asp.Net temel güvenlik önlemlerini anlattığım bölüme buradan ulaşarak uzantıları yönetmekle ilgili bilgilerinizi tazeleyebilirsiniz.
Resim-3
Asp.Net uygulamasının .html uzantısı ile sorunsuz çalıştığından emin olduktan sonra URL Routing mekanizmasında değişiklik yapmadan yalnızca linkleri belirttiğimiz kısımlarda linklerin sonuna .html eklemek yeterli olacaktır. Örneğin Defaul.aspx yerine Giriş olarak route ettiğimiz yapı için Giriş.html olarak düzenleyebilirsiniz. Yazılım dünyasında her ne kadar artık destekleniyor olsa da değişken tanımlarından diğer tüm delegasyonlarda Türkçe karakter kullanmak hoş karşılanmayan bir alışkanlıktır. Türkçe karakterlerin sorun teşkil etmeyeceğini gösterebilmek için Giriş route yapısında Türkçe karakter kullandım fakat yine de ID, Kategori gibi değerlerinde geldiği QueryString linklerinde Türkçe karakter kullanılmaması iyi olacaktır.
Bu bölümde Asp.Net Web Forms uygulamalarında URL Routing mekanizmasını incelemiş olduk. Sonraki bölümlerde görüşmek dileğiyle.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs: asp.net, asp.net url routing, asp.net route table, asp.net web forms url routing, asp.net web forms url yönlendirme