ASP.NET WebForms MVC'ye ne zaman tercih edilir


189

Microsoft'un söylediğini biliyorum

ASP.NET MVC, WebForms'un yerine geçmez.

Bazı geliştiriciler, WebForms'ın geliştirilmesinde MVC'den daha hızlı olduğunu söylüyor. Ancak kodlama hızının teknolojiyle konfor seviyesine indiğine inanıyorum, bu yüzden bu konuda hiçbir cevap istemiyorum.

ASP.NET MVC'nin bir geliştiriciye uygulamaları üzerinde daha fazla kontrol sağladığı göz önüne alındığında, WebForms neden eski kabul edilmiyor? Alternatif olarak, yeni gelişim için WebForms'u MVC'ye göre ne zaman tercih etmeliyim?


57
@Darknight: \ Çok taraflı ve basit bir şekilde yanlış. MVC basit CRUD uygulamaları için değildir. WebForms'ın genel CRUD uygulamaları için olduğunu düşünüyorum (örn. Veritabanı -> bazı parlak ızgara kontrolü).
Raynos

17
@Darknight sizi mutlu eden her neyse -> WebForms ile çıldırırsanız;)
Raynos

16
@Darknight Eğer fikriniz varsa, açıkça MVC'yi anlayamıyorsunuz ... mvc ile yapılmış çok büyük siteler var ... biraz araştırma yapın efendim.
Robotsushi

31
IMO, MVC'yi kullanabildiğiniz zaman web formlarını asla kullanmayın.
scottschulthess

10
Konuşacak biri değilim, bu yüzden bu sadece benim görüşüm. Cevapların çoğunu okuduktan sonra, cevabın hiçbir zaman olmadığı sonucuna vardım. MVC sadece harika ve bulduğum tek dezavantajı, ;web sayfamda görmeye devam etmem.
MasterMastic

Yanıtlar:


105

Webforms - MVC şu anda sıcak bir konu gibi görünüyor. Tanıdığım herkes MVC'yi bir sonraki harika şey olarak görüyor. İçimdeki ufak yavrularımdan, sorun yok gibi görünüyor ama hayır, web formlarının sonu olacağını sanmıyorum.

Akıl yürütmem ve webforms'un MVC üzerinden neden seçileceği konusundaki akıl yürütme, birinin diğerinden daha iyi olandan ziyade iş perspektifiyle daha fazla ilgisi var.

Web formlarının MVC üzerinden seçilmesinin en büyük nedenleri zaman / paradır.

Ekibinizin çoğu web formlarını biliyorsa ve MVC'yi hızlandırmaya vaktiniz yoksa, üretilecek kod kaliteli olmayabilir. MVC'nin temellerini öğrenmek, sonra içine atlamak ve yapmanız gereken karmaşık sayfayı yapmak çok farklı şeylerdir. Öğrenme eğrisi yüksektir, bu yüzden bunu bütçenize yansıtmanız gerekir.

Tüm web formlarında yazılmış büyük bir web siteniz varsa, sitenizde çok farklı iki sayfa türünün olmaması için web formlarında yeni sayfalar oluşturmaya daha yatkın olabilirsiniz.

Burada ya hep ya hiç yaklaşımı olduğunu söylemiyorum, ama özellikle takımdaki herkes MVC'ye aşina değilse, her ikisinin de bölünmesi durumunda kodunuzu korumayı zorlaştırır.

Şirketim yakın zamanda MVC ile üç test sayfası yaptı. Oturduk ve onları tasarladık. Karşılaştığımız bir sorun, ekranlarımızın çoğunun aynı sayfada Görüntüle ve Düzenle işlevine sahip olmasıdır. Sayfada birden fazla forma ihtiyaç duyduk. Hayır biggy, ama o zamanlar ana sayfasını kullanmazdık. Hem web formları sayfalarının hem de MVC sayfalarının ortak görünüm ve his için aynı ana sayfayı kullanabilmesi için yenilemek zorunda kaldık. Şimdi fazladan bir yuva katmanımız var.

Bu sayfalar için yepyeni bir klasör yapısı oluşturmamız gerekiyordu, böylece uygun MVC ayrımını takip ediyordu.

3 sayfa için çok fazla dosya olduğunu hissettim, ama bu benim kişisel görüşüm.

Bence, sitenizi MVC'yi kullanmak için güncellemeye yatırım yapmak için zamanınız / paranız yoksa MVC üzerinden web formları seçersiniz. Buna yarı yarıya yaklaşan bir yaklaşım yaparsanız, şu an sahip olduğunuz web formlarından daha iyi olmaz. Daha da kötüsü, üst yönetim onu ​​bildiklerinden daha aşağı bir şey olarak görebileceğinden, bu sorun çözülürse, şirketinizde bozulma ihtimaline bile sahip olabilirsiniz.


