MVC
Model–View–Controller (Model–Görünüm–Denetleyici)
Kısaca
MVC, uygulamayı veri ve mantık için Model, gösterim için View ve kullanıcı girdisini yöneten Controller olmak üzere üçe ayıran bir mimari desendir.
MVC nedir?
Model–View–Controller'ın kısaltması olan MVC, bir uygulamayı ayrı sorumlulukları olan üç parçaya böler. Model veriyi ve iş kurallarını tutar, View bu veriyi kullanıcıya sunar, Controller ise kullanıcı girdisini alır, Model'i günceller ve hangi View'un gösterileceğini seçer. Bu ilgilerin birbirinden ayrı tutulması kodu anlamayı, test etmeyi ve değiştirmeyi kolaylaştırır.
Tipik bir web uygulamasında GET /products/42 gibi bir istek bir controller'a ulaşır. Controller, modelden 42 numaralı ürünü veritabanından yüklemesini ister, sonucu HTML sayfasını oluşturan bir görünüm şablonuna aktarır. Sayfa tasarımı değişirse yalnızca view düzenlenir; fiyatlandırma kuralları değişirse yalnızca model.
Restoran güzel bir benzetmedir: garson siparişinizi alan controller, tariflerine göre yemeği hazırlayan mutfak model, tabakta önünüze gelen yemek ise gerçekten gördüğünüz view'dur. Birçok sunucu taraflı web framework'ü MVC'nin ya da ona çok yakın bir çeşidinin etrafında kurulur.
MVC, sıklıkla MVVM (Model–View–ViewModel) ve MVP (Model–View–Presenter) gibi ilgili desenlerle karıştırılır. Bunların hepsi veriyi sunumdan ayırma amacını paylaşır ama view ile mantığın nasıl iletişim kurduğu bakımından ayrılır. MVC ayrıca tek bir uygulamanın içindeki kodu düzenler; bu, bir sistemi ayrı servislere bölmekten farklıdır.
Bir bakışta
Önemli noktalar
- Model: veri ve iş mantığı.
- View: kullanıcının gördüğü şey.
- Controller: girdiyi işler, model ile view'u birbirine bağlar.
- Bu ilgilerin ayrılması kodun test edilmesini ve bakımını kolaylaştırır.
- MVVM ve MVP, aynı fikrin yakın çeşitleridir.
Örnek
// Model: data and business rules
const ProductModel = {
findById: (id) => ({ id, name: "Keyboard", price: 49 }),
};
// View: turns data into HTML
const productView = (product) => `<h1>${product.name}</h1><p>Price: ${product.price}</p>`;
// Controller: handles the request and connects the model and the view
function showProduct(request) {
const product = ProductModel.findById(request.params.id);
return productView(product);
}Sık sorulan sorular
MVC ile MVVM arasındaki fark nedir?
MVC'de controller girdiyi işler ve model ile view'u günceller. MVVM'de ise ViewModel, view'un doğrudan bağlandığı veri ve komutları sunar; bu yaklaşım veri bağlama (data binding) olan arayüz framework'lerinde yaygındır.
MVC hâlâ kullanılıyor mu?
Evet. Birçok sunucu taraflı web framework'ü MVC üzerine kuruludur ve veriyi, sunumu ve girdi işlemeyi ayırma yönündeki temel fikri modern ön yüz framework'lerinin çoğunu etkiler.
MVC bir tasarım deseni mi yoksa mimari mi?
MVC, bütün bir uygulamanın yapısını belirlediği için genellikle mimari desen olarak tanımlanır. Kendi içinde çoğunlukla Observer ve Strategy gibi daha küçük tasarım desenlerinden oluşur.
Sık karşılaştırılanlar
İlgili sayfalar
- Tasarım DeseniYazılım Mimarisi, s. 42Tasarım deseni, yazılım tasarımında sık görülen bir soruna kanıtlanmış, yeniden kullanılabilir çözümdür; hazır kod değil, genel bir şablon olarak anlatılır.
- FrameworkProgramlamanın Temelleri, s. 22Framework, bir uygulamanın yapısını sağlayan, yeniden kullanılabilir kod, araç ve kural temelidir; geliştiriciler yalnızca kendi mantıklarını doldurur.
- OOPProgramlamanın Temelleri, s. 41OOP, yani nesne yönelimli programlama, kodu ilişkili verileri onlar üzerinde işlem yapan fonksiyonlarla birleştiren nesneler etrafında düzenleme yöntemidir.
- SSRWeb Geliştirme, s. 44SSR, sunucunun her istekte bir sayfanın tam HTML'ini oluşturduğu ve böylece kullanıcıların ile arama motorlarının hazır içeriği hemen aldığı tekniktir.
- SPAWeb Geliştirme, s. 42SPA, tek bir HTML sayfası yükleyip içeriği JavaScript ile güncelleyen ve görünümler arası geçişte sayfayı yeniden yüklemeyen web uygulamasıdır.
- İlgilerin AyrılmasıYazılım Mimarisi, s. 19İlgilerin ayrılması, bir programı her biri davranışının açıkça tanımlanmış tek bir yönünden sorumlu ayrı parçalara bölen bir tasarım ilkesidir.
- MVVMYazılım Mimarisi, s. 27MVVM (Model-View-ViewModel), ekranın durumunu ve eylemlerini ViewModel'in tuttuğu, View'in ona bağlandığı arayüz kalıbıdır; durum değişince arayüz de değişir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin