3. Ajanda
MVC Nedir?
ASP.NET MVC Nedir?
View Engine ve Razor kavramları.
Model – View – Controller
Avantaj ve Dezavantajları
Entity Framework Girişi
Model First ve Database First
Nuget Paketleri Yönetimi
4. MVC Nedir?
• 1979 yılında Trygve Reenskaug
• Model View Controller
• Katmanlı Mimari
6. Avantaj ve Dezavantajalrı
Avantajları
• Temiz HTML
• Katmanlı mimari
• Test Unit
• View Engine desteği
• JavaScript kütüphaneleri ile uyum
• İsteğe bağlı URL haritası
• SEO dostu URL
• View State ve PostBack yok
• Temel ASP.NET özelliklerini destekler
• Sayfa boyutları
• Mobil Template
Dezavantajları
• Event kullanılmıyor
• Temel HTML , CSS, JS bilgisi
• 3.parti kütüphanelerin uyumu
• Web Forms dan doğrudan
upgrade
• View State ve PostBack yok
7. View Engine ve Razor Kavramları
View Engine
• Html sayfalarının içerisine, sunucu
taraflı kodlar gömmemizi sağlayan
(C#, Vb.Net gibi), bu kodları
istemciye gönderilmeden ayrıştırıp,
gerekli şekilde işleyen, görüntüleme
ve işleme motorudur.
Razor
Razor sistemi Aspx yapısınıdan sonra,
kodlamayı çok kolaylaştıran, çok
sadeleştiren ve çok hızlandıran bir
yapıdır.
@ Operatörü
@DateTime.Now
8. Model – View - Controller
Model
Model, MVC’de projenin iş mantığının (business logic)
oluşturulduğu bölümdür. İş mantığıyla beraber
doğrulama (validation) ve veri erişim (data access)
işlemleri de bu bölümde gerçekleştirilmektedir.
9. Model – View - Controller
View
View, MVC’de projenin arayüzlerinin
oluşturulduğu bölümdür. Bu
bölümde projenin kullanıcılara
sunulacak olan HTML dosyaları yer
almaktadır. Projenin geliştirildiği
yazılım dillerine göre dosya
uzantıları da değişebilmektedir.
Projelerin büyüklüğüne göre dikkat
edilmesi gereken bir nokta ise,
klasörlemedir.
10. Model – View - Controller
Controller
Controller, MVC’de projenin iç süreçlerini
kontrol eden bölümdür. Bu bölümde View
ile Model arasındaki bağlantı kurulur.
Kullanıcılardan gelen istekler (request)
Controller’larda değerlendirilir, isteğin
detayına göre hangi işlemlerin yapılacağı ve
kullanıcıya hangi View’ın döneceği
(response) belirtilir.
11. Entity Framework Giriş
Entity Framework Nedir ?
Entity Framework Microsoft tarafından geliştirilen ve yazılım
geliştiricilerin katı sql sorguları yazmalarını ortadan kaldırarak
bir ORM (Object Relational Mapping) imkanı sağlayan
framework'tür.
12. Entity Framework Giriş
Database First Nedir ?
Varolan bir database’i uygulamaya uyarlama işlemine Database
First yaklaşımı denir.
13. Entity Framework Giriş
Model First Nedir ?
Uygulamada var olan nesneleri de database’e uyarlama işlemine
de Model First yaklaşımı denir.
14. Nuget Paketleri Yönetimi
Nuget, Visual Studio projemiz için eklemek
istediğimiz 3. parti paket ve dll’leri
(AjaxControlToolkit, Jquery, Facebook, log4net vb.)
bizim yerimize otomatik olarak ekleyen ücretsiz
paket yöneticisidir.
15. Demo
MVC Proje Oluşturma
Nuget Paket Yönetimi
Database Bağlantısı
Database First Kullanımı
Model First Kullanımı
Controller İşlemleri ( ActionResult, PartialViewResult, JsonResult)
View Model İşlemleri
View İşlemleri ( Layout Düzenleme – Master Pages)
View İşlemleri ( Edit, Detail, List, Create , Custom View)
Ortaya atıldığı ilk yıllarda adı thing-model-view-controller di sonrada bugünkü halini aldı. Önemli bir mimari patterndir.
MVC’de bir uygulamanın kullanıcı arayüzü 3 ana bölüme ayrılır:
Model: Data işlemlerinin ve iş kurallarının tanımlanır, class’lar oluşturulur
View: Kullanıcı arayüzünün nasıl gösterileceği tanımlanır
Controller: Kullanıcı arayüzündeki işlemler ile data ve/veya spesifik katman arasındaki iletişim sağlanır.
MVC tipik bir framework olmasına rağmen, özellikle bir mimaridir. Bunun anlamı spesifik class hiyerarşi veya object-oriented bir dil olmasa bile implement edilebilir.
2002 yılında ilk defa yayınladığında(release), ASP.NET ve Web Form’ları bir bütün gibi ve aynı şey olarak düşünülüyordu. ASP.NET daima 2 katmanı destekledi:
System.Web.UI:Web Form katmanı, server kontrolleri, view state vb…
System.Web:modüller, handler’lar, HTTP Stack buna benzer
ASP.NET içerisinde geliştirilmiş hazır server kontrollerini sürükle-bırak yöntemi ile sayfalarımıza atıp, otomatik olarak bizim için oluşturulmuş HTML çıktılarına sahip oluruz. Çalışmasını istediğimiz sayfadaki işlemleri handler’lar, moduller vasıtasıyla çalıştırırız. ASP.NET yerleşik olarak bir patern’e sahip değildir. Bu yazılım dünyası için büyük bir eksiklikti. ASP.NET MVC 2007 yılında duyuruluncaya kadar bu etkinlik hissedildi.
MVC patern’i web uygulamalarında sıklıkla kullanıyor, ASP.NET MVC içerisindeki kullanımı genel hatlarıyla:
Models: Kullanacağınız class’lar bulunur. Bu katmanda database’e erişim yollarınız ve metotlarınız yer almaktadır. Bu katman data erişim katmanı(access layer) olarak Entity Framework, NHibernate, ADO.NET ile database üzerinde veri işlemleri yapılması için kullanılır.
View: Dinamik olarak HTML kodları generate edilir.
Controller: View ve Model arasında ki iletişimi sağlar. Kullanıcı girişlerini yanıtlar, model ile haberleşir, hangi view’in render edileceğine karar verir.
Şubat 2007 yılında, Microsoft’tan Scott Guthrie(“ScottGu”) tarafından ABD’nin doğu yakasındaki bir konferansa giderken uçakta ASP.NET MVC’nin çekirdeğini/temelini tasarlamıştır. Bir kaç yüz satır kod’dan oluşan basit bir uygulamaydı fakat salondakileri heyecanlandıran ve potansiyeli yüksek bir teknoloji olduğunu o zamandan hissettirmiştir.
Release olana kadar 9 preview release olmuştur. Sonunda ASP.NET MVC 1.0, 13 Mart 2009 yılında release oldu.
Model, MVC’de projenin iş mantığının (business logic) oluşturulduğu bölümdür.
İş mantığıyla beraber doğrulama (validation) ve veri erişim (data access) işlemleri de bu bölümde gerçekleştirilmektedir.
Model tek katmandan oluşabileceği gibi kendi içinde birden fazla katmandan da oluşabilir.
İç yapılandırma projenin büyüklüğü ile yazılım geliştiricinin planlamasına kalmış bir durumdur.
Eğer proje büyük çaplı ise modeli birden çok katmana ayırmak projenin yönetimi açısından faydalı olacaktır.
Eğer bir web projesi geliştiriyorsanız, projenin View’larının yer aldığı klasörlerinin hiyerarşisi, ilerleyen dönemlerde karmaşıklığa sebep olmaması için dikkatli yapılmalıdır.
Kimi yazılım geliştiriciler web projelerinde HTML dosyaları ile Javascript, CSS ve resim dosyalarını aynı klasör içinde barındırmaktadır.
Ufak bir ayrıntı gibi görünse de projenin ilerleyen dönemlerinde ciddi problemler oluşturmaktadır.
View’ın bir görevi de, kullanıcılardan alınan istekleri controller’a iletmektir.
Piyasada bir çok ORM Framework'leri bulunmaktadır. Örnek olarak; DataObjects.Net, NHibernate, OpenAccess, SubSonic
Entity framework ile birlikte LINQ (Language Integrated Query) sorgularını kullanarak nesneler üzerinde güçlü bir sorgulama imkanına sahip oluruz.
Entity framework'ün aslında temel amacı uygulama geliştiricinin data işlemleri ile çok haşır neşir olmadan uygulama tarafına odaklanmasını sağlamaktır.