Web Formları üzerinde neden MVC kullanıyorsunuz?


11

Son zamanlarda bir mimar, şirketimizi tek ihtiyacı olan bir Toyota (Web Formları) olduğunda Rolls-Royce çözümü (MVC) önerdiğini açıkladı.

Mimari bir seçim olarak web formları vs MVC hakkında ne düşündüğünüzü merak ediyorum.


11
Mimarın ASP.NET MVC hakkında çok iyi bir anlayışa sahip olmadığını düşünüyorum.
Adam Crossland

3
@Chris Webforms, MVC'nin bir alt kümesi değildir. Her ikisi de birbirinden tamamen bağımsız çalışır. Ayrıca web formları eskidir ve muhtemelen daha uzun süre sürdürülmemektedir. Ayrıca, ön uç web / UI devs için anti-christ olduğunu.
Erik Reppen

Yanıtlar:


20

Rolls-Royce / Toyota benzetmesi son derece kusurlu ve yanıltıcı. Biri (ASP.NET MVC) basitçe diğerinin daha pahalı ya da daha pahalı bir sürümü değildir (ASP.NET WebForms). ASP.NET kullanarak web uygulamaları oluşturmak için oldukça farklı yaklaşımlardır.

Bana göre, MVC ve WebForms arasındaki en büyük mimari fark, web'in durumsuz ortamıyla nasıl çalıştıklarıdır: WebForms, web programlamasının vatansız doğasını gizleyen bir dizi soyutlama oluşturmak için çok çalışıyor, MVC ise vatansız ortamı kucaklıyor ve o.

Her yaklaşımın faydaları ve zararları vardır, ancak MVC ile web siteleri oluşturmanın WebForms'dan ( sızan soyutlama katmanı üzerindeki katmanı ile) çok daha doğal hissetmesinden gerçekten zevk alıyorum .


1
bu ahlaksız soyutlama çok sorunlu. Asp. Net MVC'yi öğrenmek http protokolünde gözlerinizi açar
Michal Franc

10

Eski bir soru ama dışarıda herhangi birisinin hala üzerinde bir ikilem olması durumunda daha ayrıntılı bir cevabı hak ediyor.

Nihayetinde, webforms, bir dizi güzel düğmeye basmanız ve ön uç (istemci) öğelerinin sizin için oluşturulduğu anlamına gelen ince bir istemci çözümüdür. Web formlarında nasıl krank yapacağınızı bilen insanlarınız varsa ve kesinlikle sürdürülebilirlik / değiştirilebilirlik endişeleri yoksa ve site tamamen kısa vadeli ve tek kullanımlıksa, bu yaklaşımda yanlış olan hiçbir şey yoktur. Kendi işlerinizi nasıl yapacağınızı öğrenmek mümkündür, ancak bu durumda hem web formlarının hem web uygulamalarının .NET uygulama geliştiricilerini korumaya çalıştığını hem de çoğu istemci tarafı web geliştiricisinin Microsoft'u öldürmek istemesini sağlayan tüm web formlarını bilmesini gerektirir. sorumlu mühendisler.

Diğer tüm kullanım senaryolarının% 99,5'inde, web'i uygulama geliştiricilerinden gizlemeye çalışmayı bıraktık çünkü gerçekten, web uygulamaları yazmak istiyorsanız aslında web'in nasıl çalıştığını öğrenmeniz çok daha iyi. Kalın ve ince istemci çözümlerinin ironisi, kaçınılmaz olarak ince istemci yaklaşımının kaçınılmaz olarak ön ucunuzdan boktan şişmesi ve performanstan başka bir şey olmamasıdır. Daha da önemlisi, bu çözümler ne yaptığını gerçekten bilen ve yürürlükteki çerçeveyle sınırlanmak istemeyen insanlar için her şeyi cehennem gibi esnek hale getirmiştir.

CSS, JavaScript, HTML, XHR hakkında her şeyi bilen birini almak ve onları yolun her adımında engel oluşturarak tamamen yararsız hale getirmek kadar anlamsız bir şey yok ...

  • Komut dosyası bağımlılıklarını azaltmanızı önlemek için başlık etiketlerindeki 'gereksiz' tüm komut dosyası etiketlerini temizler. (bir 'script yöneticisinin' bunu sizin için halletmesine izin vermek daha iyidir) Verilmiş, kimse bugün ne yaptığını biliyorsa, onları oraya koymaz ama bu sadece berbattır.

  • Tüm HTML'yi çok büyük bir form etiketine sarmanız konusunda ısrar ediyor. HTML, formların içindeki formlara izin vermez, bu nedenle web formlarını herhangi bir şekilde veya hiçbir şekilde oluşturmazsınız.

  • Sunucuya mesaj göndermek ve ardından sunucu yanıt verdiğinde tepki vermek için tarayıcıyla etkileşime girerek UI olaylarına tepki vermek için gerçekten kaynatılması gerekenler için 18 adımlı bir "yaşam döngüsü" gibi oluşturur. Bu süreci büyük bir çöp yığınıyla soyutlamak hiç bir zaman gerekli olmadı (ve adil olmak gerekirse, MS bunu yapmaya çalışan tek jackass değil).

  • Aslında sorunlara webform olmayan çözümleri kullanmada mümkün olan her şeyi yapar. Örnek: Daha küçük bir müşteri tarafı geliştirici olduğumda, bütün bir günü sayfanın üst kısmında bir gönderme düğmesi yapmanın bir yolunu bulmak için harcadım (sayfanın altındaki bir gönderme düğmesini tetiklediğim için) dev biçimli şey). Normalde bu 5 dakika sürer, ancak birkaç saat tersine mühendislikten sonra web sorumlusu JavaScript sorumludur, son form öğesinin ne olacağını söyleyen bir mülk belirleyen başka şeyler arasında olduklarını keşfettim. odaklama, bir gönderme düğmesi tıklandığında, resmi bir Microsoft Gönderme (tm) işleyicisinin etkinleştirilmesi ile ilgili olarak yalnızca resmi Microsoft Gönderme (tm) düğmesinin çalışmasıydı.

