MVVM ve MVP arasındaki fark

Yazılım geliştirmenin amacı, kullanıcılar ve işletmeler için ihtiyaç ve sorunlara yönelik çözümler üretmektir. Bunu başarmak için farklı teknolojiler ve mimari desenler Model-View-ViewModel (MVVM) ve Model-View-Presenter (MVP) kullanılmış.

Üretilen her şeyde olduğu gibi, ilk adım planlama ve tasarım aşamasıdır. Yazılım tasarım süreci, tercih edilen teknoloji araç setine dayalı bir özellik olabilir ve tasarımdan planlamadan uygulamaya - güncellemelere ve değişikliklere kadar tüm etkinlikleri kapsayabilir..

Seçilen mimari desenlere dayanan düşük düzeyli ve yüksek düzeyli mimari tasarımı kapsar ve tasarım desenlerini kullanarak yeniden kullanılabilir çözümleri haritalandırır.

Yazılım Uygulama Yapısı

Yazılım mimarisi bir uygulamanın teknik, operasyonel ve kullanıcı gereksinimlerini karşılayan yapısını tanımlar ve kodun nasıl düzenlendiğini ve yönetildiğini ifade eder.

Bir yazılım uygulamasının mimarisine karar vermek, halihazırda geliştirilmiş bir uygulamanın kolay ve değiştirilebilir bir parçası olmadığından kritiktir; bu nedenle herhangi bir programlama başlamadan önce mimari yapıya karar verilmelidir..

Mimari desenler, tasarımlar için biraz farklıdır, çünkü donanım performansı ve sınırlamaları ve yüksek kullanılabilirlik gibi daha teknik sorunları ele alarak kapsamları çok daha geniştir. Farklı mimari desen örnekleri MVC, MVVM ve MVP'dir.

Öte yandan, tasarım desenleri, yeniden kullanılabilir nesne yönelimli gelişimi kolaylaştıran ve bir uygulamanın mimarisinden daha kolay bakım ve değişim sağlayan resmi en iyi uygulamalardır.. 

Mimari Desenler

Model Görünümü Denetleyicisi (MVC) web uygulamaları için geliştirilen, özellikle Java topluluğuyla doksanların ortasından geç saatlere kadar popülerlik kazanan ilk mimari kalıplardan biriydi.

Python ve Rails için Django (Ruby on Rails) gibi daha yeni çerçeveler, hızlı konuşlandırmaya güçlü bir şekilde odaklanıyor, bu yüzden MVC, mimari kalıplardaki büyük cazibe olarak pazar payını alıyor..

Geleneksel olarak, kullanıcı arayüzü geliştirme karmaşık mantığı işlemek için çok sayıda kod içeriyordu, böylece mimari kalıplar kodu kullanıcı arayüzü (UI) seviyesinde azaltmak ve daha 'temiz' ve yönetilebilir hale getirmek için tasarlandı.

Yani, MVC deseni ile, bir web uygulaması

  • model (veri)
  • Görünüm (veri görüntüleme ve işleme arayüzü)
  • kontrolör (veriler üzerinde gerçekleştirilen işlemler ve eylemler)

model veri ve iş mantığını işler ve Hayır arasındaki bağımlılıklar model ve kontrolör veya Görünüm.

Görünüm verileri kullanıcıya desteklenen biçimde ve gerekli düzende ve kontrolör (veri almak için) kullanıcı istekleri alırsa, isteği tamamlamak için gereken ilgili kaynakları çağırır.

Bu kalıbı çevrimiçi bir kitap mağazası oluşturmaya uygulayalım.

Kullanıcılar kitapları arayabilir, görüntüleyebilir, kaydedebilir ve satın alabilir, profillerini ve kitap listelerini yönetebilir. Bir kullanıcı SCI-FI kategorisini tıkladığında, ilgili tüm kitapların kullanılabilir olarak görüntülenmesi gerekir.

Kontrolörler kitapları yöneten eylemleri (liste, ekleme, görüntüleme vb.) yönetme. Birden fazla olabilir Kontrolörler bir ana ile kontrolör 'trafiği yönlendirme'.

Bu örnek için, kontrolör controller_books.php olarak adlandırılır ve model (örn. model_books.php) kitaplarla ilgili verileri ve mantığı işler.

Son olarak, farklı Görüntüleme çevrimiçi sepete kitap eklerken veya kitap ayrıntılarını görüntülerle ve incelemelerle görüntülerken olduğu gibi,.

controller_books.php eylemi (kullanıcı isteği) ana alandan alır kontrolör (Örneğin. index.php). controller_books.php isteği analiz eder ve model_books.php (veriler) SCI-FI kitaplarının listesini döndürmek için.

Sorumluluğu model uygulanmış herhangi bir mantığı kullanarak (arama filtrelerini kullanarak) bu bilgileri sağlamaktır. kontrolör sonra bilgileri alır ve ilgili Görünüm (arama görünümü, baskı görünümü, ayrıntı görünümü vb.) ve bilgiler ( Görünüm) isteği başlatan kullanıcıya.

Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Hiyerarşik-Model-View-Kontrolör (HMVC) gibi mimari modellerin yumurtlama çeşitlerini geliştiren MVC deseninin temelleri budur ve Model-Görünüm-Adaptörü (MVA), vb..

MVP Kalıbı

Model-View-Presenter (MVP)

