• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 8/2/2020 11:38:31 PM'Basit' Yazılım Dili
  • 6/25/2020 3:18:13 PMderleme hatası
  • 12/11/2017 4:49:15 PMWindows Hizmeti Hk.
  • 4/23/2016 12:55:33 AMC programlama 2 oyun

Popüler Sorular

  • 5/27/2012 5:49:50 AMAsp.Net ile Date time alana veri ekleyemiiyorum ?
  • 4/2/2012 12:45:18 AM.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 5/12/2012 8:44:49 AMAcil Yardım
  • 5/27/2012 1:46:51 PMveri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LibreOffice
  • LINQ
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

MVC Pattern ve Asp.Net MVC Nedir? Asp.Net MVC vs Web Forms

MVC pattern nedir, nerelerde kullanılır, Asp.Net MVC nedir, nerelerde kullanılır, MVC ve Web Forms'un hangisi tercih edilmelidir, avantajları nelerdir, öğrenelim.

01.01.2017

Yazar: Veysel Uğur KIZMAZ (Google+)

Kategori: ASP.NET MVC

3096

MVC Nedir?

MVC, Yazılım Mühendisliği’nde önemli bir yere sahip architectural patterns (yazılım mimari desenleri)’ın bir parçasıdır. Model, View ve Controller kelimelerinin baş harflerinden oluşan MVC (Model-View-Controller), 1979 yılında  Tygve Reeskaug tarafından oluşturulmuş ve yazılım gelişmede bir çok projede kullanılmıştır. Son dönemlerde Microsoft’un MVC desenini Asp.Net teknolojisi ile birleştirmesi ile popülaritesi daha da artmıştır.

MVC ile ilgili en yanlış bilgi, MVC’nin Microsoft tarafından çıkartıldığı düşüncesidir. Yukarıdaki paragrafta da bahsedildiği üzere, MVC’nin Asp.Net’e entegre edilmesinden önce bu deseni bir çok (.Net) yazılım geliştiricisi bilmemekteydi, bilse de kullanmıyorlardı. Asp.Net MVC’nin gelişiminin ardından MVC’ye ilgi oldukça artmış görünüyor.

MVC deseni, 3 katmandan oluşmaktadır ve katmanları birbirinden bağımsız (birbirini etkilemeden) olarak çalışmaktadır. Bu sebeple çoğunlukla büyük çaplı projelerde projelerin yönetiminin ve kontrolünün daha rahat sağlanabilmesi için tercih edilmektedir. MVC ile geliştirilen projelerde projenin detaylarına göre bir çok kişi eş zamanlı olarak kolaylıkla çalışabilmektedir.

MVC Tasarım Deseni Model-View-Controller hiyerarşisi

Model Nedir?

Model, MVC’de projenin iş mantığının (business logic) oluşturulduğu bölümdür. İş mantığıyla beraber doğrulama (validation) ve veri erişim (data access) işlemleri de bu bölümde gerçekleştirilmektedir.

Model tek katmandan oluşabileceği gibi kendi içinde birden fazla katmandan da oluşabilir. İç yapılandırma projenin büyüklüğü ile yazılım geliştiricinin planlamasına kalmış bir durumdur. Eğer proje büyük çaplı ise modeli birden çok katmana ayırmak projenin yönetimi açısından faydalı olacaktır.

View Nedir?

View, MVC’de projenin arayüzlerinin oluşturulduğu bölümdür. Bu bölümde projenin kullanıcılara sunulacak olan HTML dosyaları yer almaktadır. Projenin geliştirildiği yazılım dillerine göre dosya uzantıları da değişebilmektedir. Projelerin büyüklüğüne göre dikkat edilmesi gereken bir nokta ise, klasörlemedir.

Eğer bir web projesi geliştiriyorsanız, projenin View’larının yer aldığı klasörlerinin hiyerarşisi, ilerleyen dönemlerde karmaşıklığa sebep olmaması için dikkatli yapılmalıdır. Kimi yazılım geliştiriciler web projelerinde HTML dosyaları ile Javascript, CSS ve resim dosyalarını aynı klasör içinde barındırmaktadır. Ufak bir ayrıntı gibi görünse de projenin ilerleyen dönemlerinde ciddi problemler oluşturmaktadır.

View’ın bir görevi de, kullanıcılardan alınan istekleri controller’a iletmektir.

Controller Nedir?

Controller, MVC’de projenin iç süreçlerini kontrol eden bölümdür. Bu bölümde View ile Model arasındaki bağlantı kurulur. Kullanıcılardan gelen istekler (request) Controller’larda değerlendirilir, isteğin detayına göre hangi işlemlerin yapılacağı ve kullanıcıya hangi View’ın döneceği (response) belirtilir.

MVC’nin Çalışma Prensibi

