Aracılığıyla paylaş


ASP.NET MVC’ye Genel Bakış

Microsoft tarafından

ASP.NET MVC uygulaması ile ASP.NET Web Forms uygulamaları arasındaki farklar hakkında bilgi edinin. ASP.NET MVC uygulamasının ne zaman derlendiğinden nasıl karar vereceğinizi öğrenin.

Model-View-Controller (MVC) mimari deseni, bir uygulamayı üç ana bileşene ayırır: model, görünüm ve denetleyici. ASP.NET MVC çerçevesi, MVC tabanlı Web uygulamaları oluşturmak için ASP.NET Web Forms düzenine bir alternatif sağlar. ASP.NET MVC çerçevesi, (Web Forms tabanlı uygulamalarda olduğu gibi) ana sayfalar ve üyelik tabanlı kimlik doğrulaması gibi mevcut ASP.NET özellikleriyle tümleştirilen hafif, yüksek düzeyde test edilebilir bir sunu çerçevesidir. MVC çerçevesi System.Web.Mvc ad alanında tanımlanır ve System.Web ad alanının temel, desteklenen bir parçasıdır.

MVC, birçok geliştiricinin aşina olduğu standart bir tasarım desenidir. Bazı Web uygulaması türleri MVC çerçevesinden yararlanacaktır. Diğerleri de Web Forms ve geri göndermeleri temel alan geleneksel ASP.NET uygulama desenini kullanmaya devam edecektir. Diğer Web uygulaması türleri iki yaklaşımı birleştirir; her iki yaklaşım da diğerini dışlamaz.

MVC çerçevesi aşağıdaki bileşenleri içerir:

Parametre değeri bekleyen bir denetleyici eylemi çağırma

Şekil 01: Parametre değeri bekleyen bir denetleyici eylemi çağırma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

  • Modeller. Model nesneleri, uygulamanın veri etki alanı için mantığı uygulayan parçalarıdır. Model nesneleri genellikle bir veritabanında model durumunu alır ve depolar. Örneğin, bir Product nesnesi veritabanından bilgi alabilir, üzerinde çalışabilir ve ardından güncelleştirilmiş bilgileri SQL Server'daki bir Products tablosuna geri yazabilir.

Küçük uygulamalarda model genellikle fiziksel bir ayrım yerine kavramsal bir ayrımdır. Örneğin, uygulama yalnızca bir veri kümesini okur ve görünüme gönderirse, uygulamanın fiziksel model katmanı ve ilişkili sınıfları yoktur. Bu durumda, veri kümesi bir model nesnesinin rolünü üstlenir.

  • Görünümler. Görünümler, uygulamanın kullanıcı arabirimini (UI) görüntüleyen bileşenlerdir. Bu kullanıcı arabirimi genellikle model verilerinden oluşturulur. Products nesnesinin geçerli durumuna göre metin kutularını, açılan listeleri ve onay kutularını görüntüleyen Products tablosunun düzenleme görünümü buna örnek olarak gösterilebilir.

  • Denetleyiciler. Denetleyiciler, kullanıcı etkileşimini işleyen, modelle çalışan ve sonuçta kullanıcı arabirimini görüntüleyen bir görünüm seçen bileşenlerdir. MVC uygulamasında görünüm yalnızca bilgileri görüntüler; denetleyici, kullanıcı girişini ve etkileşimini işler ve yanıtlar. Örneğin, denetleyici sorgu dizesi değerlerini işler ve bu değerleri modele geçirir ve bu da değerleri kullanarak veritabanını sorgular.

MVC deseni, uygulamanın farklı yönlerini (giriş mantığı, iş mantığı ve UI mantığı) ayırırken, bu öğeler arasında gevşek bir bağlantı sağlayan uygulamalar oluşturmanıza yardımcı olur. Desen, her tür mantığın uygulamada nerede bulunması gerektiğini belirtir. Kullanıcı arabirimi mantığı görünüme aittir. Giriş mantığı denetleyiciye aittir. İş mantığı modele aittir. Bu ayrım, bir uygulama oluştururken karmaşıklığı yönetmenize yardımcı olur çünkü uygulamanın tek seferde bir yönüne odaklanmanızı sağlar. Örneğin, iş mantığına bağlı kalmadan görünüme odaklanabilirsiniz.

