Birini diğerine kullanmanın avantajlarından bazıları nelerdir?
ASP.net MVC'nin ana avantajları:
Oluşturulan HTML üzerinde tam kontrol sağlar.
Kaygıların temiz ayrılmasını sağlar (SoC).
Etkinleştirir Teste Dayalı Geliştirme (TDD) .
JavaScript çerçeveleri ile kolay entegrasyon.
Ağın vatansız doğasının tasarımının ardından.
SEO sağlayan RESTful URL'ler.
ViewState ve PostBack etkinliği yok
ASP.net Web Formunun ana avantajı:
Bu sağlar RAD geliştirme
Winform geliştirmeden gelen geliştiriciler için kolay gelişim 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 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ı:
ASP.NET MVC:
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.
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.
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.
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.
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
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.
Francis Shanahan,
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.
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.
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.
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.
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.
Web formları ayrıca, Telerik gibi üçüncü taraf kontrol sağlayıcılarından daha fazla olgunluk ve destekten de faydalanır.
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)
Benim 2 kuruş:
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.
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.
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.
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.
Artık 'geri kontrol dışı kontrolleri' kullanmaktan korkmuyorsunuz - ve onları geleneksel bir asp.net ortamına nasıl aktaracağınızı bulmakta.
Benim kişisel görüşüm, ASP.Net MVC kullanmanın en büyük avantajı,
CODE BLOCKS
HTML.. ile karıştırılmış olmasıdır.
html cehennemi sürdüren geliştiriciler için cehennem ...
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.