14
Bu iyi bir cevap. Sana +1 verdim, çünkü kişisel tecrübelerin takdir ediliyor. Ancak, bu, kaçınmak istediğim geliştiricilerin deneyim / beceri kümesi eksikliği nedeniyle başarısızlıktır. Microsoft'un MVC'nin öğrenme eğrisi korkusundan dolayı eski bir teknolojiyi işaretlememeyi seçeceğine ikna olmadım. Durum bu olabilir, ama henüz ikna olmadım.
P.Brian.Mackey,

6
@ P.Brian.Mackey - Form geliştirmenin MVC'den daha hızlı olduğunu söylemedim. Bu tartışmayı bunun dışında bırakmak istediniz. Personelinizi eğitmek için zaman ve parayı tartışmak farklı bir argümandır. MS, web formlarını eski nedenlerden biri olarak işaretlemeyecek: Kurumsal müşteriler, web müşterilerini web formlarında geliştirmek için yıllarını harcadılar ve güncellenmek için zaman ve para harcamak zorunda kalmayacaklar.
Tyanna,

16
@Raynos - Takımdaki herkes MVC konusunda uzmansa ve şirketiniz yeni bir projeye başlıyorsa, web formları seçen birini görebilmemin tek nedeni kişisel seçimdir.
Tyanna

3
Her iki teknolojiyi de yakından tanıyorum. Tüm web projelerim mvc ile yapılıyor ve en iyi yaklaşım ne olursa olsun yapmak için ücretsiz hüküm sürdüğüm bir şirkette çalışıyor. Ben her zaman MVC'yi seçerim.
Robotsushi

6
Webforms ile başladım ve MVC'yi keşfettikten sonra buna geçtim. Birinin web formlarını nasıl savunabileceğini bilmiyorum. Sayfa yaşam döngüsü ve tüm sayfa için bir form? Benimle dalga mı geçiyorsun? Yahoo sitebuilder muhtemelen bunun için amaçlanan müşteri oldu ama o önemsiz istemediler bile.
Çörek Adam

188

3 yıl boyunca ASP. Net WebForms uygulamaları geliştirdim ve bir gün MVC dersi verdikten sonra satıldım. MVC neredeyse her zaman daha iyi bir çözümdür. Neden?

  • Sayfa lifecylce daha basit ve daha verimli
  • Html kontrolleri dışında kontroller gibi bir şey yoktur. ASP. Net'in ne ürettiğini görmek için çıktınızı hata ayıklamanız gerekmez.
  • ViewModels size büyük bir güç verir ve manuel kontrol bağlama ihtiyacını ortadan kaldırır ve bağlama ile ilgili birçok hatayı ortadan kaldırır.
  • Bir sayfada birden fazla form olabilir. Bu WebForms'un ciddi bir sınırlamasıydı.
  • Web, vatansızdır ve MVC, web mimarisiyle daha yakından eşleşir. Webforms, ViewState'i tanıtarak durumu ve bununla ilgili hataları tanıtır. ViewState otomatiktir ve arka planda çalışır, bu nedenle her zaman istediğiniz şekilde davranmaz.
  • Web uygulamaları bugünlerde ajax ile çalışmalı. Artık tam sayfa yükleme yapmak kabul edilemez. MVC, JQuery ile ajax'ı çok daha iyi, daha kolay ve daha verimli hale getirir.
  • Bir sayfada birden fazla form olabilir ve mimari URL'lere yapılan çağrılarla yönlendirildiğinden, ajax gibi korkak şeyleri JQuery kullanarak geçerli sayfanıza düzenleme formu gibi farklı bir form yükleyebilirsiniz. Bunun size neler sağladığını anladıktan sonra, inanılmaz şeyleri kolayca yapabilirsiniz.
  • ASP. Net WebForms sadece html üzerinden bir soyutlama değildir, aynı zamanda son derece karmaşık bir çözümdür. Bazen çok garip bir böcek bulabilir ve gerekenden çok daha uzun süre onunla mücadele edebilirsin. Çoğu durumda neyin yanlış yaptığını görebiliyordunuz, ancak bu konuda hiçbir şey yapamıyorsunuz. Sonunda garip geçici çözümler yapıyorsun.
  • WebForms, tasarımcılar için iyi bir teknoloji yapmaz. Tasarımcılar genellikle doğrudan html ile çalışmayı sever. MVC'de bu bir manzara, WebForms'ta yarım günlük bir çalışma.
  • Web platformu hızlı bir şekilde geliştikçe WebForms yetişemeyecektir. HTML5'in yeni etiketlerinin veya özelliklerinin farkında değil, pahalı 3. taraf denetimleri almadığınız veya Microsoft'un bir güncelleştirme yayımlamasını beklemediğiniz sürece yine de aynı işlemleri gerçekleştirecek.
  • WebForms'daki kontroller sizi birçok yönden sınırlandırır. MVC'de bir JQuery kütüphanesini kapıp şablonlarınıza entegre edebilirsiniz.

