ASP.Net MVC 3 Yenilikleri

Değişen insan ihtiyaçlarına karşın, teknolojide değişmektedir. Geçtiğimiz dönemlerde ASP.Net WebForm ile uygulama geliştirme gerçekliyorduk. Bugün artan uygulama geliştirme taleplerine bağlı olarak, Web uygulamaların MVC(Model-View-Controller) tasarım deseni ile geliştirme yapıyoruz. Bu tarz uygulamaların, geliştirme aşamasında daha kolay test edilebilir hale getirmektedir. Söz konusu tasarım desenini ASP.Net platformunda gerçekleştirmek istiyor isek, karşımıza ASP.Net MVC Framework ‘ ü çıkmaktadır.

image

ASP.Net MVC Framework ‘ ü diğer .Net teknolojilerinde de olduğu gibi iki sürümün de kendini bulmuştur. Bu sürüm ile yeni geliştirilecek olan Web uygulamalarında stratejileri değişmesine neden oldu. Artık geliştirilen uygulamanın performansı, bakımı ve birçok neden dolayı kullanılmaya başlanmıştı. Somut olarak ASP.Net MVC Framework’ ün cazip gelmesinin sebebi ise;

ASP.Net MVC ile Web uygulaması geliştirmek için Server kontrolleri bilinmesi yerine Web ‘in temel dilleri olan HTML,CSS ve JavaScript dillerini bilinmesi ve ek olarak ise olay odaklı sistemleri anlamak yeterlindir.

ASP.Net MVC Framework ‘ün ile getirdikleri yönünde bakacak olur isek; Controller kavramını kullanımı sayesinde, geliştirilen Web uygulamasının test kodu yazılması, daha kaliteli uygulama geliştirebilmesini sağlanmıştır. ASP.Net MVC ’nin getirdiklerini kullanıcı tarafından bakacak olur isek; temiz içerik ve anlamlı adres(Routing) üretimidir. Bu özellikler uygulama içerisinde sunulan ürün ya da bilgilerinin arama motorları(Bing,Google) daha kolay bulabilmesi, hazırlanan içeriğin hızlı cevap vermesini sağlamaktadır.

ASP.Net MVC Framework’ün uygulamalarımıza katığı bu özelliklerin yanında yeni sürümü ile de birçok kolaylık sunmaktadır. Bu yenilikler aşağıdaki gibi sıralama yapabiliriz.

  • Razor View Engine
  • Multi View Engine
  • Dependency Injection kullanım kolaylığı
  • Dynamic View ve ViewModel
  • Validation Impovemets
  • Session Yönetimi
  • Global Action Filters
  • JavaScript ve AJAX yenlikleri

ASP.Net MVC Framework ’ün yeni sürümü olan ASP.Net MVC 3 ile ilgili yenilikler hakkındaki “ASP.Net MVC 3 Notları“ isimli seri ile inceleyeceğiz. Şimdi yenilikler hakkında kısa bilgilere verelim.

Razor View Engine

ASP.Net MVC 3, önceki sürümlerinde farklı olarak yeni bir View Engine yapısı ile gelmektedir. ASP.Net MVC ‘nin önce ki sürümlerinde Saprk View Engine ya da NHaml gibi View Engine yapıları ile View tasarımlarımız daha kolay bir şekilde gerçekleştir biliyorduk. Razor View Engine ile ASP.Net MVC 3 bütünleşik olarak geldiği için ve .Net 4 desteği ile ASP.Net MVC uygulamalarını daha kolay ve hızlı geliştirebiliyoruz.

Multi View Engine

ASP.Net MVC 3 yeniliklerinde bir olan Razor View Engine gibi ASP.Net MVC uygulamalarında View tasarlama işlemlerimizi kullanabileceğimiz birden fazla View Engine bulunmaktadır. Multi View Engine yeniliği sayesinde, uygulama projemize şablon dahil etme aşamasına farklı View Engine kullanmayı amaçlamaktadır.

Dependency Injection kullanım kolaylığı

ASP.Net MVC 2 ve önceki sürümlerinde MvcTurbine ve benzeri araçları kullanarak ASP.Net MVC uygulamalarımızda IoC uygulamalarımızı gerçekleştiriyorduk. ASP.Net MVC 3 sürümü ile ise, çözümü kendi içerisinde oluşturmayı amaçlayan Ioc ara yüz(interface) nesneleri bulunmaktadır.

Dynamic View ve ViewModel

Bu özellik ile .Net 4 yeniklerinde biri olan Dynamic Type özelliğini ASP.Net MVC içerisinde yer alması anlamına gelmektedir. Bu sayede sanki öyle bir özellik varmışçasına, söz konusu özelliği kullanabilmemize izin vermektedir. .Net 4 ile C# herhangi bir alanda hazırlana Dynamic işlemde olduğu gibi söz konusu tanımlama çağırıldığında hata olup olmadığı durumu anlaşılmaktadır.

Validation Impovemets

