it-swarm-tr.com

ASP.Net MVC vs web formlarını kullanmanın en büyük avantajı

Birini diğerine kullanmanın avantajlarından bazıları nelerdir?

164
user18931

ASP.net MVC'nin ana avantajları:

  1. Oluşturulan HTML üzerinde tam kontrol sağlar.

  2. Kaygıların temiz ayrılmasını sağlar (SoC).

  3. Etkinleştirir Teste Dayalı Geliştirme (TDD) .

  4. JavaScript çerçeveleri ile kolay entegrasyon.

  5. Ağın vatansız doğasının tasarımının ardından.

  6. SEO sağlayan RESTful URL'ler.

  7. ViewState ve PostBack etkinliği yok

ASP.net Web Formunun ana avantajı:

  1. Bu sağlar RAD geliştirme

  2. Winform geliştirmeden gelen geliştiriciler için kolay gelişim modeli.

166
cvs

ASP.NET Web Formları ve MVC, Microsoft tarafından geliştirilen iki web çerçevesidir - ikisi de iyi seçimlerdir. Ne web çerçeveleri ne de diğeri tarafından değiştirilmeyecek, ne de tek bir çerçevede “birleştirilmeleri” planlanmamıştır. Devam eden destek ve geliştirme Microsoft tarafından paralel olarak yapılır ve hiçbiri 'kaybolmayacak'.

Bu web çerçevelerinin her biri, bir web uygulaması geliştirilirken dikkate alınması gereken avantajlar/dezavantajlar sunar. Her iki teknolojiyi kullanarak bir web uygulaması geliştirilebilir - belirli bir uygulamanın geliştirilmesini, bir teknolojiyi diğerine karşı seçmeyi kolaylaştırabilir ve bunun tersini yapabilirsiniz.

ASP.NET Web Formları:

  • Geliştirme durumu destekler • Bir web uygulamasının Windows uygulamalarına benzer şekilde kullanıcının neler yaptığını bildiği yanılsamasını verir. Yani 'Sihirbaz' işlevselliğinin uygulanmasını biraz kolaylaştırır. Web formları, bu karmaşıklığın çoğunu geliştiriciden gizlemek için iyi bir iş çıkarır.
  • Hızlı Uygulama Geliştirme (RAD) • Sadece 'atlama' ve web formları sunmaya başlama yeteneği. Bu, bazı MVC topluluğu tarafından tartışılmakta, ancak Microsoft tarafından zorlanmaktadır. Sonunda, geliştiricinin uzmanlık seviyesine ve neyle rahat ettiklerini gösterir. Web formları modeli muhtemelen daha az deneyimli geliştiricilere daha az öğrenme eğrisine sahiptir.
  • Daha büyük kontrol araç kutus • ASP.NET Web Formları çok daha büyük ve daha güçlü bir araç kutusu (web kontrolleri) sunarken MVC, jQuery (Javascript) aracılığıyla zengin istemci tarafı kontrollerine daha fazla dayanan daha ilkel bir kontrol seti sunar.
  • Olgun • 2002'den beri var ve sorular, problemler, vb. Konularında bol miktarda bilgi var. Daha fazla üçüncü taraf kontrolü sunuyor - mevcut araç kitlerini dikkate almanız gerekiyor.

ASP.NET MVC:

  • Endişelerin ayrılması (SoC) • Teknik açıdan, MVC içindeki kodun organizasyonu çok temiz, düzenli ve ayrıntılıdır, bir web uygulamasının işlevsellik açısından ölçeklendirilmesini kolaylaştırır (umarım). Geliştirme açısından mükemmel tasarımı teşvik eder.
  • İstemci tarafı araçlarıyla daha kolay entegrasyon (zengin kullanıcı arayüzü araçları) • Her zamankinden daha fazla, web uygulamaları masaüstlerinde gördüğünüz uygulamalar kadar zengin oluyor. MVC ile, bu tür araçlarla (jQuery gibi) Web Formlarında olduğundan daha kolay ve daha sorunsuz bir şekilde bütünleştirme yeteneği sunar.
  • Arama Motoru Optimizasyonu (SEO) Dostu/Stateless • URL’ler arama motorlarına daha uygundur (örn. kimliği oturumda geçti)). Benzer şekilde, MVC durumsuz olduğundan, bu durum aynı pencereden birden fazla web tarayıcısı oluşturan kullanıcıların baş ağrısını giderir (oturum çarpışmaları). Aynı hatlar boyunca, MVC, 'karşı mücadele' yerine vatansız ağ protokolüne bağlı kalmaktadır.
  • Yüksek derecede kontrol gerektiren geliştiricilerle iyi çalışır • ASP.NET web formlarındaki çoğu kontrol, bir sayfa oluşturulduğunda gördüğünüz ham HTML'nin çoğunu otomatik olarak oluşturur. Bu, geliştiriciler için baş ağrısına neden olabilir. MVC ile, yapılanlar üzerinde tam kontrol sahibi olma yönünde kendisini daha iyi ödünç veriyor ve sürprizleri yok. Daha da önemlisi, HTML formlarının tipik olarak performans artışına eşit olabilecek Web formlarından çok daha küçük olması - ciddi bir şekilde düşünülmesi gereken bir şey.
  • Test Odaklı Gelişme (TDD) • MVC ile işlerin web tarafı için daha kolay testler oluşturabilirsiniz. Ek bir test katmanı, beklenmeyen davranışlara karşı yine bir başka savunma katmanı sağlayacaktır.

