January 18, 2026 (2mo ago) — last updated February 26, 2026 (1mo ago)

MVC Mimarisi: Diyagram ve Uygulama

MVC mimari diyagramını örneklerle ve yeniden düzenleme ipuçlarıyla öğrenin, uygulama akışını ve anti-pattern’leri hızlıca tespit edin.

← Back to blog
Cover Image for MVC Mimarisi: Diyagram ve Uygulama

Bir MVC mimari diyagramı, her parçanın tek bir sorumluluğa sahip olması için uygulamayı düzenlemenin açık bir yoludur. Bu rehber Model, View ve Controller'ın nasıl etkileştiğini restoran benzetmesiyle açıklar, Node.js/Express ve React/Next.js örnekleri gösterir ve yaygın anti-pattern'leri tespit edip düzeltmek için pratik yeniden düzenleme önerileri sunar.

Mastering the MVC Architecture Diagram

Summary: MVC mimari diyagramları için pratik bir rehber—Model, View ve Controller'ın nasıl çalıştığı, gerçek dünyadan örnekler, yeniden düzenleme (refactoring) ipuçları ve yaygın tuzaklar.

Introduction

Bir MVC mimari diyagramı, her parçanın tek bir sorumluluğa sahip olması için uygulamayı düzenlemenin açık bir yoludur. Bu rehber Model, View ve Controller'ın nasıl etkileştiğini restoran benzetmesiyle açıklar, Node.js/Express ve React/Next.js örnekleri gösterir ve yaygın anti-pattern'leri tespit edip düzeltmek için pratik yeniden düzenleme önerileri sunar.

Görsel rehber: MVC mimari diyagramı

İyi işleyen bir restoranı düşünün. Her alanın bir rolü vardır ve birlikte güvenilir bir deneyim sunarlar. MVC mimari diyagramı benzer bir akışı gösterir: Controller kullanıcı girdisini alır, Model veriyi ve iş kurallarını yönetir, View sonuçları sunar. Bu ayrım kod karmaşasını azaltır ve uygulamaları test etmeyi ve ölçeklemeyi kolaylaştırır.

Diyagram: restoran benzetmesiyle MVC mimarisini gösterir: Model, Controller, View roller.

Diyagramın gösterdiği gibi, kullanıcının etkileşimi Controller ile başlar. Controller veri ve iş kurallarını işlemek için Model ile konuşur, sonra View'a ne gösterileceğini söyler. Bu tek yönlü akış sorumlulukları ayrı tutar ve kodu öngörülebilir kılar.

Restaurant benzetmesinin açıklaması

Bu zihinsel model sorumlulukların ayrılmasını pekiştirir.

  • Model (Mutfak): Mutfakta malzemeler (veri) ve tarifler (iş mantığı) bulunur. Müşterilerle doğrudan etkileşime girmez; veriye ve kurallara odaklanır.
  • View (Yemek Alanı): Müşterinin gördüğü her şeydir. View, Controller tarafından sağlanan veriyi sunar ve kullanıcı eylemlerini yakalar. İş mantığı içermez.
  • Controller (Servis Elemanı): Garson siparişleri (kullanıcı girdisini) alır, bunları mutfağa (Model) iletir ve tabakları yemek alanına getirir (View’u günceller). Controller koordine eder, yemek yapmaz veya süslemez.

MVC bileşenleri özet

BileşenBirincil sorumlulukRestoran analojisi
ModelUygulama verilerini ve iş mantığını yönetirMutfak
ViewVeriyi kullanıcıya sunar; kullanıcı arayüzüYemek Alanı
ControllerKullanıcı girdisini işler, Model ile View arasında aracılık yaparServis Elemanı

“MVC deseni her parçanın tek ve iyi tanımlanmış bir sorumluluğu olmasını hedefler. Bu ayrım kodun iç içe geçmesini engeller ve bakım ile ölçeklemeyi kolaylaştırır.”

Model, View ve Controller’ı anlamak

Her kutu-ve-ok diyagramının arkasında somut sorumluluk setleri vardır. Her katmanı hedefe odaklı tutmak bağımlılığı azaltır ve test ile bakımı basitleştirir.

Bir diyagram: Model-View-Controller (MVC) desenini ve Model, View, Controller rollerinin etkileşim kurallarını gösterir.

Model: uygulamanın beyni

Model verileri, durumu ve iş mantığını yönetir. Bir kullanıcı profilini güncellediğinizde, Model kaydı getirir, değişiklikleri doğrular ve kalıcı hale getirir. Model verinin nasıl sunulacağını bilmemelidir.

Bazı projelerde modeller aynı zamanda alan davranışını kapsüller; veri üzerinde çalışan yöntemler mantığı veriye yakın tutar.

View: uygulamanın yüzü

View, UI bileşenlerini içerir: butonlar, formlar, grafikler ve metin. Görevi veriyi göstermek ve kullanıcı eylemlerini bildirmektir. İyi bir View “dumb”tır, iş kuralları içermez.

