Yanıtlar:
ASP.net MVC'nin ana avantajları :
Oluşturulan HTML üzerinde tam kontrolü etkinleştirir.
Endişelerin temiz bir şekilde ayrılmasını sağlar (SoC).
Test Odaklı Geliştirmeyi (TDD) etkinleştirir .
JavaScript çerçeveleriyle kolay entegrasyon.
Ağın vatansız doğasının tasarımını takiben.
SEO sağlayan RESTful URL'ler.
ViewState ve PostBack olayları yok
ASP.net Web Formunun ana avantajı :
Bu sağlar RAD gelişimini
Winform geliştirmeden gelen geliştiriciler için kolay geliştirme modeli.
ASP.NET Web Formları ve MVC, Microsoft tarafından geliştirilen iki web çerçevesidir - ikisi de iyi seçimlerdir. Ne web çerçeveleri diğeriyle değiştirilmeyecek ne de bunların tek bir çerçevede 'birleştirilmesi' planları yoktur. Sürekli destek ve geliştirme Microsoft tarafından paralel olarak yapılır ve ikisi de 'ortadan kalkmaz'.
Bu web çerçevelerinin her biri, bazıları bir web uygulaması geliştirirken 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 veya tersini yapabilir.
ASP.NET Web Formları:
ASP.NET MVC:
Kimlik doğrulama, yetkilendirme, yapılandırma, derleme ve dağıtım , iki web çerçevesi arasında paylaşılan özelliklerdir .
Klasik ASP'yi hatırlayacak kadar yaşlı olan herkes, html ve javascript ile karıştırılmış kodlu bir sayfa açmanın kabusunu hatırlayacak - en küçük sayfa bile ne halt yaptığını anlamak için bir acıydı. Yanlış olabilirdim ve umarım öyleyim, ama MVC o eski kötü günlere geri dönmek gibi görünüyor.
ASP.Net ortaya çıktığında, kodu içerikten ayırarak ve web tasarımcılarının html oluşturmasını ve kodlayıcıların arkasındaki kod üzerinde çalışmasını sağlayarak kurtarıcı olarak selamlandı. ViewState'i kullanmak istemeseydik, kapattık. Bir nedenden dolayı kodu arkasında kullanmak istemiyorsak, kodumuzu klasik ASP gibi html içine yerleştirebiliriz. PostBack'i kullanmak istemeseydik, işlenmek üzere başka bir sayfaya yönlendirdik. ASP.Net denetimlerini kullanmak istemiyorsak standart html denetimlerini kullandık. Denetimlerimizde ASP.Net runat = "server" kullanmak istemiyorsak Yanıt nesnesini sorgulayabiliriz.
Şimdi büyük bilgeliğinden biri (muhtemelen klasik ASP'yi hiç programlamamış biri), kodun içerikle karıştırıldığı günlere geri dönüp "endişelerin ayrılması" dediği zamana karar verdi. Elbette, temiz html oluşturabilirsiniz, ancak klasik ASP ile yapabilirsiniz. "Görünümünüzde çok fazla kod varsa doğru şekilde programlamıyorsunuz" demek, "klasik ASP'de iyi yapılandırılmış ve yorumlanmış bir kod yazdıysanız ASP.NET'ten çok daha temiz ve daha iyi" demek gibidir.
Eğer içerik ile kod karıştırma geri dönmek istedim ben bu tür bir geliştirme için çok daha olgun bir ortam olan PHP kullanarak geliştirmeye bakmak istiyorum. ASP.NET ile ilgili çok fazla sorun varsa neden bu sorunları düzeltmiyorsunuz?
Son olarak, yeni Razor motoru, html ve kod arasında ayrım yapmanın daha zor olduğu anlamına geliyor. En azından ASP'de <% ve%> etiketlerini açıp kapatabiliriz, ancak şimdi tek gösterge @ sembolü olacaktır.
PHP'ye geçip birinin kodu içerikten tekrar ayırması için 10 yıl daha beklemenin zamanı gelmiş olabilir.
PHP veya JSP gibi diğer geliştiricilerle çalışıyorsanız (ve rayları tahmin ediyorum) - tüm bu 'kötü' ASP.NET'e sahip olmayacağınız için sayfaları dönüştürmek veya işbirliği yapmak çok daha kolay bir zaman geçireceksiniz. her yerde olaylar ve kontroller.
MVC ile ilgili sorun "uzmanlar" için bile çok değerli zaman yiyor ve çok çaba gerektiriyor olmasıdır. İşletmeler, arkasındaki teknolojiden bağımsız olarak "Hızlı Çözüm" işlevi gören temel şey tarafından yönlendirilir. WebForms zaman ve para tasarrufu sağlayan bir RAD teknolojisidir. Daha fazla zaman gerektiren hiçbir şey işletmeler tarafından kabul edilemez.
Benim için en büyük avantaj, Model, Görünüm ve Kontrolör katmanlarınız arasındaki net ayrımdır. En başından itibaren iyi tasarımın tanıtımına yardımcı olur.
ASP.Net üzerinde MVC herhangi 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 büyük bir proje (4 geliştirici, 2 tasarımcı, 1 test cihazı) yaptık ve tam bir kabustu.
Sadece Hype uğruna bandwagon'a atlamayın. Yukarıda listelenen tüm avantajlar Asp.Net'te zaten mevcuttur ( Asp.Net 4'te daha büyük ayarlarla [ Asp.Net 4'teki yeni özellikler ].
Geliştirme ekibiniz veya Asp.Net'li tek bir geliştirici ailesi buna bağlıysa ve müşterilerinizi memnun etmek için hızlı bir şekilde güzel ürünler yapın (çalışma saatlerinizi ödeyen). MVC değerli zamanınızı tüketecek ve Asp.Net ile aynı sonuçları üretecektir :-)
Francis Shanahan,
Neden kısmi postback'i "saçmalık" olarak adlandırıyorsunuz? Bu, Ajax'ın temel özelliğidir ve Atlas çerçevesinde ve Telerik gibi harika üçüncü taraf kontrollerinde çok iyi kullanılmıştır.
Gösterim durumu ile ilgili fikrinizi kabul ediyorum. Ancak, geliştiriciler görünüm durumunu devre dışı bırakmaya dikkat ederse, bu, oluşturulan HTML'nin boyutunu büyük ölçüde azaltabilir ve böylece sayfa hafif hale gelir.
Yalnızca HTML Server denetimleri saf html denetimleri yerine ASP.NET Web Form modelinde yeniden adlandırılmıştır. Ne olursa olsun, yeniden adlandırma yapılırsa neden bu kadar endişelisiniz? İstemci tarafında birçok javascript etkinliği ile uğraşmak istediğinizi biliyorum, ancak web sayfalarınızı akıllıca tasarlarsanız, istediğiniz tüm kimlikleri kesinlikle alabilirsiniz
ASP.NET Web Formları bile XHTML Standartlarını karşılar ve herhangi bir şişkinlik görmüyorum. Bu neden bir MVC modeline ihtiyacımız olduğuna dair bir gerekçe değil
Yine neden AXD Javascript ile uğraşıyorsunuz? Seni neden acıtıyor? Bu yine geçerli bir gerekçe değil
Şimdiye kadar, klasik ASP.NET Web formlarını kullanarak uygulama geliştirme hayranıyım. Örneğin: Bir açılır listeyi veya tablo görünümünü bağlamak istiyorsanız, en fazla 30 dakika ve 20 satırdan fazla kod (en az elbette) olması gerekir. Ancak MVC durumunda, geliştiricilerle ne kadar acı olduğunu konuşun.
MVC en büyük dezavantajı geri ASP gün gidiyoruz. Sunucu kodu ve HTML karıştırmak spagetti kod hatırlıyorum ??? Aman tanrım, javascript, HTML, JQuery, CSS, Sunucu etiketleri ile karışık bir MVC aspx sayfası okumaya çalışın ve ne değil .... Herhangi bir vücut bu soruya cevap verebilir?
Web formları ayrıca, Telerik gibi üçüncü taraf kontrol sağlayıcılarının daha fazla olgunlaşmasından ve desteğinden yararlanmaktadır.
Web formlarında, PageAdapters ile kaldırılabilen viewstate, eventvalidation ve benzeri gibi birkaç etiket dışında neredeyse tüm html'yi elle oluşturabilirsiniz. Kimse sizi GridView veya kötü html oluşturma çıktısına sahip başka bir sunucu tarafı denetimi kullanmaya zorlamaz.
MVC'nin en büyük avantajının HIZ olduğunu söyleyebilirim!
Sıradaki kaygının ayrılmasıdır. Ancak tüm BL ve DAL mantığını Controller / Action içine koymanız yasak değildir! Web formlarında da yapılabilen sadece görünüm ayrımıdır (örneğin MVP deseni). İnsanların mvc için bahsettikleri bir çok şey web formlarında yapılabilir, ancak bazı ek çabalarla.
Temel fark, isteğin denetleyiciye gelip görünmemesi ve bu iki katmanın ayrılması, web formlarında olduğu gibi kısmi sınıf aracılığıyla bağlanmamış olmasıdır (aspx + kod arkasında)
2 sentim:
MVC bir sayfada birden fazla form olmasını sağlar, Bildiğim küçük bir özellik ama kullanışlı!
Ayrıca MVC desen Ben, esp. birkaç ay sonra tekrar ziyaret ettiğinizde.
runat="server"
hala web formlarını kullanmak istediğinizde form olmayan bir etikette çok fazla kullanım yoktur ve formları iç içe alamayacağınız / yapamadığınız için, ne demek istediğini açık bir şekilde :)
MVC Denetleyici:
[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, BS Sayfası yaşam döngüsü yok ... Sadece saf verimli kod.
Daha küçük siteler için sadece iki avantajı görebilirsiniz: 6) SEO sağlayan RESTful URL'ler. 7) ViewState ve PostBack olayları yok (ve genel olarak daha yüksek performans)
Küçük siteler için test yapmak bir sorun oluşturmaz, bir site zaten düzgün bir şekilde kodlandığında tasarım avantajları da değildir, MVC birçok yönden gizler ve değişiklikleri yapmayı zorlaştırır. Hala bu avantajların buna değip değmeyeceğine karar veriyorum.
Daha büyük çoklu geliştirici sitelerinde MVC'nin avantajını açıkça görebiliyorum.
Bulduğum en önemli fayda, projeyi daha test edilebilir bir yapıya zorlaması. Bu, web formları (MVP deseni) ile de kolayca yapılabilir, ancak geliştiricinin bunu anlamasını gerektirir, birçok dont.
Web formları ve MVC, her ikisi de farklı alanlarda mükemmel olan uygulanabilir araçlardır.
Öncelikle B2B / LOB uygulamaları geliştirirken web formlarını şahsen kullanıyorum. Ancak bunu her zaman birim testlerimiz için% 95 +% kod kapsamı elde edebileceğimiz bir MVP deseni ile yapıyoruz. Bu ayrıca, webcontrols özellik değerinin özelliklerle ilgili testin otomatik olarak gösterilmesine otomatik olarak izin verir.
bool IMyView.IsAdminSectionVisible{
get{return pnlAdmin.Visible;}
get{pnlAdmin.Visible=value;}
}
) Bu test seviyesinin modelimi kirletmeden MVC'de kolayca elde edildiğini düşünmüyorum.
Artık 'post-back kontrolleri' kullanmaktan ve onları geleneksel bir asp.net ortamına nasıl sokacağınızı bulmaktan kendinizi kötü hissetmiyorsunuz.
Bu, modern (kullanımı ücretsiz) javascript'in bu veya bu veya bu gibi kontrollerin bir kare delik hissine yuvarlak bir dübel takmaya çalışmadan kullanılabileceği anlamına gelir .
Modern javascript denetimleri ve JSON istekleri MVC kullanılarak çok kolay bir şekilde ele alınabilir. Burada, bir eylemden başka bir eyleme veri göndermek için birçok başka mekanizma kullanabiliriz. Bu yüzden web formları yerine MVC'yi tercih ediyoruz. Ayrıca hafif sayfalar da oluşturabiliriz.
Benim kişisel görüşüm, ASP.Net MVC kullanmanın en büyük dezavantajı,
onu koruyan geliştiriciler için ... html cehennem CODE BLOCKS
ile karıştırılmış olmasıdır ...HTML