Kimlik doğrulama, yetkilendirme, yapılandırma, derleme ve dağıtım, iki web çerçevesi arasında paylaşılan özelliklerin tümüdür.

91
J.C.

Klasik hatırlamak için yeterince yaşlı olan herkes ASP, html ve javascript ile karıştırılmış bir kod içeren bir sayfa açma kabusunu hatırlayacaktır - en küçük sayfa bile onun ne halt ettiğini anlamak için bir acıydı. Yanılıyor olabilirim ve umarım öyleyim ama MVC eski kötü günlere dönüyor gibi görünüyor.

ASP.Net geldiğinde, kurtarıcı olarak selamlandı, kodun içerikten ayrılması ve web tasarımcılarının html oluşturmalarını ve kodlayıcıların arkasındaki kod üzerinde çalışmamızı sağladı. ViewState kullanmak istemiyorsak, kapattık. Bir nedenden dolayı kod kullanmak istemiyorsak, kodumuzu html'nin içine klasik ASP gibi yerleştirebiliriz. PostBack kullanmak istemiyorsak, işlem için başka bir sayfaya yönlendirildik. ASP.Net kontrollerini kullanmak istemiyorsak standart html kontrollerini kullandık. Kontrollerimizde ASP.Net runat = "server" kullanmak istemiyorsak Response nesnesini sorgulayabiliriz.

Şimdi büyük bilgeliğine sahip biri (muhtemelen klasik ASP'yi hiç programlamamış birisi) içeriği kodla karıştırmanın ve "endişelerin ayrılması" olarak adlandırmanın günlerine dönmenin zamanı geldiğine karar verdi. Elbette, temizleyici html oluşturabilirsiniz, ancak klasik ASP ile de yapabilirsiniz. "Görünümünüzde çok fazla kod varsa, doğru şekilde programlama yapmıyorsunuz" demek, "klasik ASP içinde iyi yapılandırılmış ve yorumlanmış bir kod yazdıysanız, ASP.NET'ten çok daha temiz ve daha iyidir" demektir.

İçeriği olan kodları karıştırmaya geri dönmek istersem, bu tür bir gelişim için çok daha olgun bir ortamı olan PHP kullanarak gelişmeye bakardım. ASP.NET ile pek çok sorun varsa o zaman neden bu sorunları düzeltmiyorsunuz?

Son fakat en az değil, yeni Razor motoru html ve kod arasında ayrım yapmanın daha da zor olduğu anlamına geliyor. En azından ASP içinde etiketleri <% ve%> açıp kapatmayı araştırabiliriz, ancak şimdi tek gösterge @ simgesi olacak.

PHP e geçme ve birinin kodu bir kez daha içerikten ayırması için 10 yıl daha beklemesi zaman alabilir.

17
Kevin Farrow

PHP veya JSP (ve Rails tahmin ediyorum) gibi diğer geliştiricilerle çalışıyorsanız, sayfalara dönüştürme veya işbirliği yapma konusunda çok daha kolay bir zamana sahip olacaksınız çünkü tüm bunlara sahip olmayacaksınız 'pis' ASP.NET olayları ve her yerde kontrol eder.

14
Simon_Weaver

MVC'nin sorunu, "uzmanlar" için bile çok fazla zaman harcadığı ve çok çaba gerektirdiğidir. İşletmeler, arkasındaki teknolojiye bakılmaksızın, “işe yarayan Hızlı Çözüm” adlı temel şey tarafından yönlendiriliyor. WebForms, zamandan ve paradan tasarruf sağlayan bir RAD teknolojisidir. Daha fazla zaman gerektiren hiçbir şey işletmeler tarafından kabul edilemez.

13
Merc
  1. Uygun AJAX, örn. JSONKısmen sayfa geri gönderme saçmalama yapılmaz.
  2. görüntülenme alanı yok +1
  3. HTML kimliklerini yeniden adlandırma yok.
  4. Temiz HTML = şişkinlik yok ve XHTML veya standartlarla uyumlu sayfaları görüntülerken iyi bir çekime sahip olmak.
  5. Artık oluşturulan AXD javascript.
11
Francis Shanahan

ASP.Net üzerinden MVC'de HERHANGİ bir avantaj görmedim. 10 yıl önce Microsoft MVC'nin cevabı olarak UIP (Kullanıcı Arayüzü Süreci) ile geldi. Bir fiyasko oldu. O zamanlar UIP ile birlikte büyük bir proje (4 geliştirici, 2 tasarımcı, 1 testçi) yaptık ve tam bir kabus oldu.

Hype uğruna sadece kavgaya atlamayın. Yukarıda listelenen tüm avantajlar Asp.Net'te zaten mevcut (Daha büyük tweaks ile [ Asp.Net 4'teki yeni özellikler ] Asp.Net 4'te).

