Basit Dilde Açıklanan MVC Sayfa Yaşam Döngüsü
Yayınlanan: 2021-11-26Bu makale, MVC uygulamasının yaşam döngüsüne ve uygulamanın, uygulamanın bileşenlerinden geçerek bir isteği nasıl işlediğine odaklanacaktır. Bir MVC yaşam döngüsünde iki yaşam döngüsü mevcuttur . Bu iki yaşam döngüsü:
- Uygulama yaşam döngüsü
- İstek yaşam döngüsü.
İçindekiler
Uygulama yaşam döngüsü
Uygulama yaşam döngüsü genellikle uygulama sürecinin çalışmaya başladığı zaman anlamına gelir. MVC uygulama yaşam döngüsünü belirtmek için uygulamanın başlangıcı ve bitişi işaretlenir.
istek yaşam döngüsü
İstek yaşam döngüsü, uygulama bir HTTP isteğini işlediğinde gerçekleşen olaylar dizisi anlamına gelir. Yönlendirme, MVC'nin herhangi bir uygulamasını başlatmak için giriş noktasıdır. ASP.NET platformuna bir istek yapıldığında, yönlendirme modülü aracılığıyla isteğin nasıl ele alınacağına karar verilir. Modül terimi, koda işlevsellik eklemek için kullanılan .NET bileşenleri anlamına gelir. Uygulamada tanımlanan ilgili rotalara gelen URL'yi eşleştirmek, yönlendirme modüllerinin sorumluluğundadır. Her rotayla, MVC çerçevesine giriş noktasını işaretleyen bir rota işleyicisi ilişkilendirilir.
MVC çerçevesi, rota verilerinin, istekleri daha fazla ele alacak denetleyicilere dönüştürülmesinden sorumludur. Denetleyicinin oluşturulması tamamlandıktan sonra bir sonraki adım harekete geçmektir. Bu, Denetleyiciyi çağırmak için bir eylem yöntemi seçen eylem çağrıcısı bileşeni aracılığıyla yapılır.
Eylem sonucu için hazırlık yapıldıktan sonraki adım, sonucun yürütülmesidir. Sonuç uygulamasından sonuç için bir ayırma adımı oluşturulur. Bir görünüm türü sonucu için, uygulama görünüm motorunu arayacak ve görünümün oluşturulmasına yardımcı olacak ve bulacaktır. Sonuç bir görünüm değilse, eylemin yürütülmesi kendi başına gerçekleşecektir. Orijinal HTTP isteğine yönelik asıl yanıtı oluşturan sonuç yürütmesidir.
Bileşenlerin çoğu, geliştiriciler tarafından, isteği işlemek için kullanıldıkları bilinmektedir. Çoğu durumda, eylemlerle ilgili yöntemler ve denetleyiciler üzerinde çalışılmaktadır. Ayrıca, farklı eylem sonuçları ve görüşler üzerinde çalışılmaktadır. Ancak MVC çerçevesinde başka bileşenler de var. İstek işlenirken istek akışının farklı bileşenler veya HTTP modül rolü ve işleyici üzerinden nasıl yürütüldüğü konusunda akıllarda birçok soru olabilir. MVC çerçevesi bir web geliştirme çerçevesi olduğundan, çerçevenin MVC boru hattında HHTP modülleri ve HTTP işleyicileri olmalıdır.
MVC sayfa yaşam döngüsünde Denetleyici ve eylem yöntemleri dışında birçok bileşen bulunur .
UrlRoutingModule
Bu bir tür HTTP modülüdür. Bir istek ilk yapıldığında, UrlRoutingModule aracılığıyla durdurulur. Bu modülde, MVC uygulamasının isteği işleme alıp almayacağına karar verilir. UrlRoutingModule, eşleşen ilk rotayı seçer.
İstek, UrlRoutingModule aracılığıyla MVC uygulamasında bulunan rotalarla nasıl eşleştirilir?
Global.asax'tan çağrılan RegisterRoutes yöntemine bakıldığında rotaların RouteCollection'ına eklenen rotalar görülebiliyordu. Yöntemin çağrılması, global.asax'ın application_start'ındaki olay işleyicisinden yapılır.
Kaynak
RouteHandler'daki rotalar nasıl tanımlanır?
Rotalar, maproute yönteminde de görülebileceği gibi uzatma yöntemleri olarak tanımlanır. Rota işleyicisi tüm rotalarla ilişkilidir.
UrlRoutingModule yöntemi aşağıdaki şekilde tanımlanır.
Kaynak
Yukarıdaki açıklama sayesinde, UrlRoutingModule'nin uygulamada tanımlanan tüm rotaları bildiği bilinebilir. Bu nedenle, uygulamadaki istek ile doğru rota eşleştirilebilir.
Unutulmaması gereken önemli bir nokta, UrlRoutingModule modülünün ilk eşleşen rotanın seçilmesine dahil olmasıdır. Bu nedenle, eşleşme tespit edildiğinde tarama işlemi durur. Bu aşamada gerçekleşen olayı özetleyecek olursak, route işleyicisi, U RLRoutingModule üzerinden routelara bağlanır.
Rota İşleyicisi
Maproute yöntemi aracılığıyla, rotalar MvcRouteHandler örneklerine eklenir. IRouteHandler arabirimi, MvcRouteHandler aracılığıyla uygulanır.
Bu nedenle, MvcRouteHandler nesnesi, uygulamanın HTTPHandler'ı olan MvcRouteHandler öğesine bir başvuru elde etmek için kullanılır.
MvcRouteHandler'ın oluşturulması, PostResolveRequestCache() yönteminin çağrılmasını gerektirir. Bu yöntem PostResolveRequestCache() aşağıdaki şekilde tanımlanabilir:
Kaynak
Bu nedenle, PostResolveRequestCache() yönteminde aşağıdaki olaylar gerçekleşir.
- RouteCollection özelliğinde bir GetRouteData() yöntemi bulunur. Yöntem çağrılır ve HttpContext'ten geçirilir.
- RouteData nesnesi, GetRouteData() yöntemi aracılığıyla döndürülür.
- bir RouteHandler özelliği, geçerli olan istek için IRouteHandler işleyicisini, yani MvcRouteHandler'ı döndüren routeData tarafından bulunur.
- G etHttpHandler() yöntemi , MvcHandler için bir başvuru döndüren MvcRouteHandler.
- Denetimler daha sonra MvcHandler örneğine devredilir.
Mvcİşleyici
MvcHandler, HTTP'nin normal bir işleyicisidir. HTTP'nin bir işleyicisi olduğundan, ProcessRequest() yönteminin uygulanması gerçekleştirilir. Bu yöntem ProcessRequest() şu şekilde tanımlanabilir:
Kaynak
ProcessRequest() yöntemi, aşağıdaki görüntüde tanımlandığı gibi ProcessRequestInit() yöntemini çağırmak için kullanılır:
Kaynak
ProcessRequest() yönteminde aşağıdaki olaylar gerçekleşir.
- ControllerFactory, ProcessRequestInit() yönteminin çağrılmasıyla oluşturulur.
- ControllerFactory, Controller'ı oluşturur.
- Controller'ın Execute() metodu çağrılır.
KontrolörFabrika
ControllerFactory'nin ProcessRequest() yöntemiyle elde edildiği gözlemlenebilir. ControllerFactory daha sonra Controller nesnesinin nesnesini oluşturmak için kullanılır. IControllerFactory arabirimi, Denetleyici fabrikası tarafından uygulanır.
VARSAYILAN OLARAK, MVC çerçevesi ControllerFactory oluşturmak için ControllerBuilder kullanıldığında DefaultControllerFactory tipini oluşturur.
Aşağıdaki kod satırı, ProcessRequestInit() yönteminde ControllerFactory öğesini oluşturur.
Kaynak
kontrolör
MvcHandler'ın ProcessRequest() yönteminde ControllerFactory'de Controller nesnesinin oluşturulduğu gözlemlendi. Oluşturulan Denetleyici, çerçeve tarafından gerçekleştirilecek eylemlerin yöntemlerini içerir. Tarayıcıda bir URL isteği yapıldığında, eylemler için yöntemin bir çağrısı vardır. Denetleyiciler, IControlle arabiriminin açık bir uygulaması olmayacak şekilde oluşturulur. Controller sınıfı , çeşitli özellikler sağlayan denetleyicileri oluşturmak için kullanılır . Controller sınıfı, aşağıda gösterilen kodda tanımlandığı gibi “ControllerBase” olarak adlandırılan başka bir Controller sınıfını devralabilir:
Kaynak
ActionInvoker, Denetleyicideki eylemlerin yöntemlerini çağırmak için kullanılır.
Denetleyici, denetleyici fabrikası aracılığıyla oluşturulduktan sonra aşağıdaki olaylar gerçekleşir:
- Controllerbase'in Execute() yöntemi çağrılıyor.
- ExecuteCore() yöntemi, soyut olarak bildirilen ve ardından Controller sınıfı aracılığıyla tanımlanan Execute() yöntemi tarafından çağrılır.
- Eylem adı, Controller sınıfı tarafından ExecuteCore() yöntemi aracılığıyla RouteData'dan alınır.
- ActionInvoker'ın InvokeAction() yöntemi, ExecuteCore() yöntemi tarafından çağrılır.
ActionInvoker
Eylemlerin seçimi için kullanılır.
ActionInvoker sınıfının, bir eylem yöntemi bulmayı ve ardından Denetleyicide eylem yöntemini çağırmayı içeren bazı önemli sorumlulukları vardır.
ActionInvoker'ın InvokeAction() yöntemi çağrıldığında meydana gelen olaylar şunlardır:
- Controller ile ilgili bilgiler ActionInvoker ve gerçekleştirmek için gerekli olan eylem tarafından alınmalıdır.
- Tanımlayıcı nesnesi bu bilgiyi sağlar.
- Denetleyici adı ve eylem adı, eylemin ve Denetleyicinin tanımlayıcı sınıfı tarafından sağlanır.
- ActionMethod çağrılıyor.
EylemSonucu
ActionResult, soyut sınıfın bir türüdür. Soyut bir yöntem olduğundan, farklı alt sınıflar tarafından sağlanan ExecuteResult() yönteminin farklı uygulamaları vardır.
ActionResult'da aşağıdaki olaylar gerçekleşir
- ActionFilters'ın OnActionExecuting yöntemlerinin bir çağrısı var.
- Yöntem eyleminin çağrılması.
- ActionFilters'ın OnActionExecuted yöntemlerinin çağrılması.
- ActionMethod'dan ActionResult dönüşü var
- ActionResult'un ExecuteResult() yöntemini çağırma.
GörünümMotoru
Uygulamaların çoğu, dönüş türü olarak ViewResult'u kullanır. ViewEngine aracılığıyla istemciye bir görünüm işlenir. Bu görünümden, HTML oluşturulabilir. HTML, ViewEngine aracılığıyla görünümden oluşturulur.
Sonuçlar
Uygulamadaki her bileşenin rolünü anlamak çok önemli bir adımdır. Bu şekilde bileşenler ve çalışma şekilleri arasındaki bağlantılar anlaşılabilir. Deneyimli bir geliştirici olmak istiyorsanız, becerilerinizde ustalaşmak bir yoldur. Uygulama ve yazılım geliştirme alanında size sertifika ve uzmanlık eğitimi verecek olan upGrad'ın Online Yazılım Mühendisliği Kurslarına göz atabilirsiniz. Kurs, hem erkek hem de kadın çalışan profesyoneller için tasarlanmıştır ve IIIT-B sertifikasına sahiptir ve onların Mezun Statülerini alacaksınız.
MVC uygulandığında uygulama üç katmana ayrılır: Veri katmanı veya Model, UI veya Görünüm ve Denetleyici. MVC'nin her katmanının farklı bir işlevi vardır. İlk olarak, UI veya View katmanı, kullanıcı arayüzüdür. Kullanıcılar ve uygulama arasındaki ana arayüzdür. Kullanıcı girdilerini almaktan ve sonuçları sunmaktan sorumludur. Ardından denetleyici, görünüm katmanındaki tüm bileşenlere bağlanır ve kullanıcı girdisini işler, model katmanına veri gönderir ve sonucu kullanıcıya geri gönderir. Model katmanı, verilerin depolandığı yerdir. Verilerin kontrolünden sorumludur. Ek olarak, bir model katmanı, verileri depolamaya okumak ve yazmaktan da sorumludur. ASP.NET MVC çerçevesi, ASP.NET Oturum Durumunun gücünü kullanır. Oturum durumu, ASP.NET platformunda yerleşik olarak bulunan bir web hizmetidir. Belirli bir oturumla ilişkili tüm nesnelerin, verilerin ve diğer bilgilerin korunmasından sorumludur. SessionState nesnesi, oturum durumunun değerlerini korur. Ayrıca Session nesnesinin değerlerini doldurmaktan ve korumaktan da sorumludur. Oturum nesnesi, oturum durumuna ağ geçidi görevi görür. Bu, SessionState nesnesinin bir özelliğidir ve oturum durumunun değerlerini depolamak ve almak için kullanılan şeydir. MVC'deki filtreler, kontrolör ve model arasında bulunan ve kullanıcı girdisini doğrulamak veya modelin çıktısını değiştirmek için kullanılabilen filtrelerdir. Aşağıdakiler MVC'deki filtrelerden bazılarıdır. 1. Doğrulama filtreleri - Doğrulama filtreleri, kullanıcı girişini doğrulamaya yardımcı olur. 2. Eylem filtreleri - Eylem filtreleri, modelin çıktılarını değiştirmeye yardımcı olur. 3. Model filtreleri - Model filtreleri, modelin çıktılarını değiştirmeye yardımcı olur. 4. Çıktı filtreleri - Çıktı filtreleri, modelin çıktısını değiştirmek için kullanılır.MVC'nin sayfa yaşam döngüsünü açıklayabilir misiniz?
MVC'de oturumları nasıl sürdürebiliriz?
MVC'de kaç çeşit filtre vardır?