14 Temmuz 2014 Pazartesi

Bir ASP.NET MVC Web Uygulamasının Çalışma Süreci

Bir ASP.NET MVC Web uygulamasına gelen istekler, öncelikle bir HTTP modülü olan UrlRoutingModule nesnesine iletilirler. Bu modül, gelen isteği parse eder ve rota seçimini gerçekleştirir. UrlRoutineModule nesnesi mevcut istekle eşleşen ilk rota nesnesini seçer (Buradaki rota objesi, RouteBase sınıfını implement eder ve bir Route sınıfının instance'ıdır.). Eğer hiçbir rota eşleşmiyorsa, UrlRoutingModule nesnesi hiçbir şey yapmaz ve gelen isteğin ASP.NET veya IIS istek işleyicisine gitmesine izin verir.


UrlRoutingModule nesnesi, seçilen Route nesnesini kullanarak Route nesnesi ile ilişkili IRouteHandler nesnesini elde eder. Genellikle bu nesne, MvcRouteHandler sınıfının bir instance'ıdır. IRouteHandler instance'ı, IHttpHandler nesnesini oluşturur ve bunu IHttpContext nesnesine iletir. Varsayılan olarak IHttpHandler instance'ı, MVCHandler nesnesidir. MvcHandler nesnesi devamında isteği işleyecek uygun controller'ı seçer.

Not: Bir MVC Web uygulaması IIS 7.0 altında çalışıyorsa, MVC projeleri için dosya isim uzantısına ihtiyaç yoktur. Şayet IIS 6.0'daki handler, .mvc dosya ismi uzantısını ASP.NET ISAPI DLL'i ile eşleştirmenizi gerektirir.

Modül ve handler, MVC framework'ü için bir sınır kapısı niteliğindedirler. Aşağıdaki eylemleri gerçekleştirirler:
  • Bir MVC Web uygulamasında uygun controller'ı seçerler,
  • Mevcut controller'ın instance'ını elde ederler,
  • Controller'ın Execute metodunu çalıştırırlar.

Aşağıdaki tabloda bir MVC Web projesinin çalıştırma adımları listelenmiştir.

Aşamanın adı Aşama ile ilgili ayrıntılar
Uygulama için ilk isteğin alınması Global.asax dosyasındaki Route nesneleri RouteTable nesnesine eklenmiştir.
Yönlendirmenin gerçekleştirilmesi UrlRoutingModule modülü, RouteTable collection'ı içerisindeki ilk eşleşen Route nesnesini kullanarak RouteData nesnesini oluşturur. RouteData nesnesi devamında RequestContext (IHttpContext) nesnesini yaratmak için kullanılır.
MVC request handler'ının oluşturulması MvcRouteHandler nesnesi, MvcHandler sınıfının bir instance'ını oluşturur ve RequestContext instance'ına iletir.
Controller'ın oluşturulması MvcHandler nesnesi, controller nesnesini kullanarak IControllerFactory nesnesini tanımlamak için RequestContext instance'ını kullanır.
Controller'ın çalıştırılması MvcHandler nesnesi, controller'ın Execute metodunu çalıştırır.
Eylemin başlatılması Controller'lar, Controller sınıfından türetilmişlerdir. Bu yüzden controller'ların bu eylemi gerçekleştirebilmesi için, ilgili controller ile ilişkili ControllerActionInvoker nesnesi, controller sınıfının hangi eylem metodunun çalıştırılacağına karar verir, ve sonra da o metodu çalıştırır.
Sonucun yürütülmesi Genellikle bir eylem metodu kullanıcı girdisini alabilir, uygun cevap verisini hazırlayabilir, ve devamında sonuç türünden geriye dönen sonucu çalıştırabilir. Dahili sonuç türleri aşağıdakileri içerecek şekilde çalıştırılabilir: ViewResult (bir view'ı işleyen ve en çok kullanılan result türüdür), RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, ve EmptyResult.

Daha fazla bilgi için: lennybacon.com
Kaynaklar: ASP.NET

Hiç yorum yok:

Yorum Gönder