MVVM (Model-View-ViewModel) یک الگوی توسعه نرمافزار است که برای جداسازی کد UI از کد منطق کسبوکار استفاده میشود. این الگو معمولاً برای مدیریت Viewهای ایجاد شده با فناوری WPF به کار میرود.
Model یک شئ کسبوکار که دارای دادههای لازم است را مدیریت میکند و دادهها و ارتباط با خدمات را فراهم میآورد. بدین ترتیب، خدمات میتوانند به سادگی جایگزین و آزمایش شوند و مستقل از رابط کاربری هستند. ViewModel واسط است و دادههای Model را به حالت مورد استفاده توسط View ترجمه میکند. همچنین، درخواستها را از View به Model میفرستد. View رابط کاربری را پیادهسازی میکند و از ViewModel نگهداری مینماید.
بزرگترین مزیت MVVM نسبت به الگوی توسعه نرمافزار معروف دیگر یعنی MVP، آن است که در MVVM دیگر به یک View Interface نیازی نداریم. ViewModel هیچ چیزی درباره View نمیداند. بدین ترتیب، کد نسبت به MVP کمحجمتر میشود و زمانی که چند View و ViewModel داریم، مقیاسپذیرتر خواهد بود. مزیت دیگر آن است که میتوانید به ازای هر View، چند ViewModel داشته باشید. گاهی مشکل MVP آن است که Presenter تبدیل به شئای با مسئولیتهای متعدد میشود. در حالی که در MVVM میتوانید چند ViewModel داشته باشید، به طوری که هر یک از آنها بخشی از UX شما را پیادهسازی میکنند. از دیگر مزایای MVVM میتوان به کمک به جدایی بهتر مسائل، جایگزینی View با یک View جدید بدون تغییر ViewModel، ساده شدن کار طراحان با View بدون توجه به منطق، و انجام ساده آزمایش واحد بر روی منطق View (به دلیل قرار داشتن منطق در ViewModel) اشاره کرد.
بنابراین، اگر توسعهدهنده هستید، باید بدانید که استفاده از MVVM در توسعه با WPF و Silverlight کمک زیادی به شما خواهند کرد. اگر هنوز به یادگیری این الگو ترغیب نشدهاید، سؤالهای زیر را از خود بپرسید:
• آیا باید پروژهای را با طراحان به اشتراک بگذارید و نیاز به انعطافپذیری و همزمانی کار طراحی و توسعه دارید؟
• آیا به آزمایش واحد راهحلهای خود نیاز دارید؟
• آیا برای شما مهم است که مؤلفههایتان درون پروژهها و در سراسر سازمان قابل استفاده مجدد باشند؟
• آیا بدون نیاز به تغییر منطق کد، به انعطافپذیری بیشتری برای بهبود رابط کاربری احتیاج دارید؟
اگر به حتی یکی از سؤالهای بالا پاسخ "بله" دادید، پس بهتر است هرچه سریعتر به یادگیری MVVM بپردازید و پروژههای خود را بر اساس پیادهسازی کنید. برای یادگیری این الگو میتوانید از منابع آنلاین متنی و ویدیویی متعدد موجود در اینترنت استفاده کنید.