Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Model-View-ViewModel (MVVM), kullanıcı arabirimini ve kullanıcı arabirimi olmayan kodu ayıran bir kullanıcı arabirimi mimari tasarım desenidir. MVVM'nin kullanıcı arabirimini ve verileri eşitlemek, sürdürülebilirliği artırmak ve bağımlılıkları azaltmak için XAML'deki veri bağlamayı kullanarak gevşek bağlamayı nasıl sağladığını öğrenin.
Gevşek bağlama sağladığından, veri bağlamanın kullanılması farklı kod türleri arasındaki sabit bağımlılıkları azaltır. Bu yaklaşım, diğer ünitelerde istenmeyen yan etkilere neden olmadan tek tek kod birimlerini (yöntemler, sınıflar, denetimler vb.) değiştirmeyi kolaylaştırır. Bu ayırma, birçok tasarım deseninde önemli bir kavram olan endişelerin ayrılmasına bir örnektir.
MVVM'nin avantajları
Kodunuzu ayırmanın aşağıdakiler gibi birçok avantajı vardır:
- Yinelemeli, keşif kodlama stilini etkinleştirme. Yalıtılmış olan değişiklik daha az risklidir ve denemeleri daha kolaydır.
- Birim testlerini basitleştirme. Birbirinden ayrı ve üretim ortamlarının dışından yalıtılmış kod birimlerini test edebilirsiniz.
- Ekip işbirliğini destekleme. Ayrı bireyler veya ekipler, iyi tasarlanmış arabirimlere uygun modüler kod geliştirebilir ve daha sonra tümleştirebilir.
- Sürdürülebilirliği geliştirme. Ayrılmış koddaki hataları düzeltmenin diğer kodlarda regresyonlara neden olma olasılığı daha düşüktür.
MVVM'nin aksine, daha geleneksel bir "arka planda kod" yapısına sahip bir uygulama genellikle yalnızca görüntüleme verileri için veri bağlama kullanır. Denetimlerin açığa çıkardığı olayları doğrudan işleyerek kullanıcı girişine yanıt verir. Olay işleyicileri arka planda kod içeren dosyalara (MainWindow.xaml.cs gibi) uygulanır ve genellikle denetimlerle sıkı bir şekilde birleştirilir. Bunlar genellikle kullanıcı arabirimini doğrudan işleyen kod içerir. Bu yapı, olay işleme kodunu güncelleştirmek zorunda kalmadan denetimin değiştirilmesini zor veya imkansız hale getirir. Bu mimaride arka planda kod dosyaları genellikle veritabanı erişim kodu gibi kullanıcı arabirimiyle doğrudan ilgili olmayan ve diğer pencerelerle kullanılmak üzere çoğaltılan ve değiştirilen kodlar biriktirir.
Uygulama katmanları
MVVM desenini kullandığınızda uygulamanızı aşağıdaki katmanlara bölün:
- Model katmanı, iş verilerinizi temsil eden türleri tanımlar. Bu katman, çekirdek uygulama etki alanını modellemek için gereken her şeyi içerir ve genellikle çekirdek uygulama mantığını içerir. Bu katman görünüm ve görünüm modeli katmanlarından tamamen bağımsızdır ve genellikle kısmen bulutta bulunur. Tam olarak uygulanan bir model katmanı göz önünde bulundurulduğunda, isterseniz Windows Uygulama SDK'sı ve aynı temel alınan verilerle çalışan web uygulamaları gibi birden çok farklı istemci uygulaması oluşturabilirsiniz.
- Görünüm katmanı, XAML işaretlemesini kullanarak kullanıcı arabirimini tanımlar. İşaretleme, belirli ui bileşenleri ile çeşitli görünüm modeli ve model üyeleri arasındaki bağlantıyı tanımlayan veri bağlama ifadelerini ( x:Bind gibi) içerir. Bazen görünüm katmanının bir parçası olarak arka planda kod dosyalarını kullanarak kullanıcı arabirimini özelleştirmek veya işlemek veya işi gerçekleştiren bir görünüm modeli yöntemini çağırmadan önce olay işleyicisi bağımsız değişkenlerinden veri ayıklamak için gereken ek kodu kullanabilirsiniz.
- Görünüm modeli katmanı, görünüm için veri bağlama hedefleri sağlar. Çoğu durumda, görünüm modeli modeli dolaysız olarak erişime açar veya belirli model üyelerini saran üyeler sağlar. Görünüm modeli, kullanıcı arabirimiyle ilgili olan ancak modelle ilgili olmayan verileri izlemek için öğe listesinin görüntüleme sırası gibi üyeleri de tanımlayabilir. Görünüm modeli, veri erişim kodu gibi diğer hizmetlerle bir tümleştirme noktası olarak da görev alır. Basit projeler için ayrı bir model katmanına değil, yalnızca ihtiyacınız olan tüm verileri kapsülleyen bir görünüm modeline ihtiyacınız olabilir.
Temel ve gelişmiş MVVM
Her tasarım deseninde olduğu gibi, MVVM'yi uygulamanın birden fazla yolu vardır ve birçok farklı teknik MVVM'nin parçası olarak kabul edilir. Bu nedenle, Windows Uygulama SDK'sı da dahil olmak üzere çeşitli XAML tabanlı platformları destekleyen birkaç farklı üçüncü taraf MVVM çerçevesi vardır. Ancak, bu çerçeveler genellikle ayrılmış mimariyi uygulamaya yönelik birden çok hizmet içerir ve bu da MVVM'nin tam tanımını biraz belirsiz hale getirir.
Gelişmiş MVVM çerçeveleri özellikle kurumsal ölçekli projeler için çok yararlı olsa da, genellikle belirli bir desen veya tekniği benimsemenin bir maliyeti vardır ve projenizin ölçeğine ve boyutuna bağlı olarak avantajları her zaman net değildir. Neyse ki, yalnızca net ve somut bir avantaj sağlayan teknikleri benimseyebilir ve ihtiyacınız olana kadar diğerlerini yoksayabilirsiniz.
Özellikle, veri bağlamanın tüm gücünü anlayıp uygulayarak ve uygulama mantığınızı daha önce açıklanan katmanlara ayırarak birçok avantaj elde edebilirsiniz. Bu, yalnızca Windows Uygulama SDK'sı tarafından sağlanan özellikler kullanılarak ve herhangi bir dış çerçeve kullanılmadan gerçekleştirilebilir. Özellikle , {x:Bind} işaretleme uzantısı veri bağlamayı önceki XAML platformlarından daha kolay ve daha yüksek performansa sahip hale getirerek daha önce gerekli olan çok sayıda ortak kod gereksinimini ortadan kaldırır.
Temel, kullanıma hazır MVVM'yi kullanma hakkında ek yönergeler için GitHub'da Customers Orders Database UWP örneğine göz atın. Diğer UWP uygulama örneklerinin çoğu da temel bir MVVM mimarisi kullanır ve Traffic App UWP örneği , MVVM dönüştürmesini açıklayan notlarla birlikte hem arka planda kod hem de MVVM sürümlerini içerir.
Ayrıca bakınız
Konu başlıkları
Derinlemesine veri bağlama
{x:Bind} işaretleme uzantısı
UWP MVVM Örnekleri
Müşteriler Sipariş Veritabanı örneği
VanArsdel Inventory örneği
Trafik Uygulaması örneği
Windows developer