WebForms geliştikçe yukarıdaki sorunların bir kısmının ele alındığını biliyorum, ancak bu benim orijinal deneyimimdi. Sonuçta, bir proje zaten kullanmıyorsa WebForms için bir iş vakası bulmak son derece zor olacaktır.


6
Birden çok formu işaret etmek için +1. Ayrıca, HTML web formlarının ürettiği gerçeği çoğu zaman SEO dostu değildir (olduğu gibi: sayfanın en üstündeki büyük
görünüm

4
Bu cevaba% 100 katılıyorum. Günün sonunda WebForms, müşteri tarafında (html / tarayıcı) işleri çok zorlaştırıyor. Gerçekten bir şeyler yapmak için çerçeveyle savaşmak zorundasın. Bir aspx sayfası, sunucu kontrolleri nedeniyle genellikle bir cshtml sayfasından çok daha fazla kodla bitiyor. @ šljaker ViewState'i kapatmaya başlarsanız ve sunucu kontrollerinden kaçınırsanız, bu noktada WebForms'un çoğunu terk ettiniz. Bu tartışmayı özellikle inandırıcı olarak görmüyorum.
Andy

12
WebForms'da düz html denetimlerine sahip olabilirsiniz, kimse sizi Sunucu denetimlerini kullanmaya zorlamaz. Vatansız Web formuna sahip olabilirsiniz, hiç kimse sizi ViewState kullanmaya zorlamaz. Tam ajax ve jQuery'yi Webforms'ta kullanabilirsiniz, kimse sizi jQuery kullanmasını kısıtlamaz. URL yönlendirmesini uygulayabilirsiniz, hiç kimse sizi statik dosya tabanı URL'sini kullanmaya zorlamaz. Bir sayfayı CSS ile el ile çizmek, MVC'nin gerektiği kadar zaman harcar. HTML sayfasını doğrudan Webform üzerinde tasarlayabilirsiniz.
mjb

5
@mjb: Eğer sunucu kontrolleri, ViewState ve benzeri kullanmıyorsanız, MVC yaptığınız şeye yaklaşırken neden WebForms kullanıyorsunuz? Çalışması için traktörü sürmek gibi bir şey ama offroading yapmamak veya kürek / çapa veya sabitleyici çubukları kullanmak gibi. O noktada neden sadece araba kullanmıyorsunuz?
Nelson Rothermel

3
@Tjaart ASPNET sayfasında birden fazla form olamayacağınız doğru değil. ASPNET sayfasında istediğiniz kadar form olabilir, ancak tek bir sunucu formunuz olabilir - runat = "server" niteliği olan form.
Kuncevic

80

Microsoft'ta bir MVC uzmanı olan Scott Guthrie'ye e-posta gönderdim . Ve muhtemelen bu soruyu cevaplayacak en nitelikli adam. Cevap verecek kadar kibardı:

"Farklı müşteriler farklı programlama yaklaşımları ararlar ve birçoğu WebForms'u sever ve bunun harika olduğunu düşünür. Diğerleri MVC'yi sever ve harika olduğunu düşünür. Bu yüzden ikisine de yatırım yapıyoruz."

Yani, bu bana teknik bir konu olmadığını söylüyor. İsterseniz onun daha bir "yumuşak sorun". Kişisel tercihlerden biri. Bu, birkaçınızın söylediklerine uygun.

Tüm cevaplar için teşekkürler.


12
Scott Guthrie, ASP.NET için MVC çerçevesini 2006/7’de Londra’dan Seattle’a uçarken icat etti. Bir düşününce, .NET'i de hemen hemen icat etti ( en.wikipedia.org/wiki/Scott_Guthrie ). Ona "uzman" demek muazzam bir
azınlıktır

27
Scott Guthrie'den güzel bir politik cevap. Kendisi kendi Web uygulamasına yatırım yapıyor olsaydı, bir MVC projesi görürdünüz ve MVC'de yapılamayan herhangi bir şey için Silverlight geri dönüş olurdu. Bunu WebForms'a olumsuz bir yorum olarak alma, WebForms'ın Telerik tarafından oluşturulanlar gibi 3. parti bileşenlerden faydalanabilecek daha küçük kapsamlı iç uygulamalar için harika olduğunu düşünüyorum. Microsoft'un her iki teknolojiyle de ilerlemesine sevindim.
Sean Chase,

10
"Scott Guthrie, uçuş sırasında ASP.NET için MVC çerçevesini icat etti" bence bu gerçekten MVC'yi önemsizleştiriyor. Scott Guthrie'yi tanımıyorum, ancak bir süredir MVC'nin ASP.NET'te nasıl uygulanabileceğini belirttiğine bahsediyorum ve bu uzun uçuşu bir kavram olarak kanıt olarak çıplak kemik prototipi uygulamak için kullandı.
John MacIntyre

6
“Bu yüzden ikisine de yatırım yapıyoruz.” Ve web formlarının azalmaya başladığını gördüğümüzde, acımasızca düşüreceğiz çünkü sonuçta ölü bir ürüne yatırım yapmak bizim işimiz için uygun değil.
Quandary

Artık okullarda öğretilinceye kadar, yıllarca iş dünyasında her zaman geçerli olacak. Yüksekokullar ve liseler vb.net'te giriş ve ileri kurslar sunmaya devam ediyor. Bir yere gitmiyor!
htm11h

44

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:

  1. 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
  2. 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şı.
  3. İş 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


Bu iyi bir cevap, ancak # 1 ve # 2 yanlıştır (WF verilerinin nereden geldiğini bilmek için bir bileşen gerektirmez, bir seçenekdir ve asp etiketlerini desteklemek için ASPX dosyalarınıza her zaman HTML eklediniz Geliştirici etkileşimi için tasarlanmamış bir ASP özelliğine erişmeye çalışmadığınız sürece, hiçbir zaman derin kazmak ve kontrollerle mücadele etmek zorunda kalmadınız. Büyük noktalar test edilebilirlik ve tasarım kalıbıdır.)
Trisped

39

Tam ve toplam bir ASP.NET MVC dönüştürücüyüm ve geriye bakmadım, bu da hala çok büyük WebForms uygulamalarını sürdürmem gerektiğini söyledi. İşte benim almam:

WebForms
Bunları, ızgaralarla ilgili ciddi ağır kaldırmalarınız olduğunda kullanın. Izgara kontrolleri, tablo biçiminde güzel bir şekilde uyan basit bir veri kümesine sahip olduğunuzda ve kullanıcıların kayıtları güncellemesi için basit bir yol sağlamak istediğinizde gerçekten çok iyidir. Evet, MVC 4’ün harika çalışan Ajax liste türü bir şeye sahip olduğunu biliyorum ama harika olanı işimizde sık sık dün çalışan bir şeye ihtiyacımız var ve eski moda ızgaralar harika çalışıyor ve kullanıcılar mutlu oluyor Glee ile ızgara boyunca sekme yapabiliyor. Benim için bu benim için WebForms ile ilgili en iyi şey; ama, Ryan olarakWebForms uygulamasının büyük bir zaman karışıklığı olabileceğine dikkat çekti, çünkü çitin her iki tarafını da şık bir kod arkasındaki dosyadan oynatıyorsunuz. Tüm denetleyici tipi öğelerinizi görünümlerinize karıştırmak aynı anda hem gül hem de diken olabilir.

MVC
Bunu gerçekten kullanmak isterseniz ve bir uygulamayı sıfırdan başlatma fırsatınız olduğunda bunu kullanın. Açıkça tanımlanmış bir MVC uygulamasına sahip olmak, işe başlamak için biraz daha fazla bir iştir ancak bakımdaki faydaları, ilk kurulum maliyetinden daha ağır basar. İlginç Ajax etkileşimleri yapmak istiyorsanız, modelinizi temiz url'ler ve yollar gibi kodla yazmayı tercih edin ve uygulamanızın akışının tamamını kontrol edebilmeyi tercih edin. İlk başta alışmak biraz zaman alıyor ancak Greenfield uygulamaları için daha iyi bir seçenek olduğunu düşünüyorum.

Sonuç olarak, benim için bu, şebekelere ve! :)


