ASP.NET Web Forms her zaman MVC den üstün! Ama MVC yi tercih ediyorum. Daha hızlı ve daha rahat kodlama sağlıyor.

Kısaltmalar:
ASP.NET Web Forms: WF
ASP.NET MVC: MVC

WF İyi Nedenleri:
+ Tamamen OOP tasarım,

+ Gelişmiş ve fazla kütüphane sayısı,

+ Kütüphaneye ve İşletim sistemine maksimum erişim,

+ Gelişmiş Event mimarisi,

+ Çok fazla dökümantasyon ve kaynak.

+ Kısaca istek ile cevap arasında html olsun, diğer işler olsun en alt seviyeye kadar müdehale şansı.

WF Kötü Nedenleri:
- Birden fazla kişi tek projede çalışırken tasarım ve kodlama sapıtıyor ve zorlanılıyor.

- Eğer Viewstate yapısını abartırsanız html tarafında çok fazla kod oluşuyor.

- Controller ve Page yapısını çok iyi bilmeli ve olay sürüşünü(event driven) iyi bilmiyorsanız sunucu çok fazla kaynak tüketmeye başlıyor.

- Sürükle bırak kodlama bazen çok fazla kod üretip visual studio da adamı felce sürüklüyor.

- URL Routing .net 3.5.1 den önce iğrençti. Şimdi System.Web.Routing namespace i ile MVC deki gibi routing yapılabiliyor ama türkçe kaynaklarda çoğu gerzek!(alınan alınsın) birbirinden kopya yapıştır mantığıyla iğrenç bir routing yaptırıyorlar bu yüzden sistem zorlanıyor.

- İyi bir proje ortaya çıkartmak için çok iyi bir oop bilgisi gerekli!

Edit(Ekleme):
- View tarafında html ile iç içe server side kod yazmak gıcık ediyor ve okunması zorlaşıyor
-----------------------------------------------------------------------


MVC İyi Nedenleri:
+ Basit bir yapı ile Model View Controller mekanızması tam oturmuş.

+ Birden fazla view engine(görüntüleme motoru) kullanılıyor. En rahatı Razor. @ işaretini koy ve view içinde istediğin programlama dili ile kod yaz! Bağımsızsın.

+ Proje büyükse, ekip ile çok rahat çalışıyorsun.

+ Viewstate gibi saçma yada bir view içinde bir tek form gibi kısıtlama yok. Gereksiz kod yok. Sen ne yazmışsan o vardır.

+ Html extension (@Html dediğiniz anda hazır eklenmiş yapılar) ile uzun uzun form kontrolü olsun vs olsun uğraşmadan kodlama yapılabiliyor.

+ Veritabanı ve model çalışmaları çok rahat. Control içinde action'a istediğin veriyi çek ve return kısmında modeli gönder. View tarafında modeli istediğin gibi oyna.

+ Hızlı, çok hızlı.

+ Güvenlik yapısı(Asp.NET Membership) aynen WF dan geliyor. Bunu daha da genişletip istediğin gibi bir yapı oluşturabiliyorsun.

+ Roting çok rahat. Özellikle 5. versiyon çocuk oyuncağına çevrilmiş.

+ Kodlama süren eğer html bilgin iyiyse çok hızlanıyor.

+ View tarafında layout yapısını iyi oturtursan partialview olsun, sectionlar olsun çok rahat yaparsın istediğini.

+ POST, GET, HEAP vs işlemleri bir attiribute'a bakıyor.

MVC Kötü Nedenleri:
- Hazır kütüphaneler hala çok yaygın değil,

- HTML bilgin kötüyse proje geliştirme çok uzayacaktır.

- OOP yapısı çok gerekli değil ama ortanın üstünde bilmiyorsan performans bir anda yerlere düşecektir ve algoritman yüzünden tekrar tekrar hata alacaksın.

- Güvenlik açıklarına maruz kalmak çok basit. En azından querystring yada sql injection konusunda bilgili olmalısın.

- Visual Studio da sürükle bırak yada design ekranı yok. Salt kod yazmak zorundasın.

- database olarak entity framework kullanırsan linq işlemlerinde eğer doğru algoritma kurmazsan veritabanı performansı ve model tasarımı işkenceye dönecektir.

- WF daki OOP yapısı olmadığı için bir kontroller'ı çalışma anında html içindeki bir bölüme yerleştirmek(WF kullananlar bilir, bir html nesneyi runat ile server nesnesine çevirip LoadControl ile istediğiniz gibi çalışma anında müdahele edip işlem yapabiliyorsunuz)

- Bir işlemi hem görüntülemek hem düzenlemek(get - post) için iki action belirmek yada düzgün bir algoritma kurmak zorundasın. Spagetti koda müsait yani.


Ben tercihimi mvc tarafına çektim. Bir süre sonra html ile konuşuyor gibi oluyorsun. HTML bilgin çok yükseliyor. Olması gereken de bu diyorsun. Ama yinede 6 yıllık WF'u özlemiyor değilim.

Bir tane default.aspx im olurdu. Alt sayfalarım hep usercontrol olurdu(kendi mvc mi yapmıştım açıkçası) ve tema desteğim olurdu projelerimde. Bu sayede çok hızlı bir şekilde proje geliştirirdim. Performans konusunda WF bana çok şey kazandırdı. Onun sayesinde bir çok bilgi öğrendim açıkçası.

Tercih yapmak istiyorsan MVC den başla yada tamamen mvc e geç.

http://asp.net/mvc altında bir çok makale var. Ama ingilizce şart. Türkçe kitap olarak okumadım ama Kodlab yayınlarının kitaplarını incele derim.

--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 15:21:06 -->-> Daha önceki mesaj 15:16:37 --

betmo adlı üyeden alıntı: mesajı görüntüle
Bilen arkadaşlar razor ile aspx arasında ki farkları yazarsa çok faydalı konu olur
Razorda(.cshtml)

<ul>
@foreach(tablo_Firma firma as Model.Firmalar)
{
<li data-id="@firma.Id">@firma.Adi</li>
}
</ul>

aspx de:

<ul>
<%
foreach(tablo_Firma firma as Model.Firmalar)
{
%>
<li data-id="<%=firma.Id%>"><%=firma.Adi%></li>
<%
}
%>

bir tane @ ile çok rahat kodlama. Hızı mükemmel.

--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 15:23:24 -->-> Daha önceki mesaj 15:21:06 --

Bu arada kullanacaksan: Visual Studio 2013 kullan. Ve Update 2 yi yükle.

Çok hızlı ve rahat bir şekilde proje geliştirir ve öğrenme hızını arttırırsın.