Karmaşıklığı yönetmeye ek olarak, MVC deseni uygulamaları test etmek Web Forms tabanlı ASP.NET Web uygulamasını test etmekten daha kolay hale getirir. Örneğin, Web Forms tabanlı bir ASP.NET Web uygulamasında, tek bir sınıf hem çıkışı görüntülemek hem de kullanıcı girişine yanıt vermek için kullanılır. Web Forms tabanlı ASP.NET uygulamaları için otomatik testler yazmak karmaşık olabilir, çünkü tek bir sayfayı test etmek için sayfa sınıfını, tüm alt denetimlerini ve uygulamadaki diğer bağımlı sınıfların örneğini oluşturmanız gerekir. Sayfayı çalıştırmak için bu kadar çok sınıf örneği oluşturulacağından, yalnızca uygulamanın tek tek bölümlerine odaklanan testler yazmak zor olabilir. Bu nedenle Web Forms tabanlı ASP.NET uygulamalarına yönelik testlerin uygulanması, MVC uygulamasındaki testlerden daha zor olabilir. Ayrıca, Web Forms tabanlı bir ASP.NET uygulamasındaki testler bir Web sunucusu gerektirir. MVC çerçevesi bileşenleri ayırır ve arabirimleri yoğun bir şekilde kullanır ve bu sayede tek tek bileşenleri çerçevenin geri kalanından yalıtılarak test etmek mümkün olur.

MVC uygulamasının üç ana bileşeni arasındaki gevşek bağlantı paralel geliştirmeyi de teşvik eder. Örneğin, bir geliştirici görünüm üzerinde çalışabilir, ikinci bir geliştirici denetleyici mantığı üzerinde çalışabilir ve üçüncü bir geliştirici modeldeki iş mantığına odaklanabilir.

MVC Uygulamasının Ne Zaman Oluşturulacağını Belirleme

ASP.NET MVC çerçevesini veya ASP.NET Web Forms modelini kullanarak bir Web uygulamasının uygulanıp uygulanmayacağını dikkatle düşünmeniz gerekir. MVC çerçevesi Web Forms modelinin yerini almaz; Web uygulamaları için iki çerçeveyi de kullanabilirsiniz. (Web Forms tabanlı uygulamalarınız varsa, bunlar her zaman olduğu gibi çalışmaya devam ederler.)

Belirli bir Web sitesi için MVC çerçevesini veya Web Forms modelini kullanmaya karar vermeden önce, her yaklaşımın avantajlarını tartın.

MVC-Based Web Uygulamasının Avantajları

ASP.NET MVC çerçevesi aşağıdaki avantajları sunar:

  • Bir uygulamayı modele, görünüme ve denetleyiciye bölerek karmaşıklığı yönetmeyi kolaylaştırır.
  • Görünüm durumu veya sunucu tabanlı formlar kullanmaz. Bu, MVC çerçevesini bir uygulamanın davranışı üzerinde tam denetim sahibi olmak isteyen geliştiriciler için ideal hale getirir.
  • Tek bir denetleyici aracılığıyla Web uygulaması isteklerini işleyen bir Ön Denetleyici deseni kullanır. Bu, zengin yönlendirme altyapısını destekleyen bir uygulama tasarlamanızı sağlar. Daha fazla bilgi için bkz. Ön Denetleyici.
  • Test temelli geliştirme (TDD) için daha iyi destek sağlar.
  • Uygulama davranışı üzerinde yüksek düzeyde denetime ihtiyaç duyan büyük geliştirici ekipleri ve Web tasarımcıları tarafından desteklenen Web uygulamaları için iyi sonuç verir.

Web Forms-Based Web Uygulamasının Avantajları