Görsel tutarlılık önemlidir. Tasarım sırasında kullanıcı deneyiminin düzgün ve öngörülebilir hissetmesi için uyumlu bir tema seçin.

View’un temel kuralı “göster, söyleme”dir. Bilgiyi gösterir ve kullanıcı eylemlerini bildirir, ancak verinin nasıl işlendiğine karar vermez.

Controller: trafiği yöneten

Controller, View’dan girdiyi alır, iş mantığını uygulamak için Model’i çağırır ve sonuçları render etmek üzere View’u seçer. Kullanıcı eylemlerini dinler, mantığı koordine eder ve UI’ı günceller.

  • View’dan girdiyi alır
  • Model’i çağırarak iş kurallarını uygular
  • Sonuçları View’a döner ve render edilmesini sağlar

Bu rollerin doğru belirlenmesi kodu düzenli tutar ve gezinmeyi kolaylaştırır.

MVC’nin gücü ve evrimi

Neden 1970’lerden kalma bir desen hâlâ önemli? MVC, veri yönetimini sunumdan ayırarak UI karmaşasını kontrol altına alır, bu fikir modern geliştirmede hâlâ merkezi bir konudur1. Bu ilkeler bakım ve ölçeklenebilirlik açısından takımı güçlendirir.

Xerox PARC’tan modern çerçevelere

Trygve Reenskaug orijinal fikri Xerox PARC’ta Smalltalk ile çalışırken geliştirdi; kavram zaman içinde bugün bildiğimiz üç parçalı Model-View-Controller’a evrildi1. MVC, Ruby on Rails, Django ve ASP.NET gibi web çerçevelerinin temel taşlarından biri oldu2.

“Uygulamanın işlevini görünüşünden ayırmak, bakım ve test sürecini basitleştirir.”

Desenin evrimi ve güncelliği

Modern mimariler daha karmaşık hale geldi, ama pek çoğu MVC’nin temel fikirlerinin evrimleridir. MVC, MVVM ve benzeri desenleri anlamak için sağlam bir temel sağlar. Bu ilkeler bugün uygulama yapılarını yönlendirmeye devam ediyor.

MVC’yi modern çerçevelerle görmek

Soyut diyagramlar, projedeki dosyalara ve klasörlere eşlendiğinde daha faydalı olur. Aşağıda Node.js/Express ve React/Next.js için pratik örnekler yer alıyor.

Node.js/Express ile uygulamada MVC mimarisini gösteren diyagram: controller, model ve view bileşenleri.

Node.js ve Express örneği

  1. Kullanıcı /users/123 adresine gider ve tarayıcı GET isteği gönderir.
  2. Express yönlendiricisi Controller gibi davranır (ör. routes/userRoutes.js). ID’yi çıkarır ve isteği koordine eder.
  3. Controller, veritabanından kullanıcıyı almak için bir Model yöntemini çağırır (ör. models/User.js).
  4. Model veri döndüğünde, Controller bir View şablonu seçer (ör. views/profile.pug) ve sayfayı render eder.

Bu net devir teslim, yönlendirme, veri erişimi ve sunumu ayrı ve test edilebilir tutar.

MVC dosya isimleriyle sınırlı değildir. Değişikliklerin UI’ı bozmayacak şekilde sorumlulukları atamak için bir zihinsel modeldir.

React ve Next.js dünyasında MVC ilkeleri

React bileşenleri View işlevini üstlenir. Next.js’te API route handler’lar genellikle Controller olur, veri erişimi ve iş mantığı ise Model görevi görür. Bu ayrım UI kodunun veritabanı veya API’lara sıkı sıkıya bağlı olmasını engeller ve kod tabanını esnek tutar5.

MVC ekip verimliliğini nasıl artırır

MVC, geliştiriciler için net çalışma sınırları oluşturur. Ön yüz ekibi View’u sahte verilerle inşa ederken arka uç ekibi API’leri ve iş mantığını uygular. Bu paralel çalışma engelleri azaltır ve teslimatı hızlandırır. Endüstri yazıları net mimari desenlerin ekip verimliliğini artırdığını gösteriyor3.

Ekiplerin paralel çalışmasına izin verme

  • Ön yüz ekibi: sunum, UX ve istemci tarafı mantığına odaklanır
  • Arka uç ekibi: veri bütünlüğü, iş kuralları ve API performansına odaklanır

Net ayrım, özellik tesliminde sürtüşmeyi azaltır ve entegrasyon maliyetlerini düşürür.

Onboarding ve bakımın kolaylaşması

Tutarlı bir MVC yapısı kod tabanı için bir harita gibidir. Yeni geliştiriciler ihtiyaçlarını daha hızlı bulur. Hataların kaynağını bilmek işleri hızlandırır: UI sorunları View’da, veri sorunları Model’de, orkestrasyon sorunları Controller’da olur.

Kod tabanınızı temiz MVC yapısına yeniden düzenleme