MVP kalıbı bir süredir ortada ve MVC'nin bir varyantı. Hedef, otomasyon yoluyla test edilebilecek kod miktarını artırmak olan test otomasyonu için özel olarak tasarlanmıştır ve kalıp, iş mantığını kullanıcı arayüzünden izole ederek sunum katmanındaki bazı sorunları ele almaktadır..

Ekran Görünüm'dür, görüntülediği veriler Modeldir ve Sunucu ikisini birbirine bağlar.

MVP ayrı sorumlulukları olan aşağıdaki bileşenleri içerir:

  • model (görüntülenecek verileri tanımlar)
  • Görünüm (Modeldeki verileri görüntüler ve kullanıcı isteklerini Sunum Yapan kişiye yönlendirir).
  • sunucu (Görünüm ve Model arasında etkileşim kurar ve bunları birbirine bağlar)

Görünüm (bir web sayfası) etkinlikleri (kullanıcı istekleri) siteye yönlendirerek sayfa kontrollerini görüntüler ve yönetir. sunucu başlatılan Görünüm.

sunucu bu olayları okuyarak ve güncelleyerek yanıt verir. model değiştirmek için Görünüm ve bu nedenle, Sunucu en sorumluluk, model ve Görünüm.

Baktıktan sonra MVC ve MVP kalıplar, ortaklığın her bileşen için ayrı sorumlulukları vardır ve bunlar arasındaki ayrımı teşvik ederler. Görünüm (UI) ve model (veri). Bu kalıplar arasındaki önemli farklılıklar kalıpların nasıl uygulandığı konusunda daha belirgindir..

MVP gelişmiş çözümler için uygulanması karmaşık bir desen olabilir, ancak iyi tasarlanmış bir çözüm olarak uygulandığında kesinlikle büyük faydaları vardır, ancak basit çözümler için uygun seçim olmayabilir..

MVVM Kalıbı

Model-View-ViewModel (MVVM)

MVVM Desen Windows Presentation Foundation (WPF) ve Microsoft Silverlight platformları için özel olarak tasarlanmıştır ve tüm platformlarda kullanılabilir XAML [i] platformlar.

WPF, Windows tabanlı programlarda kullanıcı arabirimlerini oluşturan ve ilk olarak .NET Framework 3.0'da yayımlanan bir Microsoft sistemidir.

MVVM rafine edildi MVC ve bu modelde, Görünüm davranışlar, olaylar ve veri bağlama ile aktiftir ve Görünüm ile senkronize olur ViewModel (bu, sunumun ayrılmasını sağlar ve sunumu yönetmek ve işlemek için yöntemler ve komutlar sunar model.

MVVM üç temel bileşen içerir:

  • model (doğrulama ve iş mantığı olan verileri temsil eder)
  • Görünüm (Görünüm, kullanıcının ekranda gördüklerinin yapısını, düzenini ve görünümünü tanımlamaktan sorumludur. İdeal olarak, görünüm yalnızca XAML ile tanımlanır, iş mantığı içermeyen sınırlı bir kod arkası vardır. arasında bağlanma Görünüm ve ViewModel Modeli ve ViewModel'i View ile senkronize etmek için gösterilebilir)
  • ViewModel (Görünümü Modelden ayırır ve verileri işlemek için yöntemler ve komutlar sunar (Model).

Görünüm 'den veri alır ViewModel (veri bağlama ve yöntemlerle) ve çalışma zamanında Görünüm içindeki etkinliklere yanıt verirken değişecek ViewModel.

ViewModel arasında aracılık eder Görünüm ve model ve Görünüm mantık. İle etkileşir model - verileri model ve Görünüm göstermek.

Bu bileşenlerin hepsi birbirinden ayrılır ve bağımsız olarak çalışabilmeleri için daha fazla esneklik sağlar, birim testlerini yalıtır ve diğer bileşenleri etkilemeden değiştirir.

Bu yapı sayesinde model ve diğer bileşenler bağımsız olarak gelişerek geliştiricilerin çözümün farklı yönleri üzerinde eşzamanlı olarak çalışmalarına olanak tanır. Örneğin, tasarımcılar Görünüm, diğer bileşenlere erişmeye gerek kalmadan veri örnekleri oluştururlar. Bu, kullanıcı arayüzünün Görünüm XAML'de uygulandı.

Daha önce de belirtildiği gibi MVP, basit çözümler, “Merhaba Dünya!” gibi mimari ve tasarım modellerine ihtiyaç duymaz. herhangi bir modeli takip etmek için çok basit; ancak daha fazla özellik, işlev ve bileşen tanıtıldıkça uygulamanın karmaşıklığı artar ve yönetilmesi gereken kod miktarı da artar.

Özetle

Kullanıcı arayüzü geliştirmenin başlangıcından bu yana, tasarım süreçleri geliştirme sürecini kolaylaştırmak için giderek daha popüler hale geliyor, uygulamalar daha ölçeklenebilir ve daha kolay test yapılmasını kolaylaştırıyor.

MVP ve MVVM Kalıpları arasındaki resimli fark:

  • Hem de MVP ve MVVM, Görünüm uygulamaya giriş noktasıdır
  • İçinde MVP, arasında bire bir eşleme var Görünüm ve sunucu, nerede MVVM, arasındaki ilişki bire çok Görünüm ve ViewModel.
  • MVP öncelikle Windows Forms ve Windows Phone uygulamaları için kullanılır ve MVVM Silverlight, WPF, Nakavt / AngularJS, vb için tasarlanmıştır.