Merhabalar, bu yazımda sizinle MVC Routing yapısıyla ilgili bilgileri, getirdiği avantajları ve dikkat etmemiz gereken noktaları paylaşmaya çalışacağım.
MVC Routing nedir ve nasıl işler?
URL, web sayfamıza ulaşmak için kullanılan adrestir. Bir nevi bizi istediğimiz sayfaya götüren yoldur. Aslında biz bu yolu kullanarak bir dosyanın fiziki konumuna ulaşmış oluruz.
Örneğin URL’imiz şöyle olsun;
http://www.websitesi.com/dizin/dosya.aspx
Bu URL’e baktığımızda dosya.aspx sayfasının dizin klasörü içerisinde yer aldığını anlayabiliriz. MVC Routing yapısı bize sanal fiziki konumlar oluşturarak bir URL elde etmemizi sağlar. Bu yapıyı kullandığımızda benzer bir URL şöyle görünecektir; http://www.websitesi.com/dizin/dosya
Bu yapıyı en basit haliyle açıklamak gerekirse, “dizin”in Controller ve “dosya”nın da Action olduğunu söyleyebiliriz. Yani, kullanıcılardan gelen istekler ilgili Controller içinde bulunan Action’lara iletilir ve URL’imizde bu şekilde görürüz.
Örnekte olduğu gibi “Photo” adlı Controller altındaki “Display” Action’ını “3” parametresini vererek çağırmış oluyoruz.
Peki biz bunu nerede belirtiyoruz? Bu yönlendirmeleri genel olarak “global.asax.cs” dosyasında RegisterRoutes fonksiyonu içerisinde belirtiriz. Bir Asp.net MVC projesini açtığımızda bize gelen şablonun yapısında da bu yönlendirme kurallarını görebiliriz.
Global.asax.cs dosyasının yapısı
Burada “routes” nesnesi RouteCollection sınıfını temsil eder. MapRoute metodu URL’inizin hangi kurallar dahilinde oluşturulacağı, hangi Controller ve Action’ın çalıştırılacağı bilgisini içeren metoddur.
MVC uygulamasında bir URL ile istek geldiğinde “global.asax.cs” dosyası içerisindeki uygun MapRoute metodu seçilir ve bu MapRoute’da belirlenen kurallara göre Controller içerisindeki ilgili Action devreye girer.
MapRoute yapısı
MapRoute’ta çağırılan HomeController’n yapısı
MVC Routing Yapısının Avantajları
MVC Routing yapısını genel olarak açıklamış olduk, şimdi bize ne gibi faydaları olacağından bahsedelim. Gördüğümüz üzere URL’imiz kendi isimlendirdiğimiz parametrelerden oluşuyor ve bu parametrelerin hangilerinin URL’i oluşturacağını da kendimiz belirliyoruz. Yani istersek Controller ya da Action’dan yalnızca birinin URL’de yer almasını sağlayabiliriz.
Parametrelerin isimlerini sayfa içeriğine uygun olacak şekilde belirlemek sayfalarımızın kolay bulunabilirliğini ve hatırlanabilirliğini sağlayacaktır. URL’in anlamlı olması, arama motorlarında daha üst sıralarda yer almamızı da sağlayacaktır. Böylece sayfamızın ziyaret sayısı artış gösterecektir.
İkinci olarak sayfalarımızın güvenliği için de bu yapıyı kullanmak faydalı olacaktır. Çünkü bizim belirlediğimiz yönlendirme kuralları dışında sayfalarımıza erişmek mümkün olmayacaktır.
Dikkat Etmemiz Gereken Önemli Noktalar
Peki bu yapıyı kullanırken nelere dikkat etmemiz gerekir? Öncelikle, “global.asax.cs” dosyasında Route tanımlarken, Default’tan önce tanımlamaya dikkat etmeliyiz. Yani, yeni yönlendirme kuralımız Default yönlendirilmesinden önce gelmeli. Aksi halde URL’i Default üzerinden yönlendirmeye çalışacaktır ve bu da hataya sebep olacaktır.
İkinci olarak Route tanımlarken parametreler arasında kullandığımız karakterlere dikkat etmeliyiz. Yanda görüldüğü üzere parametreler arasına herhangi bir karakter koymazsak hatalı bir yazım yapmış oluruz.
Son olarak, Route isimlerinin benzersiz olması gerekiyor. Kullanılan bir route ismi tekrarlandığında aşağıdaki gibi bir hata alırız.
Bu bahsettiğimiz noktaları göz önünde bulundurarak yönlendirme kurallarımızı doğru bir şekilde uyguladıktan sonra, URL’i oluşturan üyelerden herhangi biri için yanlış parametreler girildiğinde hata alabiliriz. Bu durumu önlemek için de bazı kısıtlama kurallarını bilmemiz ve uygulamamız gerekir. Örneğin, URL’in çağırdığı Action’ın parametresi tarih formatında olması gerekirken metin girildiğinde hatayla karşılaşırız. Bunu önlemek için parametremize kısıtlama kuralları koymamız gerekir. Bunu yapmanın birkaç yöntemi var, bunlar;
1. Düzenli İfadeler (Regular Expressions) kullanmak
2. Http method kısıtlayıcıları (HttpMethodConstraint) kullanmak
3. Özel kısıtlama kuralları tanımlamak
Bu kısıtlama yöntemlerini de daha sonra detaylandırmaya çalışırız.
Bu makalemizde ASP.NET MVC Routing yapısına bir giriş yaparak Routing hakkında genel bir bilgilendirme yapmış olduk. Şimdilik bu kadar, umarım faydalı olmuştur. Diğer makalelerde görüşmek üzere…
– See more at: http://kodluyorum.com/index.php/asp-net-mvc-routing/#sthash.cqUFzMr6.dpuf