"Çitin her iki tarafını şık bir kod arkasındaki dosyadan oynamak" ile verilen güzel resim için +1.
Marcel,

Bu çok yardımcı oldu. Ben çok ağır bir ızgara tabanlı uygulama yapıyorum ve silverlight, xbap ekarte ettim ve bu ikisi arasında aşağı bir şov oldu.
frostymarvelous

15

Benim deneyimim:

  • CakePHP projelerini bir yıllığına yazdı.
  • Altı ay boyunca orta büyüklükte bir Webforms projesi tamamlandı.
  • Windows Forms projesinde üç yıl çalıştı.

Bu deneyimden sonra, webforms kullanarak başka bir uygulama yazmayı denedim ve webforms'ın geliştiriciyi html, javascript ve css kullanan bir uygulama geliştirdikleri gerçeğinden korumak için nasıl bir gün uğraştığını hayal kırıklığına uğrattım.

Daha sonra MVC'yi denedim ve çıktı üzerinde daha fazla kontrol sahibi oldum (ve CakePHP'den MVC paradigması ile biraz tecrübe edindim), bu basit uygulamayı tam olarak günde yaklaşık 1 / 2'de istediğim gibi tamamlayabildim.

JQuery gibi güçlü UI çerçevelerinin mevcudiyeti, çoğunlukla hacimli önceden oluşturulmuş UI bileşenlerinin kullanılması lehine çıktının doğrudan kontrolünden vazgeçme cazibesini büyük ölçüde ortadan kaldırır.