Geliştirme ekibiniz veya Asp.Net'li tek bir geliştirici ailenin sadece buna bağlı kalması ve müşterilerinizi memnun etmek için hızlıca güzel ürünler yapması (çalışma saatlerinizi öder). MVC değerli zamanınızı tüketecek ve Asp.Net :-) ile aynı sonuçları üretecek

9

Benim için en büyük tek avantaj, Model, Görünüm ve Denetleyici katmanlarınız arasındaki kesin ayrım olacaktır. Baştan beri iyi tasarımın teşvik edilmesine yardımcı olur.

9
Matthew Ruston

Francis Shanahan,

  1. Neden kısmi postback "saçma" olarak adlandırılıyor? Ajax'ın temel özelliği budur ve Atlas çerçevesinde ve Telerik gibi harika üçüncü taraf kontrollerinde çok iyi kullanılmıştır.

  2. Bakış açısıyla ilgili fikrinizi kabul ediyorum. Ancak geliştiriciler görünüm alanını devre dışı bırakmak konusunda dikkatliyse, bu, oluşturulan HTML'nin boyutunu büyük ölçüde azaltabilir, böylece sayfa hafifleşir.

  3. ASP.NET Web Form modelinde yalnızca HTML Sunucusu denetimleri yeniden adlandırılır, yalnızca saf HTML denetimleri kullanılmaz. Her ne olabilirse, yeniden adlandırma yapılırsa neden bu kadar endişelisin? İstemci tarafında birçok javascript olayıyla uğraşmak istediğinizi biliyorum, ancak web sayfalarınızı akıllıca tasarlarsanız, istediğiniz kimliği kesinlikle alabilirsiniz.

  4. ASP.NET Web Formları bile XHTML Standartlarına uygundur ve hiçbir şişkinlik görmüyorum. Bu, neden bir MVC şablonuna ihtiyaç duyduğumuzun bir gerekçesi değildir.

  5. Yine, neden AXD Javascript ile rahatsız edildiniz? Neden seni incitiyor? Bu tekrar geçerli bir gerekçe değil

Şimdiye kadar klasik ASP.NET Web formlarını kullanan uygulamalar geliştirmenin hayranıyım. Örneğin: Bir açılır listeyi veya ızgara görünümünü bağlamak istiyorsanız, en fazla 30 dakikaya ve en fazla 20 satır koduna ihtiyacınız var (en az tabiki). Ancak MVC durumunda, geliştiricilere ne kadar acı olduğunu söyleyin.

MVC'nin en büyük dezavantajı ASP günlerine geri dönüyoruz. Sunucu kodunu ve HTML kodunu karıştırmanın spagetti kodunu hatırlayın ??? Aman Tanrım, javascript, HTML, JQuery, CSS, Sunucu etiketleri ve ne ile karıştırılmış bir MVC aspx sayfasını okumayı deneyin.

8
Ganesh

Web formları ayrıca, Telerik gibi üçüncü taraf kontrol sağlayıcılarından daha fazla olgunluk ve destekten de faydalanır.

6
Timbo

Web formlarında, PageAdapters ile kaldırılabilen, görüntüleme durumu, olay geçerliliği ve benzeri gibi birkaç etiket dışında, neredeyse bütün html'leri elle de oluşturabilirsiniz. Hiç kimse sizi GridView veya kötü html renderleme çıktısı olan başka bir sunucu kontrolü kullanmaya zorlamaz.

MVC'nin en büyük avantajının HIZ olduğunu söyleyebilirim!

Sonraki endişe ayrılık zorlanır. Ancak Denetleyici/Eylem içine tüm BL ve DAL mantığını koymanız yasaktır! Web formlarında da yapılabilecek sadece görüş ayrımıdır (örneğin, MVP deseni). İnsanların mvc için bahsettiği birçok şey web formlarında yapılabilir, ancak bazı ek çabalarla.
Başlıca fark, isteğin denetleyiciye gelmesi, görmemesi ve web katmanlarında olduğu gibi kısmi sınıflar aracılığıyla bağlanmadığında bu iki katman ayrılmasıdır (arkadaki aspx + kodu)

