28 Ağustos 2018 Salı

Mühendisler Dünyası

MVC Nedir?

MVC bir proje tasarım kalıbıdır ve projelerinizin daha düzenli ve belirli bir mantık doğrultusunda geliştirmenize yardımcı olur. Blog temel olarak Asp.Net MVC konusunda odaklansa da bu makale genel olarak MVC kalıbının anlatılması üzerine yoğunlaşmıştır ve hangi dili kullanmanızdan bağımsız olarak bu makalede anlatılanları tüm programlama dillerinde uygulayabilirsiniz.

MVC, günümüz web uygulamaları geliştirme sürecinde önemli yere sahip mimari desendir. MVC'ye alternatif proje tasarım kalıpları da var. Bunlardan MVP, MVVM en çok tercih edilenlerdir. Bu konuları merak ediyorsanız "MVC Alternatifleri" isimli makaleye de göz atmanızı tavsiye ederim.

MVC, Model, View, Controller kelimelerinin baş harflerinden birleşmesinden oluşmuş kelimedir. MVC (Model-View-Controller); Yazılım geliştirme teknolojilerinde kullanılan, Seperation Of Concern(Yazılımda işlev ve özelliklerin soyutlanarak birbirinden ayırılması) prensibini vurgulayan yazılım tasarım desenidir. İlk kez 1979 yılında “Trygve Reenskaug” tarafından tanımlanmıştır.Bir web uygulamasının yapması beklenen üç özellik olan görünüm yani kullanıcı arayüzünü View ifade ederken, kullanıcıların HTTP isteklerini karşılayan ve bu istekleri kullanıyıcı arayüzü ile ilişkilendiren katman ise Controller katmanıdır. Model katmanı ise verilerimiz veya tabloların nesne olarak tutulduğu katmandır ve bu katmanda View katmanı ve Controller katmanı ile ilişkilidir. MVC modelinin temelinde bu üç katman olsa da bir çok profesyonel projeyi incelediğinizde bir çok farklı katmanın da projeye eklendiğini göreceksiniz. Özellikle web uygulaması olarak geliştirilen projenin farklı platformlara taşınma ihtiyacı doğduğunda MVC kalıbı dışına çıkamamak bir çok problemi beraberinde getiri. Bu kısa özetten sonra aşağıdaki MVC model resmini detaylı incelemenizi istiyorum. Tüm katmanların daha iyi anlaşılması için ayrı makaleler halinde de konu anlatılsa da buradaki anlatım konunun temelini teşkil etmektedir.
MVC Nedir?
Resim MVC kalıbını basit bir şekilde anlatabilmek için çizilmiştir. Resmi kısaca maddeler halinde yorumlarsak:
Kullanıcı serverden istekte bulunduğunda bu isteği controller katmanı karşılar.
Controller katmanı View ve Model katmanı ile ilişkilidir ve modele göre düzenlenmiş arayüzü kullanıcıya iletir.
Kullanıcı HTTP metot tipine göre bu view üzerinde değişiklik yapabilir.

ASP.Net MVC’de kullanıcı isteği ilk önce Controller katmanına giderek burada işlenir ve Model kısmına gönderilerek verinin hangi tabloda ya da sınıfta ta işleneceğine karar verilir, ardından model kısmına işlenen veri Controller’a geri gelir ve hangi View ‘da gösterileceği karar verilir ve yanıt olarak kullanıcıya geri döndürülür.

Model, View ve Controller mekanizmalarının her birinin kısa açıklaması aşağıda verilmiştir.

Model: Veritabanına erişim, sınıflar(class),veritabanı ilişkileri gibi data ile ilgili işlemlerin yanısıra, Entity Framework, Linq tol Sql, NHibernate, Ado.Net, XPO gibi frameworkleri içerisinde bulunduran katmandır. Kısacası data(veri) işlemleri bu katmanda gerçekleşir. Asp.Net MVC varsayılan olarak Entity Framework ile birlikte kullanılır ve scaffolding yapısı da Entity Framework'ü destekler. Örneğin veri katmanında XPO kullanacaksanız Devexpress Asp.Net MVC projesi oluşturmak tercih edilen yöntemdir.

View: Bu katman kullanıcının ekranda gördüğü ve kullanıcıların etkileşimde bulunduğu katman olarak tanımlanır. Bu kısımda Html, Css, Javascript arayüz teknolojileri kullanılır. Asp.Net MVC için HTML yerine cshtml ve ya vbhtml yapısı vardır. Bu dosyası uzantısı içinde C# veya Visual Basic kodlarını yazmanızı sağlayan Razor dilini de destekler. Best Practice yöntemlerinde çok da tercig edilmeyen bir yöntem olsa da view içerisinde de kod yazmanıza imkan sağlar.

Controller: Dışarıdan gelen kullanıcı isteklerinin karşılayan, kullanıcıların View vasıtasıyla verdiği komutların, Model işlenmesini sağlayan katmandır. Kısacası Model ile View arasındaki katmandır. Metotlar, değişkenler, fonksiyonlar buradan çağrılarak kullanılır.

Makalenin tamamını okuduysanız "MVC Nedir?" sorusunun yanıtını bulabilmişsinizdir diye düşünüyorum. Makale içinde Model, View ve Controller tanımlamaları kısaca yapılmıştır. Ama tabi ki bu konuların detaylı işlenmesi gerekiyor. Konuya daha iyi başlangıç yapabilmek için ve bu konuların ayrıntılarının da anlaşılmasısının ASP.Net MVC eğitimi için de hayati öneme sahip olmasından dolayı devam eden 3 makale bu konulara ayrılmıştır.

Bu makaleden sonra Model kavramının detaylıca açıklandığı ve Entity Framework konusuna da giriş yapacağınız makaleden konuya devam edebilirsiniz.

Mühendisler Dünyası

Yazar Hakkında: Mühendisler Dünyası -

Bilgisayar Mühendisiyim. Yaklaşık 10 senelik Asp.net MVC tecrübemi de bu blogda yazmaya çalışıyorum. Bu yazıların sizin için faydalı olmasını temenni ediyorum.