Kod tabanları zamanla sürüklenir. İki yaygın anti-pattern vardır: şişkin controller’lar (fat controllers) ve anemik modeller. Bunları tespit edip düzeltmek mimarinizi sağlıklı tutar.

Dağınık yazılımı, şişkin controller'lar ve anemik modelleri temiz MVC mimarisiyle karşılaştıran diyagram.

Yaygın anti-pattern’leri düzeltmek

  1. Controller’ları inceltme

Şişkin bir controller, Model’e ait iş mantığını içerir. Belirtiler: uzun controller metodları, gömülü doğrulama veya sorgular. Mantığı modellere veya servis katmanına taşıyarak controller’ları yalnızca istekleri koordine edecek şekilde yeniden düzenleyin.

  1. Anemik modelleri zenginleştirme

Anemik model sadece veri taşıyıcısıdır ve davranış içermez. İlgili mantığı modele taşıyın—ör. calculateAge() veya validatePassword() gibi yöntemler verinin yanında olmalıdır.

Sağlıklı bir MVC uygulaması dengelidir: controller’lar koordine eder, modeller iş mantığını içerir, view’lar sunuma odaklanır.

Temiz kalmayı otomatikleştirme

Proje büyüdükçe endişelerin ayrımını zorunlu kılmak için araçlar yardımcı olur. Statik analiz ve proje kuralları, MVC ihlallerini tespit edip mimari sağlığı izlemenizi sağlar4.

Linter’lar ve proje kuralları geliştirme sırasında anti-pattern’leri işaretleyebilir, kod tabanını sürdürülebilir kılabilir.

Sıkça sorulanlar — kısa cevaplar

MVC ne zaman uygun değil?

Karmaşık istemci tarafı durumunu yöneten yüksek etkileşimli single-page uygulamalarda MVVM veya özel durum yönetimi desenleri daha uygun olabilir. Çok küçük, tek amaçlı mikroservislerde tam MVC aşırı olabilir.

React veya Next.js ile MVC prensipleri uygulanır mı?

Evet. React View, Next.js API route’ları Controller, veri erişimi ve iş kuralları ise Model olur. Bu ayrım UI’ı belirli depolama çözümlerinden bağımsız bırakır5.

Takımların yaptığı en büyük hata nedir?

Katman sınırlarının bulanıklaşmasına izin vermek, genellikle şişkin controller’lar ve anemik modellerle sonuçlanır. Mantığı ait olduğu yerde tutun ve kısa vadeli çözümler için ayrımı bozmaktan kaçının.


Clean Code Guy’ta ekiplerin MVC gibi mimari desenleri uygulamasına ve temizlemesine yardımcı oluyoruz; böylece uzun ömürlü yazılımlar inşa edebilirsiniz. Eğer şişkin controller’larla boğuşuyorsanız veya kod tabanınızı AI destekli geliştirmeye hazırlamak istiyorsanız, kod denetimlerimiz ve yeniden düzenleme hizmetlerimizle daha hızlı ve güvenle teslim etmenize nasıl yardımcı olabileceğimizi görmek için https://cleancodeguy.com adresini ziyaret edin.

Kısa Sorular ve Cevaplar

Q: MVC’yi projeme hemen uygulamak için ilk adım nedir?

A: Mevcut kodda sorumlulukları inceleyin, controller’larda görünen iş mantığını model veya servis katmanına taşıyın, ardından test kapsamını artırın.

Q: Fat controller olup olmadığını nasıl hızlıca anlarsın?

A: Uzun metodlar, gömülü sorgular veya doğrulamalar varsa, controller muhtemelen şişkindir.

Q: MVC benim için aşırı mı, yoksa gerekli mi?

A: Eğer ekip net rollere bölünüyorsa ve UI ile veri mantığını ayırmak istiyorsanız MVC uygundur; küçük ve tek iş yapan servislerde basit çözümler tercih edilebilir.

1.
Trygve Reenskaug’s MVC origins and Smalltalk-79 history. See https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
2.
Examples of major frameworks that use MVC concepts: Ruby on Rails (https://rubyonrails.org), Django (https://www.djangoproject.com), ASP.NET (https://dotnet.microsoft.com/apps/aspnet)
3.
Industry discussions and reported benefits of MVC-style organization, including productivity gains and maintainability. See https://techaffinity.com/blog/mvc-architecture-benefits-of-mvc/
4.
Research on automated detection of architectural and MVC implementation issues: SEKE paper describing analysis methods. See https://ksiresearch.org/seke/seke19paper/seke19paper_163.pdf
5.
Framework documentation for Express, React, and Next.js: Express (https://expressjs.com/), React (https://react.dev/), Next.js (https://nextjs.org/)
← Back to blog
🙋🏻‍♂️

AI kod yazar.
Siz onu uzun süre dayanır hale getirirsiniz.

AI hızlanması çağında, temiz kod sadece iyi bir uygulama değil — ölçeklenen sistemlerle kendi ağırlığı altında çöken kod tabanları arasındaki farktır.