5
Hrvoje Hudo

Benim 2 kuruş:

  • ASP.net formları, Hızlı uygulama geliştirme ve hızla iş değeri katma için harikadır. Hala çoğu intranet uygulamaları için kullanıyorum.
  • MVC, URL’yi ve HTML’yi daha büyük ölçüde kontrol ederken Arama Motoru Optimizasyonu için mükemmeldir
  • MVC genellikle çok daha yalın bir sayfa oluşturur - görünüm alanı ve temizleyici yok HTML = hızlı yükleme süresi
  • MVC sayfanın bölümlerini önbelleğe almak kolay. -MVC yazmak eğlencelidir: - kişisel görüş ;-)
4
Nicholas

MVC, bir sayfada birden fazla forma sahip olmanıza izin verir, Bildiğim küçük bir özellik ama kullanışlı!

Ayrıca, MVC kalıbı kodun korunmasını kolaylaştırdığını hissediyorum, özellikle. birkaç ay sonra tekrar ziyaret ettiğinizde.

3
Almond

MVC Kontrolörü:

    [HttpGet]
    public ActionResult DetailList(ImportDetailSearchModel model)
    {
        Data.ImportDataAccess ida = new Data.ImportDataAccess();
        List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly);

        return PartialView("ImportSummaryDetailPartial", data);
    }

MVC Görünümü:

<table class="sortable">
<thead>
    <tr><th>Unique Id</th><th class="left">Error Type</th><th class="left">Field</th><th class="left">Message</th><th class="left">State</th></tr>
</thead>
<tbody>
    @foreach (Data.ImportDetailData detail in Model)
    {
    <tr><th>@detail.UniqueID</th><th class="left">@detail.ErrorType</th><th class="left">@detail.FieldName</th><th class="left">@detail.Message</th><th class="left">@detail.ItemState</th></tr>
    }
</tbody></table>

Bu ne kadar zor? ViewState yok, BS Sayfası yok yaşam döngüsü ... Sadece saf verimli kod.

2
Jason

Bulduğum ana fayda, projeyi daha test edilebilir bir yapıya zorlaması. Bu web formları ile de kolayca yapılabilir (MVP modeli), ancak geliştiricinin bunu anlamadığını, çoğunun bilmediğini gerektirir.

Web formları ve MVC, her ikisi de Excel'in farklı alanlardaki geçerli araçlarıdır.

Öncelikle B2B/LOB uygulamaları geliştirdiğimiz için web formlarını kişisel olarak kullanıyorum. Ancak birim testlerimizde her zaman% 95 + kod kapsamı elde edebileceğimiz bir MVP deseni ile yapıyoruz. Bu aynı zamanda webcontrols özellik değerlerini test etme özelliğini otomatikleştirmemizi de sağlar.

bool IMyView.IsAdminSectionVisible{
       get{return pnlAdmin.Visible;}
       get{pnlAdmin.Visible=value;}
    }

() Bu test seviyesinin MVC'ye, modelimi sorgulamadan kolayca ulaşılabileceğini sanmıyorum.

1
En.

Küçük siteler için sadece iki avantajı görebiliyorum: 6) SEO sağlayan RESTful URL'ler. 7) ViewState ve PostBack etkinliği yok (ve genel olarak daha yüksek performans)

Küçük siteler için test yapmak bir sorun değildir, ne de bir site düzgün bir şekilde kodlandığında tasarım avantajları değildir, MVC birçok yönden şaşırtmakta ve değişiklik yapılmasını zorlaştırmaktadır. Hala bu avantajların buna değip değmeyeceğine karar veriyorum.

Daha büyük çoklu geliştirici sitelerdeki MVC'nin avantajını açıkça görebiliyorum.

1
Rod Rye

Artık 'geri kontrol dışı kontrolleri' kullanmaktan korkmuyorsunuz - ve onları geleneksel bir asp.net ortamına nasıl aktaracağınızı bulmakta.

Bunun anlamı, modern (kullanımı ücretsiz) javascript kontrolleri this veya this veya this , yuvarlak bir kazana uymaya çalışmaksızın kullanılabilir. kare bir delikte hissediyorum.

0
Simon_Weaver

Benim kişisel görüşüm, ASP.Net MVC kullanmanın en büyük avantajı, CODE BLOCKSHTML.. ile karıştırılmış olmasıdır.
html cehennemi sürdüren geliştiriciler için cehennem ...

0
Nitin Sawant

Modern javascript kontrolleri ve JSON talepleri MVC kullanılarak çok kolay bir şekilde ele alınabilir. Orada bir eylemden diğerine veri göndermek için birçok başka mekanizma kullanabiliriz. Bu yüzden MVC'yi web formlarına tercih ediyoruz. Ayrıca hafif sayfalar oluşturabiliriz.

0
Prasanth