This article is currently in the process of being translated into Turkish (~32% done).
ASP.NET MVC vs. Web Forms
ASP.NET'in ilk sürümü 2002'de piyasaya sürüldü ve Web Forms view motoru mevcut tek seçenekti. Daha sonra, MVC gibi şeyleri desteklemek için Microsoft, ASP.NET'i birden çok view motorunu destekleyecek şekilde genişletti, ancak uzun yıllar boyunca ASP.NET kullanıyorsanız otomatik olarak Web Formlarını da kullanıyordunuz.
Microsoft, Web Forms'u oluştururken oldukça takdire edilesi bir hedefe sahipti: HTTP protokolünün karmaşık ayrıntılarını ve durumsuz yapısını olabildiğince soyutlamak ve web geliştirmeyi, o zamanlar oldukça keyifli bir deneyim olan Windows uygulaması geliştirmeye benzetmek istediler.
Bunu, sunucuya yapılan geri göndermeler sırasında herhangi bir formun mevcut durumunun korunmasını sağlayacak olan ViewState'i tanıtarak yaptılar ve bunu, HTML ve CSS'nin oluşturulmasını istediğiniz bir kontrole dönüştüren sunucu kontrolleriyle yaptılar. HTML ve CSS'yi doğrudan karıştırmak yerine mantıksal özellikleri kullanarak özelleştirin.
Ayrıca, o sırada Windows geliştiricileri tarafından zaten bilinen olay güdümlü modeli de tanıttılar ve geliştiricinin, sayfada her seferinde bunun için manuel kontroller yapmak yerine, tıklanan bir düğme veya bir onay kutusunun değiştirilmesi gibi gerçek olaylara yanıt vermesine izin verdi. yüklendi. Bu aynı zamanda işaretleme ve kodun ayrıldığı anlamına da geliyordu ki bu teoride harika bir şey.
Web Formlarının Başarısız Olduğu Yerler
Web Forms birçok geliştirici için taze bir soluktu ve muhtemelen birçok yeni geliştiricinin veya yalnızca Windows uygulama geliştirme konusunda bilgili geliştiricilerin web için uygulama oluşturmayı öğrenmesine yardımcı oldu. Ne yazık ki Microsoft mükemmel ve kusursuz soyutlamayı yaratmayı başaramadı çünkü bir dizi sorun hızla ortaya çıktı. Bazıları sonraki sürümlerde düzeltildi, diğerleri ise WebForms'un çalışma şekli için daha temeldi ve bu nedenle değiştirilmesi daha zordu. Web Forms teknolojisi esas olarak aşağıdaki şeyler için eleştirildi:
ViewState sayfaları ağırlaştırır
By keeping track of every server control on the page in a ViewState string, which is sent back and forth between the server on each request, Web Forms pages got quite a bit heavier. If you were building a medium complex page, the resulting ViewState string could lead to an increase of several hundreds of kilobytes. This could lead to longer load times, especially on a mobile connection and with the increase of traffic from smartphones all over the world, this became a very real problem.
Server controls limits your control over HTML output
Server controls makes it easy for you to quickly create something useful, but you never get full control of the HTML which it renders. This can become a problem when you need to fine-tune your work as well as if you experience browser compatibility problems.
Web Forms is bad for automated testing
The Web Forms model was introduced before automated/unit testing became a big thing and when it did, it was easy to see that Web Forms was hard, if not impossible, to effectively unit test.
Where ASP.NET MVC is an improvement over Web Forms
ASP.NET MVC removes a lot of the abstractions implemented by Web Forms. For instance, you usually generate all of the HTML yourself, instead of relying on server controls. There is also no longer any ViewState maintained for you, effectively eliminating that problem (but also rendering several of the server controls, like the GridView and the Repeater, useless at the same time).
The MVC model is perfect for automated/unit testing, because of the loose coupling between the different layers.
Which technology should you choose?
It's important to state that while Web Forms may seem like an outdated technology when reading the above, it's actually not at all - Web Forms is still being actively developed by Microsoft and is still a possible choice when entering the world of web development with ASP.NET. Web Forms is especially well suited for situations where you want something up and running in a hurry - the big amount of advanced server controls makes it easy to accomplish something very useful in a rush, at the price of the flexibility it gives you to write all the markup manually.
If you already know how to use Web Forms, you should definitely give ASP.NET MVC a try, especially if some of the above mentioned problems have been bugging you as well. If you're new to web development, and you need to decide between the two technologies, I would still recommend giving ASP.NET MVC a try. The MVC model can seem a bit restrictive to some people, and having to follow a pattern is obviously harder in the beginning than not following one, but once you get used to it, it's very pleasant to work with and judging from the amount of attention that the MVC model receives in general, it's not likely to disappear anytime soon.
Summary
So, while ASP.NET Web Forms might be a bit easier to get started with, you should probably give ASP.NET MVC a try first, if you're new to the world of web development. Don't worry, this tutorial will get you started and guide you through the process of developing your first ASP.NET MVC application.