2
@JimG - Uhh, bir kişinin veritabanına ilginç birliği olmayan kayıtları girmesini ve bu kişinin ya da bir başkasının başka bir noktada okuyup / yazdırmasını içeren herhangi bir şey temelde bir MVC çerçevesi kullanılarak iskele edilebilir. Verilmiş, bu çoğu uygulama değil, ancak Formlar ile yapabileceğinizden çok daha fazlası. Sanırım -1'iniz benim için bir kanıtı.
mootinator

1
Günün 1 / 4'ü.
mootinator

1
Ancak gereksinimler "İki rol içeren bir uygulamaya ihtiyacım var, biri bazı bilgileri kaydedecek, diğeri ona bakacak ve gerçekten neye benzediği umrumda değil". O zaman, evet, bu oldukça yapılabilir.
mootinator

3
Üzgünüm, ama veri girmek ve verileri görüntülemek için bir web formu uygulaması geliştirmek o kadar basit ki birkaç saat içinde yapılabilir. MVC uygulamasının yapısını oluşturmak, Kontrolörler, Görünümler ve Eylemler, aynı süreyi alır, ancak sizi bitmiş bir ürüne götürmez.
Demansik

2
@Dementic Genellikle basit bir MVC uygulaması için biri modeller oluşturur, sonra denetleyicileri ve görünümleri iskeleler oluşturur ve / veya iskele halindeki denetleyicileri / görünümleri oluşturur. Orada gerçekten zaman alan hiçbir şey yok.
mootinator

8

Web formlarını tercih ediyorum çünkü arkaplanım windows geliştirme.

Geliştirme hızı önemli bir konudur ve bir gecede formlarla bir geceyi düzeltmek için Hindistan'daki birine kolayca iletebilirim. Ayrıca, eğer bir sayfada bir hız sorunum varsa, asp.net hızı hakkında gerçekten iyi bir kitap kullanışlıdır (Rick Kiessig adamdır).

webforms ex windows insanlar için mvc web insanlar için

Ancak, Rick'in müthiş bir kitap yazdığı modern dünyada, sunucuları Hindistan'da günlük hızlı ve ucuz kodlayıcıların artmasıyla, webforms'un üstünlüğü var.


7

Benim 2 kuruş, seçeneğiniz varsa, her zaman ASP.NET MVC'yi yeni projeler için kullanmaktır. Bana göre web formları, web uygulamaları geliştirmek için iyi bir yol değil.

Temel REST’in kaldırılmasının kötü olduğunu, postback modelinin tümünün kötü olduğunu, html / css’in GUI editörüne güvenerek verildiğinin kötü olduğunu düşünüyorum, sihirbazlar ve GUI’lerin bazı şeyleri ayarlamak için kötü olduğunu, URL’lerin kötü olduğunu düşünüyorum. kötüler.


Neden böyle düşündüğünü daha ayrıntılı olarak açıklayabilir misin?
Ocak'ta

temel REST'i geri almaktan vazgeçtim, postback modelinin tamamı geri döndü, html / css'nin GUI editörüne güvenerek verilme şekli kötü, sihirbazlar ve GUI'lerin işleri kurmak için kötü olduğu, URL'lerin kötü olduğunu düşünüyorum kötü, vb vb
scottschulthess 16:13

6

Tüm cevapları okudum ve kişisel deneyimimin yukarıdaki cevaplara bir şeyler ekleyeceğini hissediyorum.

3-4 yıl önce, Webforms kullanarak 2-3 web sitesi projesi geliştirdim. O zamanlar, MVC etrafta değildim ya da duymadım. Gelişim doğaldı (daha önce web geliştirme deneyimim olmadan Win-form geliştirmeden geliyordum) benim için hızlıydı, çünkü HTML'yi ayrıntılı olarak öğrenmem gerekmiyordu ve web kontrolleri çok yardımcı oldu (cehennem, hayatı kolaylaştırdı) .

Şimdi, onca zamandan beri, yakın zamana kadar herhangi bir web projesinde çalışmıyordum ve sadece WPF kullanarak bazı windows uygulamaları inşa ediyordum.

Birkaç gün önce bir web sitesi için bir fikrim vardı ve onu geliştirmeyi düşündüm: bu sefer MVC'de (her yerde konuşulduğundan beri, her ikisini de öğrenmem gerekiyordu, bu yüzden MVC'yi seçtim). Proje hala gelişim aşamasında, çünkü hala birlikte öğreniyorum ve yapıyorum.

Yani, s / b bulduğum temel farklılıklar aşağıdaki gibidir: -

  • Windows geliştirmesinden gelen biri için Web formları her zaman uygun olacaktır. Bir windows geliştirici için Asp.net öğrenme eğrisi biraz dik

  • Web geliştirmeden başka bir teknolojide gelen biri için MVC, hepsinden alay ettiği için tercih edilecektir.

  • İyi HTML ve CSS bilgisine sahipseniz, MVC'de geliştirme daha kolay ve temizdir

  • Dağıtım hala bir konudur. Web formlarında kopyalayıp yapıştırmak için sadece bir tane gerekli. Ancak, bu yapılması gereken bazı şeyler gerektirir.