Yani hayır, Rolls-Royce vs Toyota, tamamen mantıksız. Daha fazlasını söyleyebilirim ki, Microsoft dışındaki birinden gaz veya petrol satın aldığınızı ve otomatik olarak algılanan otomatik olarak keskin 90 derece dönüş yapan yerleşik bir sisteme sahip bir Microsoft mühendisli Pinto'ya karşı çok fazla ödediğiniz çok makul bir Hyundai. içine slam uygun duvar. Web hakkında hiçbir şey bilmeyen ve Microsoft'a ömür boyu sadakat yemini etmek isteyen intihara meyilli markaya sadık sürücü için ideal bir otomobil.

Tüm .NET MVC gerçekten, basit ve makul ve web üzerinde tokat tokatlamak için kendi katmanını yeniden yaratmaz. Sadece sizin için bazı kazanı çıkarmaya yardımcı olmak için orada olanlarla çalışır. Daha iyi / daha ucuz / serbest çalışan çerçeveler var, ancak kendinizi .NET'e zaten kilitlediyseniz, çok daha kötü yapabilirsiniz.

Ama cidden,! @ # $ 'I web formlarından uzak tutun. Artık neredeyse ölmüştü. Bırak gitsin. Müşterilerinize, yeni veya farklı bir şey yapmak istedikleri veya MS'in bile yapamayacağı için saçmalamaya başladığı zaman size özel ve kazançlı bir saat başı destek sözleşmesi vaat ettikleri takdirde bunu üç kez para için yapacağınızı söyleyin 10.000 satırlık ajax.js dosyasının behemoth'una eklemeye devam etmek zahmetine kapılırlar.


Merhaba Erik sana cevap vermeyi sevdi, bu yüzden benim vizemi aldın. Sadece HTML 5 ve CSS öğrenmek böylece yayınınız çok bilgilendiriciydi.
Çad

+1 Çok güzel bir cevap! MVC'den yıllardır kaçıyorum çünkü web formlarına daha karmaşık bir yaklaşım olacağını düşündüm. Gerçekte web formlarıyla ne yapmaya çalıştığımı daha kolay hale getirecek gibi görünüyor (örneğin her zaman Komut Dosyası Yöneticisi gibi tüm Microsoft BS'den kaçınmaya çalışıyorum).
Drew Chapin

6

ASP.NET MVC çözümünün WebForms çözümünden daha karmaşık olması gerekmez. Şahsen, ASP.NET MVC'yi aslında WebForms'tan çok daha basit buluyorum ve kesinlikle doğal olarak daha temiz görünüyor.

Deneyimlerime göre, birçok MVC çerçevesi (ASP.NET, Rails, CodeIgniter, vb.) Aynı temel işlevsellik ve kuralların çoğuna sahiptir. WebForms gerçekten bir web açısından garip ördek. Tahminimce çoğu web programcısı ASP.NET MVC'yi WebForms'tan çok daha hızlı seçiyor.


5

ASP.NET MVC'yi ASP.NET WebForms üzerinden kullanmanızın en önemli nedeni test edilebilirliktir. Tabii ki WebForms birim testi yapabilirsiniz ama bu alaycı çerçeveler ve çok acı gerektirir. İkinci neden, MVC'nin endişeleri ayırmayı biraz daha kolaylaştırmasıdır . Bu, kodun yeniden kullanılmasını sağlayabilir ve kodunuzu gevşek bir şekilde birleştirebilir. Bu, ASP.NET'te MVP gibi desenlerle aynı şeyi yapmanın imkansız olduğu anlamına gelmez.

MVC'nin dezavantajı, çok fazla işlevselliği kaybetmeniz ve son on yılda WebForms'a (neredeyse neredeyse) entegre edilmiş olmasıdır. MVC, kuruluşundan bu yana benzer özellikler sunmak için uzun bir yol kat etti.

Performans ile ilgili olarak, herhangi birinin şu ya da bu teknolojinin "daha hızlı" olduğuna dair bir kanıtı var mı?

Birinin diğerinden daha iyi olduğunu düşünmüyorum. MVC çerçevesini gerçekten çok beğendim ve büyük bir başarı ile kullandım, ancak her zaman projeyle eşleşen teknolojiyi seçtiğimden eminim.

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.