bugün

mvc

asp.net'in alternatifi değildir. asp.net ikiye ayrılır, biri asp.net web forms, diğeri mvc.

web forms aslında web sayfaları desktop uygulamalarındaki gibi oluşturmak için geliştirilen zımbırtı. yani desktop uygulaması geliştirirken forma label, buton,.. sürükleyip bırakır gibi web sayfası tasarlansın diye yapıldı. hiç html bilinmesine gerek kalmadan butonu sürükleyin çift tıklayın eventi oluşsun kodlarınızı yazın, bu kadar basit ama tabi düzgün bir web sayfası için html bilmek şart. mvc ise sağlam html bilgisi gerektirir.

farkları nelerdir?
- server kontrolleri
web forms'da server kontolleri bulunur. bunlar toolboxta bulunan örneğin button, label, checkbox, radiobutton, drpdownlist,.. Sürükle bırak şeklinde kolayca sayfanıza ekleyebiliyorsunuz.
mvc'de hazır kontrol yok. yani her nesneyi kendiniz oluşturmak zorundasınız.
web forms burda daha iyi gibi görünebilir ama öyle değil. server kontrolleri çalışma zamanında html'e çevrilir yani "asp:button" tagi çalışma zamanında "input type='button'" olacaktır. buda sayfayı yavaşlatan bir durumdur, mvcde bu htmle dönüştürme aşaması bulunmadığı için performans sağlanır.

- events
web formsda butonun çalıştıracağı kodları butona çift tıkladığınızda sizin için oluşturulan click event alanına yazabilirsiniz. yada en basitinden ilk sayfa açılışında form_load eventi tetiklenir buraya yazdığınız kodlar sayfa yüklendiğinde çalışır.
mvcde event mekanizması yok. örneğin butona tıklandığında iş yaptıracaksanız htmldeki form post metodunu kullanmalısınız.
web forms yine burda daha iyi gibi görünsede mvc öğrendiğinizde event mekanizmasının olmaması sizi hiç zorlamayacak tersine daha kolay şekilde kodlarınızı işletebileceksiniz.

- viewstate
web formsda sayfanın post olması yani sayfada bir butona tıklanması durumunda sayfa sunucuya gidip geldiğinde kontrollerin bir önceki durumunu korumak için bilgiler viewstate içinde saklanır. mesela textbox var ve içine yazı yazdınız ve sayfadaki her hangi bir butona bastınız, sayfa sunucuya gidip geldi ama bu aşamada texbox içindeki yazı otomatik olarak viewstate içine yazıldı sayfa yüklendiğinde viewstate içinden yazı tekrar alınıp texboxa yazıldı. özellikle form loaddaki işlemler için kullanışlıdır. veritabanından sadece 1kez verileri çekersiniz diğer türlü her seferinde post işlemi yapıldığında tekrar veri çekmek zorunda kalınırdı.
mvcde viewstate olmadığı için sayfanın son durumu otomatik saklanmaz sizin bunun için azda olsa fazlasan çaba harcamanız gerek.
burda yine web forms daha iyi gibi görünsede viewstate sayfanın boyutuna bağlı olarak çok büyük veri saklar ve bu veri her sayfa işleminde sunucu ve istemci arasında gider gelir buda yavaşlığa neden olur. mvcde viewstate olmaması performans arttırır.
not: web forms kullanındığında viewstate kapatılabiliyor.

- code behind
web formsda aspx ve aspx.cs uzantılı 2 dosya bulunur. aspx dosyasına html,css,js kodlarınızı yazarsınız ve c# kodlarınızı aspx.cs dosyasına yazarsınız. böylece c# kodları ve html kodları birbirine karışmaz.
mvcde code behind yok ama daha kullanışlı şekilde html ve c# kodlarınızı ayırabiliyorsunuz. detaylar aşağıda.

web formsda projenizi kendiniz katmanlı şekilde olutşrumalısınız ama mvcde gayet basit şekilde katmanlı mimari önceden sizin için tasarlanmıştır.

mvc nedir?
model - view - controller bir design patterndir, sıfırdan yapılmış bir teknoloji değildir, siz web sitesi yaparken bu mimariye uygun şekilde kod yazarsınız. yani aslında yukarda dediğim gibi siz yine asp.net dll'ini kullanmış oluyorsunuz ama kodlarınızı yazarken c# kodlarınızı controller'larda, html kodlarını view'larda ve nesnelerinizi model'de tutarsınız ve mvc mimarisini kullanmış olursunuz.

bir mvc projesi açtığınızda jquery, bootstrap falan önceden projeye eklenmiştir. hatta birde bootstrap kullanılarak yazılmış örnek bir web site bile projeye dahil edilmiştir.

appstart klasöründeki routeconfig dosyasında url rewrite işlemlerini çok kolayca yapabilirsiniz.

bundleconfig dosyasında css ve javascript dosyalarınızı bundle etmek gayit basit. bunun anlamı örneğin 5tane css dosyasını bundleconfig dosyası içinde yazılmış örnekteki gibi bundle ettiniz ve view yada layout dosyasında bundle'ı referans verdiniz. artık web sayfası çalışırken bu 5css dosyası birleşitirilir tek css haline getirilir boşluklar silinir yorum satırları silinir ve css dosyası minimize edilmiş olur böylece web sayfanıza ekstra performans sağlanmış olur.

neyse çok uzatmiyim, mvcnin efsaneliği yazmakla bitmez.