📖
Genel Bilgiler
  • Genel
  • Yazılım Teknolojiileri
    • SOLID
    • Mimariler ve Mimari Paternleri
    • MVC, MVP, MVVM
    • Mikroservis Yaklaşımı
    • DDD
    • Nesne Yönelimli Programlama
    • Hangi Programlama Dili Hangi Framework Öğrenilmeli?
    • Programlama Dilleri Üzerine tecrübeler
    • Microsoft .NET Teknolojileri
    • Microsoft .NET CORE 3.x ile Katmanlı Mimari Tasarımı
    • Test
    • Hangi Geliştirme ve Deployment Ortamı (Windows vs Linux)
    • Veri Tabanları ve Veri Tabanı Mimarileri
    • Asysnc/Awake
    • Oyun Geliştirme
      • WebAssembly vs Asm.ts
      • Unity ve Devler Ligi
      • Godot Oyun Motoru
      • Three.js ve Alternetif Javascript 3D Kütüphaneler/Framework' ler
    • Aspect Oriented Programming
  • Sanallaştırma
    • Sanallaştırma (Hypervisor ve Container & Docker)
    • Kubernetes
  • Yazılım Kültürleri
    • DevOps
    • Jenkins
    • SAST, DAST, SCA, Pentest
    • Glusterfs
    • Yazılım Üzerine Tartışmalar/Sohbetler
    • TUBITAK BILGEM YTE
  • Metro/Tren Sinyalizasyonu
  • Yapay Zeka (Artificial Intelligence)
  • Embedded Realtime Linux
  • Süper Bilgisayarlar Neden Süperler
  • Lock Free Tasarım
  • Git ile Çalışmak
  • CPU, APU, PPU, NPU, TPU ...
  • CANBUS
  • MERHABA (HELLO)
Powered by GitBook
On this page
  • Paternler
  • 2018

Was this helpful?

  1. Yazılım Teknolojiileri

MVC, MVP, MVVM

PreviousMimariler ve Mimari PaternleriNextMikroservis Yaklaşımı

Last updated 5 years ago

Was this helpful?

Paternler

  • MVC (Model-View-Controller),

  • MVP (Model-View-Presenter),

  • MVVM (Model-View-ViewModel)

  • MVPVM

Business işleriyle Presentation işleri birbirlerinden ayrılması gerekliliği ile doğruş paternlerdir.

Controller kullanıcıdan gelen inputları karşılar, ayrıca UI ile ilgili bütün akışı yönetir ve kararları verir. Controller View hakkında hiç birşey bilmez ama View Controller’ı bilir. Görüldüğü üzere Controller ile View arasında 1-n bir ilişki var yani bir Controller birden fazla View tarafından kullanılabilir. Controller kullanıcıdan gelen inputlar doğrultusunda Model üzerinde değişikleri yapar, Model değiştiğini View’e notify eder yani View ile Model arasında Observer ilişkisi var. View, Model’e register olur, görüldüğü üzere bir model’e birden fazla View register olabilir. Aralarında ki observer ilişkisi sayesinde, Model’deki herangi bir değişiklik ona register olmuş bütün View’lere yansır.

View’in güncellenmesi için, Controller’ın Model’i güncellemesi gerek ki Model’de değiştiğini View’e bildirebilsin.

Tavsiyem bir Windows Forms uygulaması yazıyorsanız, klasik MVC’yi kullanmamınız yönünde

ASP.NET MVC’de ise Front Controller mantığını var. Yani Controller karar mekanizması, her HTTP request Controller’da ki bir method’a (Action) denk geliyor, Controller Model ve View’i yeniden oluşturuyor, gerekirse manipulasyonları yapıyor. Controller bu kadar iyi ayrıldığı içinde Unit Test çok kolay yapılıyor.

Buradaki en büyük fark MVC’nin aksine Presenter’ın View’i bir interface aracılığıyla kendisinin güncellemesi.

Presenter View’in nasıl bir View, Web mi? Windows mu? olduğuyla ilgilenmiyor, sadece data akışıyla ilgili ne yapması gerektiğini, View’den gelen etkileşimleri nasıl karşılaması gerektiğini ve View’de nasıl değişikler yapması gerektğini biliyor. Yani Prensenter’ımız burada karar mekanizaması rölünü üstleniyor.

View buradak kendi state tutma görevinide üstlenmiş.

Görüldüğü üzere MVC’ye göre daha temiz ve anlaşılır bir yaklaşım söz konusu.

şahsi kanaatim, Model, View ve Presenter üzerinde ki sorumlulukları daha iyi dağıtılmış olması yönünde.

MVP ile hem Windows Forms hem ASP.NET Web Forms uygulamalarını çok rahat geliştirebilir.

2018

LogoMVC, MVP ve MVVM PatternleriMedium
MVC
MVP
MVVM