MVC’nin parçaları olan Model, View ve Controller’ın ne olduğu yukarıdaki bölümde anlatıldı. Şimdi bu bilgileri toparlayıp MVC’nin çalışma prensibini (yaşam döngüsünü) detaylıca inceleyelim.

MVC’nin çalışma mantığı özetle aşağıdaki görselde tanımlanmıştır. Hemen altında madde madde açıklaması yer almaktadır. (Kullanıcı: siteyi kullanan kişi)

MVC Çalışma Mantığı - Yaşam Döngüsü

  1. Kullanıcı sayfa üzerinden bir istek gönderir. (İstek: Request)
  2. İstek, ilgili Controller’da değerlendirilir ve hangi model ile ilgiliyse o modelde (ve veritabanında) işlemler yapılır. Controller ile Model arasında çift yönlü ok olmasının sebebi, isteğin çalıştırılma sürecinde Controller üzerinden farklı modellerin çağırılabillmesidir.
  3. Controller üzerinde Model işlemleri tamamlandıktan sonra bilgiler View üzerine yerleştirilir.
  4. View’a yerleştirilen bilgi kullanıcıya yanıt olarak gönderilir (Yanıt: Response). Böylelikle kullanıcının yaptığı bir istek MVC ile geliştirilmiş olan uygulamamız içerisinde başarıyla işlenip sonucu kullanıcıya sunulur.
  5. Controller, gelen isteğe göre Model’e uğramadan gerekli verileri hazırlayıp direk View’a bu bilgileri yerleştirip kullanıcıya yanıtı dönebilir.

Asp.Net MVC Nedir?

Asp.Net MVC, Microsoft’un Asp.Net teknolojisi üzerine MVC tasarımını giydirmesi ile oluşturduğu yeni bir yapıdır. Bu yapı sayesinde büyük çaplı projelerde (eğer desene uygun şekilde çalışılırsa) projenin yönetimi kolaylaşacak, yazılımın performansında artış görülebilecek, yazılan kodların yeniden kullanımı (reusable) artacağından hem daha hızlı yazılım geliştirme yapılabilecek, hem de testleri daha kolaylaşacaktır. Asp.Net MVC öğrenmek ve bu teknolojiyle yazılım geliştirmek için daha bir çok neden sıralayabiliriz.

Microsoft Web Teknolojileri Gelişim Grafiği

Asp.Net MVC, Asp ile başlayan Microsoft web platformu yazılım geliştirme teknolojilerinin şu anda geldiği son noktadır. Günümüzde Asp teknolojisini kullanan proje sayısı gitgide azalmakta ve projenin kapsamına, içinde kullanılması gereken teknolojilerine, yazılım geliştiricilerin alışkanlıklarına ve bazı gereksinimlere göre Asp.Net ve Asp.Net MVC teknolojilerinden birisi kullanılmaktadır.

Asp.Net vs Asp.Net MVC

“Asp.Net Web Forms ve Asp.Net MVC teknolojilerinden hangisini seçmeliyiz ve neden?” sorusu, yazılım geliştiricilerin sıklıkla sorduğu bir sorudur. Asp.Net Web Forms ve Asp.Net MVC teknolojilerinin avantajlarını ve dezavantajlarını inceleyelim. İnceleme sonucunda projeleriniz ve altyapınız (donanım, yazılım, yazılım geliştirici vs) hangi teknolojiye daha uygunsa onunla yazılım geliştirmenizde fayda vardır. Tüm bu seçenekleri incelemeden teknoloji seçimi yapmak, bazı projeleri çok büyük ölçüde yönetim, zaman ve performans sıkıntısıyla karşı karşıya bırakmıştır.

Neden Asp.Net Web Forms Teknolojisini Seçmeliyim?

Asp.Net Web Forms’un Asp.Net MVC’ye üstünlük sağladığı konular:

ViewState Kullanımı

Web Forms için önemli derecede performans kaybı yaşatan ViewState, farklı açıdan bakıldığında yazılım geliştiricinin sayfa içinde tutması gereken değerleri/verileri kaybetmemek için sıklıkla kullandığı bir yöntemdir. ViewState kullanımı sırasında çok büyük veriler saklanmadığı sürece bu konu Web Forms için avantaja dönüştürülebilir.

Rich Server Controls (Zengin Sunucu Kontrolleri)

Asp.Net Web Forms’ta MVC’den farklı olarak sunucu taraflı çalışan kontroller yer almaktadır (Button, Label, TextBox, GridView, ListView, ScriptManager vs). Bu hazır kontroller sayesinde bir çok işlem kolaylıkla gerçekleştirilebilmektedir. ScriptManager sayesinde daha az Javascript bilgisiyle AJAX işlemleri kolaylıkla yapılabilir, sunucu kontrollerinin sürükle-bırak özelliği sayesinde daha az HTML kodu kullanarak sayfalar geliştirilebilir.

