MVVM s ვიყენებ უკვე 2 წელია და საკმაოდ დიდ პროექტებში...
ძალიან მაგარია იმ მხრივ რო მთელ ჩემ ადრინდელ "მოღვაწეობას" სხვა თვალით უყურებ.
ძალიან მარტივად მისაერთებელია UI ლოგიკაზე UI პრეზენტეიშენი, UI ლოგიკა კი მოდელზე ანუ მონაცემთა შენახვის და ბიზნეს ლოგიკის ლეიერზე.
მერე კიდე დავწერ
ეხლა ვერ
ხო უბრალოდ MS ზე იყო საუბარი და დავწერ
MVVM არის გამართლებული WPF ფ\და Silverlight პროექტებში
MVC - WEB-ში ..
* * *
Couperwoodსინამდვილეში CAB ცდილობდა გამოეყენებინა MVC pattern-ი ASP.NET ის საშუალებით (ბაზაზე) რომელიც არისეგრედწოდებული Web-Forms ფრეიმვორკი და მე რომ მკითხო ის რასაც CAB ცდილობდა იყო hack.
MS ი უკვე ორი წელი (როგორც მახსოვს) მუშაობდა სრუალიად ახალ ვებ ფრეიმვორკზე რომელიც არის ASP.NET MVC - რომელიც უკვე მეორე ვერსიაც კი გამოვიდა.
(http://www.microsoft.com/downloads/details.aspx?FamilyID=c9ba1fe1-3ba8-439a-9e21-def90a8615a9&displaylang=en)
ისე CAB -ზე რახან ჩამოვარდა ლაპარაკი მე როგორც მახსოვს მაგ ბლოკს მოყვებოდა სემფლი რომელშიც იყო ნაჩვენები თუ როგორაა შესაძლებელი სწრაფად მიაღწიო შემდეგ მიზანს:
გქონდეს რამდენიმე პლატფორმის გამოყენებით რამდენი პრეზენთეიშენი რომელიც იქნება დაყრდნობილი ერთი და იგივე UI ლოგიკაზე (მე ეგრე ვეძახი კონტროლლერს
) და რა თქმა უნდა ერთი და იგივე მოდელზე.
ანუ თეორიულად გამოდის რომ მაინც შესაძლებელია რომ გავაკეთოთ მაგალითად
1) ვინ ფორმების UI
2) ვებ ფორმების UI
რომლებიც იყენებენ ერთი და იგივე კონტროლერს...
MVVM რაც შეეხება კონტროლერის როლს მანდ ასრულებს ViewModel რომელსაც აქვს ძალიან პატარა ცოდნა რეალურ UI ს შესახებ რომელიც იქნება ნაჩვენები იუზერისათვის.
ViewModel არწერს თვისებებს, კომანდებს და ექშენებს. ასევე აღწერს მოქმედების ლოგიკას - მაგალითად ერთ ერთი თვისების setter ში ცვლის სხვა თვისებების მნიშვნელობას; ან კომანდის შესრულების მეთოდში ცვლის კიდევ სხვა თვისებების მნიშვნელობებს. ასევე ViewModel პასუხისმგებელია მონაცემების ჩატვირთვაზე Model-იდან, და პრეზენტეიშენისთვის (View) ამ მონაცემების მომზადება.
MVVM არის ძალიან სპეციფიური ზუსტად რომ მხოლოდ WPF & Silverlight აპლიკაციებისთვის და არა ვებისთვის - იმიტომ რომ WPF & Silverlight-ში არის სპეციფიური DataContext ის ცნება რომელსაც წარმოადგენს ViewModel (ის ყენდება DataContext-ად View-ზე).
მოკლედ მე ვიტყოდი რომ MVVM არის მაინც სპეციფიური პატერნი.