Kısacası, ikisi de bir süre burada kalacak.


6

Henüz bu konuya verilen 15 cevap arasında öne sürülen bu düşünceyi görmedim, ancak düşünmeye değer olduğunu düşünüyorum.

Deneyimlerime göre Web Formları, Win Forms ve WPF ile MVC'den daha benzer. Bunu göz önüne alındığında, ekibin bu tür teknolojide en fazla deneyime sahip olduğu durumlarda veya Web Formları projesinin varolan (veya aynı zamanda geliştirilen) Win Formları ile aynı veri kümesine bir arabirim sunacağı durumlarda Web Formları seçmeyi düşünebileceğini düşünüyorum. WPF projesi. Bunu yapmak, geliştiricilerin projeler arasında daha kolay geçmelerini sağlar, çünkü uygulama mantığı ikisi arasında oldukça benzer olabilir.

Diğer cevapların da belirttiği gibi, MVC çerçevesindeki gelişme Ruby, PHP, Python vb. Web geliştirmelerine Microsoft'a göre daha benzerdir; bu nedenle doğal olarak MVC seçimi, bu alanlardaki ekiplerin deneyiminden ve diğer cevaplarda sunulan faktörlerden etkilenebilir.


+1 Webformlar için kesinlikle makul bir argüman. Korkum, yeni şeyler öğrenmekten kaçınmak için ekiplerin bu zihniyeti takip etmeleri. MVC, bir takıma aşina olamayacak birçok kalıpla doldurulur. Bu tip paternleri öğrenmek ve bunları uygulamak, daha iyi bir genel sürdürülebilirlik anlamına gelen SOLID ilkelerine daha iyi uyumu sağlar. Bu kanıtlanmış teknikler aynı zamanda yeniden kullanılabilirliğin gerçek anahtarıdır.
P.Brian.Mackey

3

Birkaç yıl önce MVC'ye gitmeme sebebimiz, Microsoft'un olgunlaşmamış bir teknolojisiydi. Geçtiğimiz birkaç yıl boyunca şimdi daha olgun bir sürümdeyiz (4) ve MS, bunun nereye gittiğini hesapladı gibi görünüyor. Bununla birlikte, sürüm 4'te kullanmak istediğimiz özellikler olarak MVC kullanan büyük LOB uygulamaları geliştirmek konusunda hala isteksiziz, Windows 2012 sunucusu (IIS8 üzerinden web yuvaları). 1 yıl daha, MVC’nin daha fazla kabul edeceğimizi, umarım daha fazla üçüncü taraf kontrolleri olacağına, teknolojinin yerleşmiş olacağına ve bunu destekleyecek altyapıya sahip olacağımıza inanıyorum.


1
Windows Server 2012 için gerekli olan bu özelliklerden bazılarını listeleyebilir misiniz?
MikeTeeVee

2

Bu karar tercihlerinize, gereksinimlerinize ve hatta bilgi ve deneyiminize bağlıdır.

Eğitim MVC öğrenme veya bir teslim almak için zaman. Bütün bunlar bir ya da başka bir yaklaşımı seçmek için önemlidir.

Bu bir diğerinden daha iyi değil mi, sadece hem yaklaşım hem de çerçeveler artı ve eksilere sahip.

Kişisel olarak MVC 3'ü tercih ediyorum, kendi deneyiminizi edinmeyi denemenizi öneririm, ancak MVC'deki programın temiz, eğlenceli, esnek, genişletilebilir, güvenli ve yapılandırılmış bir yol olduğunu söylemeliyim.

Saygılarımızla,


2

MVC yerine WebForms'ı seçmemin tek nedeni, WebForms için MVC'den çok daha fazla 3. parti UI kontrolünün bulunmasıdır. MVC'yi seçtim çünkü WebForms ile çok çalıştım ve yeni / yeni bir şeyle çalışmak istiyorum ama yine de MS dükkanından :)

Temel olarak, hiçbir şey WebForms'ta görünüm alanını kapatmanızı ve ViewModels'i ve model bağlama ve sunucu tarafı denetimleri yerine döngüler için if / for kullanmasını engellemez.

Bu WebForms veya MVC kodu:

<% foreach (var item in Model.Items) { %>
<p><%: item.Name %></p>
<% } %>

WebForms'da bulduğum tek sınırlama, Bağımlılık Enjeksiyonu / Tersine Çevirme Kontrolü kullanıyorsanız, WebForms sayfalarının parametresiz bir yapıcıya sahip olması gerektiği için yapıcı enjeksiyonuna sahip olamayacağınızdır, bu nedenle özellik enjeksiyonunu kullanmanız gerekir. Bu gerçekten bu kadar büyük bir mesele mi?


