Bu çok fazla cevabı olan eski bir soru ama hiçbiri listelenmesini beklediğim bir cevabı yoktu.
Kısa cevap:
- ASP.NET platformu için modern programlama kuralları ve sektöre yönelik kalıpları içeren bir web uygulaması düzgün şekilde oluşturmak istiyorsanız, ASP.NET MVC kullanın. Aşağı tarafta, HTML ve müşteri tarafı kaynaklarının (Javascript, CSS) nasıl çalıştığını bilmenin yanı sıra dik bir öğrenme eğrisi olan ancak kavradığında ani bir sona ulaşan MVC programlama zihniyetinde rampa oluşturmanız beklenir.
- Bir GUI merkezli, RAD (Hızlı Uygulama Geliştirme) , sürükle ve bırak yaklaşımını kullanarak çok hızlı bir şekilde prototipleme yapmak için ASP.NET Web Formları kullanın , örn. 15 dakika ve çözüm geliştiricilerin desteklediği bir şey değildir. Veya, GUI veya Windows Forms geliştirmesinde bir geçmişiniz varsa ve bilgilerinizi Web’e aktarmak istiyorsanız , ASP.NET Web Formlarını kullanın .
Ancak buna düzgün bir şekilde bakmak için her birinin tarihini anlamanız gerekir.
ASP.NET Web Formları, Visual Basic 6 ActiveX denetimlerini, sunucudaki VB6 DLL'leri ve ASP Classic'i kullanarak dinamik web uygulamaları geliştirenlere Microsoft'un cevabıydı. O zamanlar, bu Microsoft araçlarını kullanarak web geliştirme gerçek bir karışıklıktı. Microsoft'un çıktısı olan .NET Framework'ün bütünüyle beraber, aslında Windows yığında verimli bir iş programcılığının nasıl yapıldığına dair çizim tahtasına geri dönerken, ASP.NET Web Forms, günlerinde şaşırtıcı ve güzeldi.
Tüm yaklaşım, geliştiricilere, Windows uygulama geliştirmeye çok benzeyen, ancak internet hizmetlerinin gücüyle her iki dünyanın da en iyisini sunmaktı. Fikir, tıpkı bir VB6 / WinForms "Form" (bir pencere) ile aynı şekilde bir web sayfasının bir form (tıpkı bir pencere gibi, bkz.) Olduğu gibi ve bu formda etiketleri, metin kutularını sürükleyip bırakabilmenizdi, veri ızgaraları, düğmeler ve VB / WinForms GUI geliştiricilerinin alıştığı diğer şeyler.
Bir düğmenin bir şey yapmasını sağlamak için, sürükleyip bıraktıktan sonra, tasarımcıya çift tıklayın ve kod editördesiniz, bu "click" olayı gerçekleştiğinde ne yapacağınızı söyleyin. Bu tam olarak Windows GUI geliştiricilerin VB6'nın GUI araçlarını ve rakip araçlarını kullanarak yazılım oluşturmasıydı , ancak şu anda kod sunucuda yürütülüyor! Vaov!
Bu 2002 teknolojisiydi. RAD gelişimi için internet destekli GUI çözümlerine bir cevap olarak zamanında şaşırtıcı ve güzel olan, başarması gereken iş hedefleri olan dağınık yazılım geliştiricilerin dünyasına bir güç duygusu getirdi.
Ne yazık ki, bu programlama modeli, Windows GUI programlamanın metaforunu, gerekli uygulama ayrıntılarının yükünü, olay yaşam döngülerine uyum sağlamak için gerekli tüm sarmalayıcı bagajı ve basit HTML'nin çirkin ayrıntılarını kesmeyi vurgulamaktadır. Bu sürükle ve bırak bileşenlerinin ve kontrollerinin çıktı vereceği komut dosyası. Günün sonunda, gerçek uygulamaları destekleyen geliştiricilerin kaçınılmaz olarak bu bileşenlerin içine girmeleri ya da kendi parçalarını yazmaları gerekiyordu ve sonuç olarak bu altyapı ile savaşacaklardı; gözyaşları.
Yedekle Ellerini yıka. İş sorununa tekrar bakalım. İş hedeflerimiz neler?
Web uygulamaları oluşturmalı ve yönetmeliyiz . Kısıtlamalarımız, HTTP, HTML, Javascript ve CSS'de yer alan World Wide Web’e sahip olduğumuz ve sunucuda iş kurallarımız, veritabanlarımız ve küçük programlama dilleri (örneğin, C #). Geliştirme metodolojimizi yönlendirmek için gerçekten bu Windows GUI metaforuna ihtiyacımız var mı? Neden sadece uygulama sorunlarına odaklanamıyoruz ve GUI metaforlarını yapmıyoruz?
ASP.NET MVC'nin devreye girdiği yer burasıdır. Kendisini doğru ve saf yazılım geliştirme ilkelerine geri dönmek isteyen "Alt.Net" adı verilen geliştiricilerin isyanıyla başladı. Daha fazla telaş ve telaş yok, sadece iş hedeflerine ve yazılım en iyi uygulamalarına odaklanın.
Bu durumda bunun gerçekten ne anlama geldiği:
- Kaygıların ayrılması . Örneğin, bir veri bileşeninin verilerinin nasıl işleneceğini bilmesi gerekmez, biçimlendirmeyi görüntülediğinde veritabanı bağlantısı yapılandırma ayrıntılarıyla donatılmamalıdır ve bu şekilde bir geliştirici düzenleme yaparken kendi ilgi alanına odaklanabilir. Test kodu
- HTML ve ilgili kaynakların nitty kumuna maruz kalma için maruz kalma ve tam destek . Web Formlarında, HTML gizlenir, geliştiriciler bununla uğraşmaktan caydırılır. ASP.NET MVC’de geliştiricilerin bu ayrıntıları yönetmesi daha çok teşvik edilmektedir; aslında bir zorunluluktur. Buradaki avantaj geliştirici HTML, CSS ve script temiz semantiğini takdir yeniden öğrenmek ve çalışabilir olmasıdır ile bunun yerine ona karşı.
- İş nesnelerinin test edilebilirliği . Kontrolörler ve modeller, programatik ünite testi için çok daha uygundur, bu nedenle uygulamaların iş hedeflerine uygun olduğu doğrulanabilir ve değişikliklerin bozulmayacağı doğrulanabilir. Web Formları ile, bileşenlerin ayrı ayrı test edilmek üzere tasarlanmadığı ve tüm geliştirme çıktılarının sayfa formları ve bunların olay yaşam döngüleri etrafında iş mantığı ve sunum mantığı ile iç içe geçtiği için test edilmesi zordu .
Javascript'in yüksek düzeyde bir programlama dili olduğu gibi HTML’nin de zaten çok yüksek bir biçimlendirme dili olduğunu unutmayın. Assembly dili ve C ile ilgileniyor olsaydık, tüm hikaye farklı olurdu.
ASP.NET MVC'nin bir diğer amacı, 2 numaraya genişleyerek, geliştiricilerin çözümlerinin 'görünüm' kısmının ön uç ayrıntılarını düzenlemelerini ve endüstrinin geri kalanının oluşturduğu zengin temelden faydalanmalarını sağlamaktır. ön uç müşteri platformu.
ASP.NET MVC geliştiricilerinin, sunucu tarafı mimarisiyle mücadele etmeden zengin Javascript kütüphanelerini ve istemci tarafı şablonlama tekniklerini kullanarak kendilerini evde hissettiğini göreceksiniz. Bu aslında ASP.NET Web Formları için geçerli değildi, çünkü Web Formları HTML veya komut dosyasına bakmanızı istemiyor, çünkü gerçekten yapmak zorunda olmadıkça , bu durumda dikkat etmeniz gereken bir durum yok. Kalbin