Web Forms tabanlı çerçeve aşağıdaki avantajları sunar:

  • HTTP üzerinden durumu koruyan ve iş kolu Web uygulaması geliştirmenin avantajlarından yararlanan bir olay modelini destekler. Web Forms tabanlı uygulama, yüzlerce sunucu denetiminde desteklenen onlarca olay sağlar.
  • Tek tek sayfalara işlevsellik ekleyen bir Sayfa Denetleyicisi deseni kullanır. Daha fazla bilgi için bkz. Sayfa Denetleyicisi.
  • Durum bilgilerini yönetmeyi kolaylaştırabilecek görünüm durumu veya sunucu tabanlı formlar kullanır.
  • Hızlı uygulama geliştirme için kullanılabilecek çok sayıda bileşenden yararlanmak isteyen küçük Web geliştiricileri ve tasarımcı ekipleri için iyi çalışır.
  • Bileşenler ( Page sınıfı, denetimler vb.) sıkı bir şekilde tümleştirildiğinden ve genellikle MVC modeline göre daha az kod gerektirdiğinden, uygulama geliştirme için daha az karmaşıktır.

ASP.NET MVC Çerçevesi özellikleri

ASP.NET MVC çerçevesi aşağıdaki özellikleri sağlar:

  • Varsayılan olarak uygulama görevlerinin ayrılması (giriş mantığı, iş mantığı ve UI mantığı), test edilebilirlik ve test temelli geliştirme (TDD). MVC çerçevesindeki tüm temel anlaşmalar arabirim tabanlıdır ve uygulamadaki gerçek nesnelerin davranışını taklit eden sanal nesneler olan sahte nesneler kullanılarak test edilebilir. Denetleyicilerini ASP.NET bir işlemde çalıştırmak zorunda kalmadan uygulamayı birim test edebilirsiniz, bu da birim testini hızlı ve esnek hale getirir. .NET Framework uyumlu herhangi bir birim testi çerçevesini kullanabilirsiniz.
  • Genişletilebilir ve takılabilir bir çerçeve. ASP.NET MVC çerçevesinin bileşenleri kolayca değiştirilebilmeleri veya özelleştirilebilmeleri için tasarlanmıştır. Kendi görünüm altyapınızı, URL yönlendirme ilkenizi, eylem yöntemi parametre serileştirmenizi ve diğer bileşenleri takabilirsiniz. ASP.NET MVC çerçevesi, Bağımlılık Ekleme (DI) ve Denetimin Ters Çevrilmesi (IOC) kapsayıcı modellerinin kullanımını da destekler. DI, nesnenin kendisini oluşturmak için sınıfına güvenmek yerine nesneleri bir sınıfa eklemenizi sağlar. IOC, bir nesne başka bir nesne gerektiriyorsa, ilk nesnelerin ikinci nesneyi yapılandırma dosyası gibi bir dış kaynaktan alması gerektiğini belirtir. Bu, testi kolaylaştırır.
  • Anlaşılır ve aranabilir URL'leri olan uygulamalar oluşturmanıza olanak tanıyan güçlü bir URL eşleme bileşeni. URL'lerin dosya adı uzantıları içermesi gerekmez ve arama motoru iyileştirmesi (SEO) ve temsili durum aktarımı (REST) adresleme için iyi çalışan URL adlandırma düzenlerini destekleyecek şekilde tasarlanmıştır.
  • Mevcut ASP.NET sayfasında (.aspx dosyaları), kullanıcı denetiminde (.ascx dosyaları) ve ana sayfa (.ana dosyalar) işaretleme dosyalarında işaretlemeyi görüntüleme şablonları olarak kullanma desteği. İç içe geçmiş ana sayfalar, satır içi ifadeler (<%= %>), bildirim temelli sunucu denetimleri, şablonlar, veri bağlama, yerelleştirme gibi ASP.NET MVC çerçevesiyle var olan ASP.NET özelliklerini kullanabilirsiniz.
  • Mevcut ASP.NET özellikleri için destek. ASP.NET MVC form kimlik doğrulaması ve Windows kimlik doğrulaması, URL yetkilendirmesi, üyelik ve roller, çıktı ve veri önbelleğe alma, oturum ve profil durumu yönetimi, sistem durumu izleme, yapılandırma sistemi ve sağlayıcı mimarisi gibi özellikleri kullanmanıza olanak tanır.