ASP.Net 4 ile birlikte gelene yeniliklerden bir tanesidir. Bu şekliyle ASP.Net 4 üzerine gelene gelişmiş doğrulama yapısını, ASP.Net MVC 3 birlikte kullanabilmekteyiz.

Session Yönetimi(SessionState)

Geliştirmiş olduğumuz ASP.Net MVC projesinin içerisinde bulunan Controller nesnesini Session içerisinde veri taşıması istemeye biliriz. Bu gibi durumlar için geliştirilmişi Attribute yapısıdır.

Global Action Filters

Bazı durumlarda geliştirmiş olduğumuz ASP.Net MVC uygulamasının, uygulama yapılan her istemi denetlemek ya da uygulamalardan yapılan istemler sırasında gerçekleşecek işlemler olabilir. Bu gibi durumlar için geliştirilmiş bir yapıdır.

JavaScript ve AJAX yenlikleri

Standart bir ASP.Net MVC şablonu oluşturduğumuz varsayılan olarak projemize Script klasörü gelmektedir. Bu klasör içerisinde ise, ASP.Net AJAX ve JQuery ile ilgili JavaScirpt dosyaları gelmektedir. ASP.Net MVC 3 sürümü ile AJAX konusunda daha iyileştirilmiş bir şekilde kullanıcılarına sunulmaktadır.

ASP.Net MVC 3 ile gelen yeniliklere kısa incelemelerde bulunduk. Şimdi bazı yenilikler uygulamalı olarak incelemeye başlayalım. Bu işlem için standart ASP.Net MVC 3 şablonu açalım. İlk örneğimizde ASP.Net MVC 3 dokümanlarında pek geçmeyen bir yenilik olan kaynak hataları (404) problemi ile ilgili çözümleri inceleyelim.

image

Kaynak hataları ile ilgili olarak WebForm çalışmalarımızda Web yapılandırma dosyası sayesinde problemi çözüme ulaştırılabiliyordu. ASP.Net MVC 3 uygulamaları gelindiğinde, söz konusu durumlar ile ilgili daha ayrıntılı çözümler ile problemi yönetebiliyoruz. ASP.Net MVC 3 çözümü ile ilgili olarak oluşturmuş olduğumuz HomeController sınıfını içerisine girelim. HomeController sınıfı içerisinde varsayılan olarak eklenen ActionResult fonksiyonlarında birinin (About) erişim belirtecini private olarak değiştirelim(Bu sayede herhangi bir View isteminde ActionResult erişimi olmayacaktır.).

Senaryo ile ilgili şartları hazırladık. Bu aşmadan sonra ASP.Net MVC 3 çözümü nasıl gerçekleştiğini görelim. Bunu için Controller içerisine girelim. Controller nesnesi üzerinden gelene HttpNotFound fonksiyonun override edelim.

///  Uygulama içerisinde 404 yani kaynak bulunamadığı 
///  durumlarda bu fonksiyon tetiklendir.
protected override HttpNotFoundResult HttpNotFound(string
                                             statusDescription)
{
    return base.HttpNotFound(statusDescription);
}

Hazırladığımız senaryoyu test edelim. Gerçekleştirdiğimiz bu test işleminde eğer OnException fonksiyonu override edilmiş ise önce bu fonksiyonu gelecektir. Hata yönetiminde diğer adım olarak ise, yaşanan durumun bir kaynak hatası(404) ile ilgili olarak HttpNotFound fonksiyonuna gelinecektir.

Konu almak istediğim bir diğer uygulama ise Dynamic View ve ViewModel özelliğidir. Söz konusu yenilik .Net 4 ile .Net programlama alanına girmiştir. Bu özellikler sayesinde, ASP.Net MVC içerisinde sanki ViewData üzerinde kullandığımız property(özellik) varmış gibi kodlama yapmamızı sağlamaktadır. Bu işlem Controller tarafında olduğu gibi View tarafında da kullanılabilmektedir.

/// Dynamic View ve ViewModel 
public class HomeController : Controller
{
    public ActionResult Index()
    {
        /// ASP.Net MVC 1-2 sürümlerinde kullandığım
        ViewData["Message"] = "ASP.NET MVC 3 Notları";

        /// ASP.Net MVC 3 sürümünde kullandığımız
        ViewBag.Message = "ASP.NET MVC 3 Notları";

        return View();
    }
}

Söz konusu durumu ASP.Net MVC 3 sürümü öncesi olarak düşünüldüğünde ise ViewData nesnesi ile (hastable gibi) View tarafına verilerimizi taşımaktaydık. Ama Dynamic kullanım, diğer kullanım alanlarında da olduğu gibi çağırıldığında denetimi yapılmaktadır. Bu durumda yapılan yazım yanlışları ya da unutulan tanımlamalar gibi durumlarda geliştiricilere hatalar üretmektedir.

Bu makale ile ASP.Net MVC 3 yeniliklerini anlatan bir diziyi başlatmış olduk. Konu ile ilgili sorularınızı info@ibrahimatay.org eposta adresine yönetebilirsiniz.

IBRAHIM ATAY

Leave a Reply

Your email address will not be published. Required fields are marked *