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