ASP.net web forms ve MVC arasındaki fark nedir?

Sponsorlu Bağlantılar

Doğuş Pertez

Doğuş Pertez

Admin
    Konu Sahibi
ASP.net web forms ve MVC arasındaki fark nedir?
Webmasterlar tarafından yada yeni webmaster olmak yönünde ilerleyenler tarafından en çok meral edilen sorulardan birisi olarak karşımıza ASP.net web forms ile MVC arasındaki fark çıkıyor.

ASP.NET NEDİR?
Dinamik web siteleri yapmak için microsoftun geliştirdiği ve farklı sunucu dillerinin (C#, VB.NET) kullanılabildiği bir web geliştirme framework yapısıdır. Bu framework iki farklı mimariden oluşur, birisi web forms, diğeri ise mvc dir.

ASP.NET WEB FORMS NEDİR?
Sürekle-bırak, olay-tabanlı gibi kavramların bolca kullanıldığı, hazır kontroller bulunduran ve hızlı geliştirmeye elverişli bir mimarisi yapısı sunar. Bu yapı web geliştirirken, masaüstü uygulaması geliştirme rahatlığı sunar.

Avantaları:
Zengin Kontoller: Birçok hazır kontrol sunar. Bu kontolleri de sunucunun kontrolüne verir. Özellikle kod yazmadan veri erişimi ve gösterimi yapan kontroller (GridView, ListView, Repeater, DataList,... gibi) vardır.
ViewState Desteği: HTTP protocoluna göre iki sayfa arasındaki istek sırasında veriler kaybolur. Web Forms ViewState nesnesi ile bu verileri kaydeder. Kullanıcı örneğin yanlış bir değer girip, formu postaladığında formda hata olursa sayfanın tekrar yüklenmesinde girdiği değerlerin değişmeden durduğunu görür. Böylece tekrardan verileri girmek zorunda kalmaz.
Olay Tabanlı: Olay tabanlı demek, kullanıcının hareketlerini izler ve kullanıcının bir hareketi için bir fonksiyon tetiklenir. Bu javascript gibi diller için zaten vardır. Web forms bunu sunucu taraflı fonksiyonlar için yapar. Yani istemci tarafındaki bir elemanla iletişimde(click, change, hover) sunucu tarafında bir fonksiyon tetiklenir.
RAPID Development (Hızlı geliştirme): Bunu açıklamaya bile gerek yok. Zengin kontroller, olay tabanlı mimari ve ViewState.
Kolay Öğrenebilme: Yukarıdaki özelliklerinden dolayı web forms, az bir html ve javascript bilgisi ile geliştirmeyi sağlar. Sürükle-bırak geliştirme ortamı sunar. Bundan dolayıda öğrenme süreci daha kolaydır

Dezavantajları:
Proje Yapısı: Varsayılan olarak gelen bir proje yapısı yoktur. Genel geçer bir proje yapısıda henüz oluşmamıştır. Herkes kendi yapısını oluşturabilir. Proje geliştikçede bu büyük bir sıkıntı olmaya başlayacaktır.
Birim Test: Birim testler yapmak zordur. Çünkü proje içerisindeki CodeBehind tarafında çok fazla olay tabanlı fonksiyon vardır. Ve bu fonksiyonlar iki tane parametre (object sender, EventArgs e) içerir. Bu fonksiyonları test etmek için bu parametreleri göndermeniz gerekir.
Performans: ViewState sayfaların performansını düşürür. Çünkü sayfanın durumunu kaydetmek için çok uzun bir string üretir ve bunu sayfaların isteklerinde taşır. Bundan dolayı da ek bir yük getirir sayfaya.
Reusability: Tekrar kullanılacak kodları bazen yazmak anlamsız olur. Bir formun CodeBehind tarafında tanımladığınız bir GridBind olayını başka bir formun, CodeBehind sayfasında kullanamazsınız. Farklı stratejiler geliştirmek gerekir. Bu da yazılım maliyetidir.
Html Üzerindeki Kontrol: Web forms ile çok fazla html kodlarını yönetemezsiniz. Bazı yerlere müdahele edemezsiniz.
SEO: Arama motoru optimizasyonu için biraz çaba harcamak gerekli. Özellikle URL-Routing konusunda, hazır çözümleri yoktur.
Takım Çalışmasında Yetersiz: Aspx sayfaları ile onlara bağlı sunucu taraflı CodeBehind sayfaları ile beraber çalışılması gerekir. Çünkü istemci tarafı (aspx) sunucu tarafı (code-behind) ile birebir bağımlıdır.

ASP.NET MVC Nedir?
ASP.NET HTML, CSS, JavaScript ve sunucu taraflı programlama ile web sayfaları ve web siteleri yapmaya yarayan bir geliştirme yapısıdır. ASP.NET 3 farklı geliştirme modeli sunar: Web pages, MVC (Model-View-Controller) ve Web Forms.

MVC veri(model) ile sunum(view) katmanının soyutlanmasını sağlayan bir yazılım mimarisidir. Bu işi controller ile yapmaktadır. Controller sınıfları bu iki katman arasındaki iletişimi sağlamaktadır. Böylece kullanıcı etkileşimli gösterim kısmı, veri erişimi ve iş mantığından ayrılmaktadır.

Model: Verinin nasıl değişeceğini ve nasıl yönetileceğini belirleyen iş kurallarını (Business Rules) içeren sınıfların tamamının bulunduğu katmandır. Genelde bunlar veritabanını temsil eden sınıflarlar veya domaini temsil eden nesnelerdir. EntityFramework, NHibernate gibi, entity-data-model ler de, model katmanında yer alabilir. Yani uygulamamızda kullanacağımız nesneler bu katmandadır.

View: Kullanıcı arabiriminin (User Interface - UI) gösterileceği katman. Dinamik olarak üretilen HTML şablonu bu katmandadır. Kısaca veri gösterim katmanı diyebiliriz.

Controller: Tüm sistem akışının, kullanıcı ile olan etkileşimi kontrol eden ve olayları yöneten sınıfların tamamı. View ve Model katmanları arasındaki ilişkiyi yönetir. Kullanıcıdan girdi alır, modelle iletişime geçer ve ne gösterileceğine karar verir.

Avantajları:
Proje Yapısı: Varsayılan olarak bir proje yapısı gelir. Genel manada da proje ne kadar genişlerse genişlesin bu proje yapısı kullanıldığında sürekli karmaşıklığın önüne geçilir. Çünkü mvc mimarisi sayesinde, modeller, controller sınıfları ve view sayfaları birbirinden kesin olarak ayrılır.
Test Edilebilirlik ve Reusability: Zaten html sayfaları ve sunucu taraflı dil birbirinden ayrıldıktan sonra, bu kodlar çok rahat test edilebilir ve tekrar kullanılabilir.
Performans: ViewState kullanmadığı için sayfa içerisinde gereksiz veri tutmaz, sayfanın boyutunu artırmaz.
Html Üzerinde Tam Kontrol: Hazır kontroller olmadığından, html üzerinde tam bir kontrol sağlar. Kontrolleri kendimiz ürettiğimizden, bu kontollere id ler vererek, jquery kütüphaneleri ile bu elemanlar üzerinde tam yetkili oluruz.
Ekip Çalışması: View sayfaları, Controller içerisindeki metodlara bağımlı değildir. Bundan dolayıda, ayrı ayrı geliştirilebilirler.
SEO ve URL Routing: Varsayılan olarak bir URL routing tanımlıdır. Bu routing sistemini çok ta rahat genişletme şansımız vardır. Bu sayede anlaşılır URL ler üretiriz ve bunun SEO ya katkısı büyüktür.
Genişleme: MVC genişletilebilir özelliğe sahiptir. Kendi görüntüleme motorumuzu yazacak kadar bir genişleme alt yapısına sahip bir mimarinin, heralde diğer genişleme özelliklerini söylemeye gerek yok.
ASP.NET Özellikleri: ASP.NET te olan diğer özellikler mvc için geçerlidir. Session, caching, authentication, ... gibi
Dezavantajları:

Öğrenme Süreci Zorluğu: Öğrenme süreci web forms yapısına göre biraz zorludur.
 

Benzer Konular

Eren Değerli
Cevap
0
Görüntüleme
272
Eren Değerli
Eren Değerli
Cevap
0
Görüntüleme
345
Eren Değerli
Eren Değerli
Cevap
0
Görüntüleme
369
Eren Değerli
Doğuş Pertez
Cevap
0
Görüntüleme
5K
Doğuş Pertez


Üst Alt