Event Driven Programming (Olay Güdümlü Programlama)

Asp.Net Web Forms’ta yer alan event driven programming yapısı, yazılım geliştiricinin işini çok kolaylaştırmaktadır. Örneğin sayfaya eklediğiniz bir butona tıklama olayı tanımlamak için butona iki kere tıklamanız yeterli olacaktır. Bu yapı eğer dikkatli bir şekilde kullanılırsa yazılım geliştiriciye büyük kolaylık sağlamaktadır. Oluşturulan olay (event) metodu içerisinden Asp.Net’in diğer sunucu kontrollerine erişip içerisindeki verilere müdahale edebilirsiniz.

Neden Asp.Net MVC Teknolojisini Seçmeliyim?

Asp.Net Web MVC’nin Asp.Net Web Forms’a üstünlük sağladığı konular:

Performans

Asp.Net MVC’de ViewState kavramı bulunmadığı için durum yönetimi yazılım geliştirici tarafından yapılmak durumundadır. Web Forms’ta durum yönetimleri otomatik olarak yapıldığından dolayı sayfaların performansı Asp.Net MVC sayfalarına göre daha düşüktür.

Reusability (Yeniden Kullanılabilirlik)

Asp.Net Web Forms’ta sayfa içerisine yazılan kodlar (sunucu taraflı) o sayfaya ya da kontrole özgü olmak durumundadır. Asp.Net MVC’de yazılan kodlar ise kontrollerden tamamen bağımsız olduğu için birden çok yerden aynı kod çağırılıp kullanılabilmektedir. Bu da kodların yeniden yazılmasının önüne geçer.

Test Driven Development

Asp.Net MVC’de yazılan kodlar kontrollere ya da sayfaya özgü olmadığı (bağımsız yazıldığı) için kolaylıkla test edilebilir durumdadır. Bu sebeple Asp.Net MVC ile geliştirilen projeler Test Driven Development’a uygundur.

Yazılım Geliştirme Süresi Daha Kısa

Katmanlar birbirinden farklı olduğundan farklı yazılım geliştiriciler farklı katmanlarda aynı işlem için eş zamanlı olarak kodlama yapabilirler. Örneğin bir kişi yapılacak işlemin Modelini kodlarken biri Controllerı bir diğeri de View katmanını eş zamanlı olarak kodlayabilir. Asp.Net Web Forms’ta bir işlem için sadece bir kişinin kodlama yapması uygundur.

Kontrollerin Yönetimi İçin Client Side Development (İstemci Taraflı Geliştirme)

Sayfa içerisine yerleştirilen HTML kontrollerinin yönetimi ve sunucuya istek gönderimi için Asp.Net MVC’de Javascript ve Javascript tabanlı istemci taraflı teknolojiler kullanılmaktadır.

Sonuç

Sonuç olarak MVC uzun yıllardır bir çok projede kullanılmış ve (yönetimi ve  yazılım geliştirme ekibi başarılı ise) başarılı olmuş bir desendir. Bu desen Asp.Net teknolojisiyle birleşip gün geçtikçe gelişen bir yapı (Asp.Net MVC) haline gelmiştir.

Asp.Net Web Forms ve Asp.Net MVC teknolojileri arasındaki seçim için, yukarıda da bahsedildiği gibi projeleriniz ve altyapınız (donanım, yazılım, yazılım geliştirici vs) hangi teknolojiye daha uygunsa onunla yazılım geliştirmenizde fayda vardır.

Bu makale, Asp.Net ve Asp.Net MVC ile ilgili soru ve sorunlarınızla ilgili benimle veysel@ugurkizmaz.com adresi üzerinden iletişime geçebilirsiniz.

Yazar Hakkında

Veysel Uğur  KIZMAZ

Veysel Uğur KIZMAZ

www.ugurkizmaz.com

YazılımDilleri.Net projesinin lideri olan Veysel Uğur Kızmaz, Gazi Üniversitesi Bilgisayar Mühendisliği bölümü mezunudur. Bir çok projede çalışmış, yazılım alanında birçok eğitimler vermiştir. Şu an özel bir yazılım danışmanlık firmasında Sharepoint proje danışmanlığı ve proje yöneticiliği yapmaktadır. Veysel Uğur Kızmaz, dahil olduğu projelerin çeşitliliği sebebiyle farklı alanlarda uzmanlaşmıştır: .Net, Sharepoint, Java, Php, Javascript, SQL Server, Oracle, MySQL.

Sosyal Medya

ORANLAR

  • 3096izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Merhaba, ellerinize sağlık çok yardımcı ol...
  • Merhaba Bu uygulama örneğinden ASP.net ...
  • Hocam Link başka sayfaya yönlendiriyor.

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 123776
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 70839
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 51496
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