Entity Framework etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Entity Framework etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

29 Ağustos 2018 Çarşamba

Mühendisler Dünyası

MVC'de Model Kavramı

Makaleye başlarken günümüz web uygulamalarının temelinin ilişkisel veritabanları esasında geliştiğini vurgulamam gerekiyor. İlişkisel veritabanları esasında gelişen ORM teknolojileri de uygulamalarla veritabanlarının haberleşmesine ve uygulama geliştirme süreçlerinin hızlanmasına çok büyük katkı yapmıştır. Bu anlamda MVC teknolojisini ORM olmadan hayal etmek imkansızdır. Asp.net MVC de Entity Framework olmadan kaptanı olmayan uçağa benzer.

Buradaki benzetmeler önemli. Proje geliştirme süreci için Asp.Net otomobilse, Asp.Net MVC bir uçaktır. (Uçaktaki hız ve kaliteli yolculuk) Entity Framework olmadan da bu uçağın kaptanı yoktur diyebiliriz. Tabi ki Asp.net MVC ile diğer ORM teknolojileri de kullanılabilir. Ama Microsoft'un da direkt olarak Entity Framework desteği sağlamasının belirli nedenleri vardır değil mi?

İsterseniz küçük bir girişten sonra "Model" kavramını biraz daha detaylandıralım. MVC teknolojisindeki model kavramı bir anlamda tablonun nesneye dönüştürülmüş halidir. Web uygulamalarının da bu nesneleri oluşturma, güncelleme, silme, listeleme veya kompleks işlemleri üzerine kurulduğunu göz önünde bulundurursak MODEL kavramının MVC teknolojisinin en önemli parçası, nesne yapısı olduğunu söyleyebiliriz. Üstlendiği görev ise nesne yapısının kalıplar halinde arayüz ve controller arasında akmasını sağlamaktır.
MVC Model katmanı ile ilgili bilinmesi gereken en önemli nokta tabloları temsil ettiğidir. Bu cümle ilk başta garip gelebilir. Ama MVC projelerinin kullanıldığı projeleri de göz önünde bulundurursak ve genelde veritabanı CRUD işlemlerinin yoğun olarak yapıldığı projelerde kullanıldığını da kabul edersek bu tanımın ne kadar geçerli olduğuna siz de ikna olacaksınız. Özellikle ORM teknolojileri ve Code-First mantığının da proje kalıplarına oturmasıyla tasarladığımız modellerin ilişkisel veritabanlarında tablo olarak oluşturulması, nesne yönelimli programlamanın inheritence özelliği ile tüm tablolarda olan OID, Olusturma Tarihi ve başka özelliklerin Base Object olarak belirlenip kalıtım yapılması MVC Model kullanımının "best practice" yöntemi olarak kabul edilir. Bu hangi ORM teknolojisi kullanıldığından bağımsız olarak Veritabanı tasarımındaki normalizasyon kurallarının uygulanması için de önemli bir noktadır.

Model kavramı ile ilgili başlangıç bilgisi olarak anlatılan konuların yeterli olduğunu düşünüyorum. Teorik bilgilerin de belirli seviyeden sonra tecrübeyle kalıcılaşdırılması gerekiyor. Bu konuların de Temel seviye ve Entity Framework konularında detaylı anlatıldığını belirtmek istiyorum. Bu konuda uzmanlaşmak istiyorsanız menüde yer alan konu başlıklarını detaylıca incelemenizi tavsiye ederim. Önemli bir nokta ise bu konuda uzmanlaşmak sizin diğer proje türlerine de adapte olmanızı kolaylaştıracak.
Okumaya Başla

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.

Okumaya Başla