1

ASP.NET MVC gerçekten Ruby'nin bir cevabı ve tarayıcıyı (istemci) sunucudan mümkün olduğunca ayırmanın yeni, modaya uygun ve (IMO) daha iyi bir yoludur.

ASP.NET Webforms , istemci tarafında sunucu tarafında size hemen hemen her şeye doğrudan erişime sahip olduğunuzdan çok fazla kontrol sağlar. Temel olarak görüşünüz ve denetleyiciniz aynıdır, bu size çok fazla güç verir ve çoğu zaman çok fazla karışıklık yaratır.

ASP.NET MVC , .aspx dosyasının ve web formlarında onlara eşlik eden .aspx.cs dosyasının sıkı bağlantılarını ayırarak görünümü ve denetleyiciyi ayırır.

Temel olarak fark, verileri görüntüleme dosyasına görüntülemek için işlemden çok daha fazlasına (tipik olarak hepsine) sahip olmak ve iş mantığını ve geri kalanını denetleyicide bırakmak, her ikisini de kongre yoluyla daha temiz tutmak ve aynı zamanda her birine daha az erişim sağlamaktır. web formlarından başka izin verir.


Öyleyse web formları MVC'ye göre tercih edilmeli mi? Bu, orijinal poster sorusuna cevap vermiyor.
Steven Striga

@WeekendWarrior - İstemciye sunucu tarafında daha fazla erişim yapmak istediğinizde, web formlarını seçin. Kodunuzda müşteri / sunucunun daha fazla ayrıştırılmasını istiyorsanız, MVC'yi seçin. Günün sonunda, ikisi de aynı şeyi yapıyor. Yeniden yönlendiren filtreler, MVC URL'leriyle aynı şeyi yapar ve daha fazla ayırmak için web formları kodunu arkasında ayrı bir orta katmana taşıyabilirsiniz. weblogs.asp.net/scottgu/archive/2010/01/24/…
Ryan Hayes

Üçüncü noktanıza gelince, bu iş mantığı .aspx.cs dosyasında sona eriyor - Sanırım geliştiricilerin hatası bu. Orada değil / olması gerekiyordu. Web biçimlerinde .aspx "view", .aspx.cs "denetleyici" eşdeğeridir, bir iş katmanı veya kaba taneli iş cephesi katmanı yoklayarak doğrudan yalnızca UI ile ilgili olan kodu işlemeyi amaçlamaktadır. İnsanların iş mantığını .aspx.cs dosyasına koyması gerçeği sadece zayıf programlama. Ayrıca, iş mantığını MVC'deki görüşe de dahil edebilirler! MVC bunların ayrılmasını zorlamaz.
James

Esasen buraya gönderilen diğer cevaplardan daha haklıdır. ASP.net, Microsoft tarafından oluşturulan modüler bir web teknolojisi ailesinin arkasındaki temel fikirdir. ASP.net MVC modülü geçici bir yutturmaca olabilir, ancak kesin olan son değil, hepsi ASP.net ile başlıyor, bu yüzden ne zaman ASPC seçileceğini düşünmüyorsanız, MVC'nin sizin bir şey olmadığını düşünüyorsanız başka OWIN veya ..., daha gelişmiş bir şey veya görevleriniz için kendi çerçevenizi oluşturdu. ASP.MVC'ye bile ihtiyacınız olmayabilir ve atlayıp Owin veya Katana'ya gidebilirsiniz, ancak o zamana kadar asp.net kullanana kadar
user3800527

1

Benim düşünceme göre, onlar yeterince ilişkili ve kabaca tercihlerine göre gereken kabiliyetlere sahipler.

Harika bir WebForms geliştiricisi, harika bir MVC geliştiricisi kadar güçlü bir ürün üretebilir. Ancak kendisini Web’de MVC’yi benimsemeye zorlayan büyük WebForms geliştiricisi kısa sürede ortaya çıkacak. Aynı şey WebForms’a bir şans veren harika bir MVC geliştiricisi için de geçerli.

Bunlar tamamen ayrı varlıklar değildir ve Microsoft her ikisini de desteklemeye devam ettiği sürece, her biri için karışık bir istisnai geliştirici grubu görmeye devam edeceğinize inanıyorum.


0

Bunların hepsi, kullandığımız teknolojide uzman olduğumuzu farz ederek kişisel seçim ile ilgili. WebForms tasarım yaklaşımını uzun yıllardır kullanıyorum ve tek dezavantajı, basit bir yaklaşım nedeniyle çoğu insanın geniş yeteneklerini ortaya çıkarmak için zaman ayırmadıkları olduğunu söylemeliyim.

