merhaba hocam. asp.net ile mvc arasında ne fark var..sorumu birazdaha açiyim neden projelerimizi asp.net deil de mvc ile yaparız yada tam tersi. Kolay Gelsin..

soruldu: 09 Mar '12, 11:53

mesut's gravatar image

mesut
178444
cevap kabul oranı: 0%

değiştirildi: 31 May '13, 08:20

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288


20

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.

permanent link

cevaplandı: 31 May '13, 06:59

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

değiştirildi: 31 May '13, 07:04

4

güzel cevap. makale gibi olmuş.

(31 May '13, 07:14) wifi wifi's gravatar image
1

Harika bir açıklama olmuş teşekkürler

(13 May '14, 01:17) JavaDabaDu JavaDabaDu's gravatar image

Soru biraz yanlış sorulmuş aslında asp.net web uygulamaları geliştirmek için bir teknoloji. MVC ise web uygulamaları tasarlanırken geliştirme aşamasında kod ve tasarımı birbirinden ayırmak için kullanılan bir mimari yapısıdır. asp.net kullanarak da mvc yapısını kullanabilirsin.

permanent link

cevaplandı: 09 Mar '12, 12:38

faridmovsumov's gravatar image

faridmovsumov
1.1k193738
cevap kabul oranı: 16%

1

haklısınız hocam. asp.net webforms ile asp.net mvc arasındaki fark nedir olacaktı :)

mvc = web uygulamaları geliştirmek için kullanılan genel bir tasarım deseni. asp.net'e özgü bi şey değil. bu tasarım desenini kullanan belli başlı php, java, python web frameworkleri var.

asp.net mvc = asp.net'in; mvc tasarım desenini kullanan bir alt teknolojisi gibi bi şey.

(30 Eki '14, 16:56) sulutas81 sulutas81's gravatar image

Ben de olaya yazılımevi gözüyle bakmak istiyorum.

MVC, adı üzerinde işlemleri katmanlara ayırmaya yarayan bir yazılım mimarisidir. Çoklu çalışma gruplarını göz önüne alırsak, tasarımcı ile yazılımcı arasında bir sınır vardır. Yani, yazılımcı arkadaşlara, tasarım sürecine dahil olmalarını bekleyemeyiz, tam tersi tasarımcılar içinde geçerlidir. Dolayısıyla, birbilerinin etki alanlarına müdahale etmemeleri için, tasarımımızı MVC mimarisine göre yaptığımızda, işin Modelleme kısmını Veritabanı uzmanıyla yazılımcı ortak, Controller denen işin mantık kısmını yazılımcının kendisi, View denilen kullanıcıya açık kısmını ise tasarımcı kendisi yerine getirir. Böylelikle, yazılımımızı katmanlara ayırarak daha hızlı ve esnek geliştirme süreci elde etmiş oluruz.

permanent link

cevaplandı: 01 Haz '13, 13:58

O%C4%9Fuz%20%C3%87elikdemir's gravatar image

Oğuz Çelikdemir
2.0k52234
cevap kabul oranı: 13%

2

böyle yazılımevlerinin TÜrkiyede artması dileğiyle. Biliyorsunuz bizde web yazılımcısı demek = yazılım+tasarım+db admin olarak algılanıyor.

(02 Haz '13, 06:35) sckna sckna's gravatar image

Asp.net MVC modüler bir yapıda web projelerinin hazırlanmasına olanak sağlayan bir teknolojidir. Web forms giri sürükle bırak tarzı bir yaklaşım yoktur. Web forms gibi tasarım ve kodlama(c#, vb) içice geçmiş değildir. Html formlar ve yapılar kullanılır.. İşler Web forms kadar da hızlı ilerlemeyebilir. Kod ve HTML birbirinden ayrıldığ için, MVC tarafında projeler test edilebilir bir ortama alınmış olur. Ben severek kullanıyorum. Web forms ile tanıştıktan ve bir proje yaptıktan sonra MVC ile yazmaya başladım, bidaha da vazgeçemedim.

permanent link

cevaplandı: 09 Mar '12, 13:54

ucuncubayram's gravatar image

ucuncubayram
1.4k122840
cevap kabul oranı: 11%

MVC ye alıştıktan sonra kullanımının ne kadar estetik olduğunu farkına varırsınız.Ama öğrenilmesi biraz daha zor(Daha önce masaüstü uygulamalar geliştirmiş biri için).Ama piyasada herkes bir an önce sonuç istediği için , işverenin yeterli vakti sana vermediği için , eğer proje için de yalnız çalışıyorsan Web form kullanman mantıklı.Bir de şunu da dikkate almak lazım.Belki biraz farklı konulara değiniyorum ama,eğer işverenler bu işin bedelini hakkıyla vermiyorsa , otur sadece delphi de yaz daha iyi.Delphiyi bırakalı 7 yıl oldu delhi bilen 4-5 tane iş teklifi geldi.Bana kalırsa vaktiniz varsa çayınızı kahvenizi alın videolardan MVC yi de öğrenin kendinizi sıkmadan.İş başvurularında da herşeyi biliyorum demeyin , öyle derseniz her işi sizin üstünüze atarlar , sizden daha az şey bilip de sizden daha fazla para alanlar olabilir.Benim bir iş görüşmemde iki yazılımcı arıyorlardı bir tanesi delphi,ön muhasebe bilen,bitanesi de(asp .net web form,css,html,entity framework,svn,bootsrapt,ön muhasebe vs...) dahası da var.Sonra da dediler ki Javascriptinin çok iyi lazım.Yapamazsan bir ay sonra çıkarırız.Sonra daha önce delphide uzun süre kod yazmış biri 2500 tl ye çalışıyor,biz asp de 2000 tl istiyoruz çok para istiyorsunuz diyor.Bunu söyleyenler isim yapmış yazılım firmasının yazılım müdürleri.

permanent link

cevaplandı: 04 Ağu, 03:12

yunusbuyukdeniz's gravatar image

yunusbuyukdeniz
25
cevap kabul oranı: 0%

değiştirildi: 04 Ağu, 03:14

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×158
×47

Soruldu: 09 Mar '12, 11:53

Görüntüleme: 9,133 kez

Son güncelleme: 04 Ağu, 03:14

powered by BitNami OSQA