VM-View Model

VM-View Model;

MVVM, Model, View ve ViewModel olmak üzere üç temel yapıdan oluşmaktadır. Kısaca bu yapıların neler olduğuna değinecek olursak;

Model: Veritabanından, web servislerinden ya da herhangi bir veri kaynağından gelen verilerimizi temsil etmek için kullanılan POCO ya da entity sınıflarından oluşmaktadır. Ayrıca veri tutarlığını ve doğruluğunu kontrol eden iş kuralları da burada yer almaktadır.

View: Bu kısım verilerimizi son kullanıcılara aktardığımız görsel arayüzdür. Son kullanıcı ile uygulama arasında bir köprü görevi görür.

ViewModel: ViewModel ise görsel arayüz ile model arasında köprü görevi görmektedir, yani Model’i View’a bağlayan yapıdır. View ile Model arasında doğrudan bir etkileşim yoktur. View, ilgili işlemleri ViewModel üzerinden yapmaktadır. ViewModel’ın View’a direkt erişimi yoktur ve View ile ilgili hiçbir şey bilmez.

Proje içerisinde;

VM'ler; Database'de var olan ve HomePage, TimeLine gibi sayfalarda ihtiyaç duyulan verileri göstermek için kullanılır. Aslında düz mantık düşündüğümüzde ViewModel modelin kullanıcıya gösterilmesinde kullanılmasıdır.

DTO; verilerin UI'dan database e database den UI kısmına transaferi için kullanılır.User'ın register olma işleminde UI kısmına girilen verileri DB'ye DTO taşır. Ve yine User verilerini edit işleminde DB deki verileri, DTO aracılığı ile UI kısmına aktarır. Düz mantık düşünüldüğünde Data Transfer Objectir.

DTO ve VM ler aslında düşünüldüğünde birbirliri yerine kullanılabilirler. Daha doğrusu DTO'lar VM lerin yerine kullanılabilirler fakat doğru bir kullanım olmaz ama hatada vermez.

DTO ve VM lerin asıl kullanım amaçları Database'deki verilere doğrudan erişimi engellemektir. DTO ve VM verilerin tutularak hazır bekletildiği yerlerdir denilebilir.

Örnek VM;

Projede oluşturulan TimeLine sayfasında gösterilmek isteniln verilen VM içerisinde oluşturularak tutulur ve UI kısmına çıkartılır.Proje içerisinde TimeLine isimli bir entitiy yoktur. Bu VM tamamen Business amacına göre ve oluşturulan modelin UIda gösterilmesi için oluşturulmuştur. Böylece DB'deki bütün tablolara ayrı ayrı gidip ordaki bilgileri almak için ekstra iş yükü harcanılmaz ve tabi UI kısmının DB'ye olan ulaşımı kesilir.

Last updated