Yakın zamanda bir projeyi tamamlamak için MVC'yi kullandım ve uygulama geliştirmeye (size daha fazla kontrol, temiz URL'ler, SOC vb.) Tasarım yaklaşımını oldukça beğenmeme rağmen, WebForms'ın sağlayabileceği pek bir şey yok. Aslında, jQuery'nin ortaya çıkışı ve bunun WebForms ile (MVC'nin yanı sıra) birlikte çalışması bu argümanları daha az sorun yarattı. Ve insanlar endişelerinin ayrılmasından MVC'nin MVP'ye göre bir avantaj olarak bahsettiği zaman, onlara Nesneye Yönelik programlama hakkında ne kadar bildiklerini ve soyutlama ve polimorfizm ilkelerini ne kadar kullandıklarını soruyorum.

Şu anda her iki teknolojiyi kullanmakta rahatım ve duruma göre seçim yapıyorum. Açıkçası, bu size kalmış, ancak gerçek şu ki, herkes belirli bir teknolojinin neler yapabileceğini derinlemesine öğrenmek için zaman ayırmıyor.


Web formlarının geniş yetenekleri hakkında aynı. Çoğu kişi web formlarının eğitim tekerleklerini görüyor ve bunu MVC ile karşılaştırıyor.
TheLegendaryCopyCoder

Bu gün ve yaşta (2013'te bile) HTML ve Javascript'in üzerine bir soyutlama öğrenmenin pek bir anlamı yoktur. Gelecekteki fırsatlarınız için size hiçbir faydası olmaz. HTML ve Javascript, olduğu gibi gayet iyi. Onunla savaşmak kaybedilen bir savaş.
kullanıcı441521

0

Bir programlama problemiyle karşılaştığımda, cevaplar için sık sık internete bakarım. Webforms, hemen hemen her şey hakkında tonlarca bilgi / bileşen içerir. MVC'de daha az kaynak nedeniyle çevrimiçi ve bir şeyler yapmak için gereken soyutlama katmanları bir zamanlar yapabileceğim şeyler için bir sınır oluşturdu. MVC toplamı, geliştirici olarak verimliliğimi öldürürken, Webform'lar bunu yapmaz. Şimdilik MVC yerini alacak kadar olgunlaşana kadar web formlarına bağlı kalıyorum.


0

Peki, WebForms daha fazla öğrenme kaynağına sahiptir (sadece daha eski olması nedeniyle) ve bu nedenle “bilinmeyen” yeni programcıların, MVC gibi yeni şeylerin aksine, bu eski teknoloji ile ilgili bilgi bulma olasılıkları daha yüksek olacaktır. .

Üst düzey / deneyimli programcılar daha eskidir ve programda eski programlara göre daha uzun süre programladıkları için eski teknolojide daha usta olacaktır.

Adamlarınızı MVC'de WebForms uygulamalarında olduğu kadar yetkin hale getirmek için harcadığınız para ve çabayı harcayamazsanız, şüphesiz yeni platformda güncellemeyi mümkün olduğunca uzun süre tutamayacaksınız.

Bu yüzden birkaç lojistik problem sunar: MVC'nin faydaları daha düşük kalite ve kullanım süresi açısından maliyeti ağırlıyor mu? Tamamen WebForms'da yazılmış bir sitem varsa, MVC'yi bu siteye entegre etmek için harcayacağınız çabaya değer mi gelir?

Önceki bir yorum yapan tarafından belirtildiği gibi MVC, WebForms ile yapabildiğiniz gibi kontrol cihazı ile aynı arayüz seviyesine ulaşmanızı da önler. Her şeyi “Kullanıcıları bir şeyler doldurmaktan / öğrenmekten sakınmak” yönündeyken, takımların yazdıkları her şey için bu paradigmaya fanatik bir şekilde yapışan bir programı kurması / uygulaması hala makul derecede zahmetli olabilir.


-1

Bence bu iki teknolojinin arasındaki boşluk eskisi kadar geniş değil.

  • Web formları, MVC'nin kullandığı yönlendirme motorunu kullanabilir (veya çok benzer bir şey).
  • Kod yöneticisi, komut dosyalarını birleştirebilir, bir CDN'den yükleme yapabilir ve hatta komut dosyalarının yüklenmesini geciktirebilir.

Sorunuzu doğrudan cevaplamak için, tercihin ve / veya projenin ne olduğunu düşünüyorum. Her ikisi de kalkınmaya önemli ölçüde farklı bir yaklaşım getiriyor. Şahsen ben MVC'ye doğru ilerlemeye çalışıyorum ama yine de Webformlarla çalışmaktan zevk alıyorum. Bence, her iki teknolojiyi de deneyimleyerek karar vermeniz için MVC veya Webforms kullanmanız gerekip gerekmediğine cevabınız sizin için.


1
Web formları ve MVC, varsayılan olarak kökten farklı bir web geliştirme tutumu önerir, bu önemlidir , az sayıda geliştirici "varsayılan" dan sapma gösterir. Her ikisi de aynı şeyi başarmak için kullanılabilir.
Raynos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.