mvvm چیست؟ mvvm و mvc چه تفاوتهایی با یکدیگر دارند؟
mvvm چیست؟ برای پاسخ به این سوال راه دور و درازی را در پیش داریم. این مفهوم در حقیقت یک الگوی نرمافزاری است که برای جداسازی منطق برنامه و کنترلهای رابط کاربری ساخته شده است. MVVM همچنین به عنوان model-view-binder شناخته می شود و توسط معماران مایکروسافت کن کوپر و جان گاسمن ساخته شده است. مانند بسیاری از الگوهای دیگر نرمافزاری این الگو به سازماندهی کدها و همچنین بهینهسازی آنها برای ماژول کمک زیادی میکند. استفاده از این الگو بروزرسانی و استفاده مجدد از کدها را سادهتر میکند.
از این الگو اغلب برای ویندوز و همچنین نرمافزارهای گرافیک وب استفاده میشود. از الگوی نرمافزاری MVVM معمولا بر روی WPF نیز استفاده میشود. معمولا WPF در دات نت مایکروسافت نیز وجود دارد. Silverlight، پلاگین چند رسانهای معادل اینترنت مایکروسافت WPF، هم از MVVM استفاده میکند. اگر علاقهمند هستید که اطلاعاتی بیشتر از این پاراگراف در رابطه با این الگو نرمافزاری داشته باشید در این مقاله با ما همراه باشید. در ادامه اطلاعات مفیدی را در این حوزه در اختیار شما قرار خواهیم داد.
چرا mvvm مهم است؟
کدنویسی بدون استفاده از الگو نرمافزاری مانند ساختن هواپیما بدون داشتن یک نقشه از قطعات آن است. شاید بتوان این کار را یک بار انجام داد اما دست آخر منجر به سقوط آن خواهید شد. یک برنامهنویس باید از الگوهای نرمافزاری دانش کافی را داشته باشد و بتواند به خوبی با انواع آن کار کند. Mvvm هم یکی از آنها است. قطعا داشتن دانش کافی در این حوزه از الزامات اصلی در برنامهنویسی به حساب میآید. اگر علاقهمند به تبدیل شدن به یک برنامهنویس خبره هستید قطعا داشتن دانش کافی در این حوزه میتواند مسیر شما را هموارتر و بهتر کند.
برای یادگیری این الگو تنها مطالعه یک مقاله کوتاه کافی نیست و باید تا حد ممکن دانش خودتان را در این حوزه افزایش دهید. بهترین راه یادگیری در قرن 21 استفاده از فیلم آموزشی است. قطعا با استفاده از فیلمهای آموزشی میتوان به خوبی یادگیری مباحث مختلف را شروع کرد. از این رو فرادرس که یکی از بهترین منابع آموزشی در ایران است شروع به ساخت پکیجهای حرفهای آموزشی در حوزههای مختلفی کرده است. در صورتی که علاقهمند هستید میتوانید از آنها استفاده کنید.
Mvc چیست؟
فریمورک MVC در حقیقت یک الگو معماری است که نرمافزار را به سه بخش اصلی تقسیم میکند. این سه بخش شامل Model، View و Controller میشود. به همین علت است که این نوع معماری را MVC مینامند. فرم کامل MVC مدل View Controller است. در این معماری، یک جزء برای رسیدگی به جنبه های توسعه خاص یک برنامه ساخته شده است. MVC منطق تجاری و لایه ارائه را از یکدیگر جدا می کند. این الگوی معماری عمدتا برای کاربران گرافیکی دسکتاپ استفاده میشود.
MVVM چیست؟
معماری MVVM جداسازی توسعه رابط کاربری گرافیکی را با کمک زبان نشانه گذاری یا کد GUI تسهیل می کند. فرم کامل MVVMدر حقیقت Model–View–ViewModel است. مدل view MVVM یک مبدل مقدار است که به این معنی است که مسئولیت نمایش دادهها از مدل بر عهده مدل view است به گونهای که اشیاء به راحتی مدیریت و ارائه شوند. استفاده از این معماری در برنامهنویسی بسیار متداول است و افراد زیادی از آن برای در حوزه کاری خودشان استفاده میکنند.
معمولا زمانی این معماری دیده میشود که قصد داریم از محصولات مایکروسافت استفاده کنیم. البته در دیگر حالتها هم استفاده از این معماری بسیار منطقی و درست است.
اصلیترین مولفههای معماری MVC عبارتاند از:
- Model: این مولفه شامل تمام دادهها و منطق مربوط به آن است.
- View: شامل ارائه کردن داده به کاربر و همچنین مدیریت تعامل با کاربر میشود.
- Controller: رابطی است که بین اجزای Model و View قرار میگیرد.
در ادامه تعریف مناسبتری را برای هر کدام از این مولفهها ارائه میدهیم:
1. Model:
جزء مدل دادهها و منطق مربوطه را ذخیره میکند. این نشان دهنده دادههایی است که بین اجزای کنترلکننده یا هر منطق تجاری مرتبط دیگری منتقل میشود.
به عنوان مثال، یک شی Controller به شما کمک میکند تا اطلاعات مشتری را از پایگاه داده بازیابی کنید. دادهها را دستکاری میکند و آنها را به پایگاه داده میفرستد یا از آن برای ارائه همان دادهها استفاده میکند. اگر علاقهمند هستید که به سوال mvvm چیست به درستی پاسخ دهید بهتر است ابتدا جزء مدل را به درستی درک کنید و سپس به سراغ دیگر اجزاء بروید.
2. View
همانطور که از نام آن پیداست View بخشی از برنامه است که وظیفه نمایش دادهها را بر عهده دارد. نماها توسط دادههای جمع آوری شده از دادههای مدل ایجاد میشوند. دادههای مربوط به View شامل نمودارها و دیاگرامهای مختلفی میشود که باید آنها را نیز نمایش دهد. به عنوان مثال، هر نمای مشتری شامل تمام اجزای رابط کاربری مانند جعبه متن، کشویی و غیره میشود.
جزء نما یا view نیز بسیار مهم است و باید درک درستی را از آن داشته باشید تا بتوانید بهترین نتیجه ممکن را به دست بیاورید. قطعا برای ایجاد یک الگوی نرمافزاری باید درک عمیقی در رابطه با اجزاء مختلف آن داشته باشید. این کار برای بهبود روند تولید الگو اجباری است.
3.Controller
کنترلر بخشی از برنامه است که تعامل کاربر را مدیریت میکند. کنترلر ورودیهای ماوس و صفحه کلید را از کاربر تفسیر میکند و به مدل و View اطلاع میدهد که در صورت لزوم تغییر کنند. یک کنترلر دستوراتی را به مدل ارسال می کند تا وضعیت آن را به روز کند. کنترلر همچنین دستوراتی را به نمای مرتبط خود ارسال می کند تا نمایش View را تغییر دهد. به عنوان مثال میتوان به پیمایش یک سند خاص یا ذخیره آن اشاره کرد که از جمله اصلیترین وظایف کنترلر به حساب میآید.
کنترلر باید به درستی طراحی و تولید شود تا بهترین نتیجه ممکن به دست بیاید.
الگوی MVVM
معماری MVVM اتصال داده دو طرفه بین view و view-model را ارائه میدهد. همچنین به شما کمک میکند تا انتشار تغییرات در View-Model را به صورت خودکار انجام دهید. View-model از الگوی مشاهدهگر برای ایجاد تغییرات در view-model استفاده میکند. بیایید یک بار دیگر اجزا این الگو را مورد بررسی قرار دهیم:
1. Model
مدل دادهها و منطق مربوطه را ذخیره میکند. این نشاندهنده دادههایی است که بین اجزای کنترلکننده یا هر منطق تجاری مرتبط دیگری منتقل میشود. به عنوان مثال، یک شی Controller اطلاعات دانشآموز را از پایگاهداده مدرسه بازیابی میکند. دادهها را دستکاری میکند و آنها را به پایگاهداده میفرستد یا از آن برای ارائه همان دادهها استفاده میکند.
2. View
View مخفف اجزای UI مانند HTML، CSS، jQuery و … است. در الگوی MVVC نمای مسئول نمایش دادههایی است که از کنترلر به عنوان نتیجه دریافت میشود. این view همچنین مدل را به رابط کاربری (UI) تبدیل میکند.
3. View Model
مدل view مسئول ارائه توابع، دستورات، متدها برای پشتیبانی از وضعیت View است. همچنین اجرای مدل و فعال کردن رویدادها در View را برعهده دارد.
ویژگی های MVC
تا این بخش از مقاله mvvm چیست سعی شد به طور کلی به دو مفهوم کلی از mvvm و mvc پرداخته شود. در این قسمت قصد داریم به طور کلی به ویژگیهای هر کدام از آنها بپردازیم. ویژگیهای مهم mvvm عبارتاند از:
1. قابلیت تست آسان
قطعا استفاده از فریمورک mvc انجام فرآیند تست و عیبیابی را بسیار آسان میکند و از بسیاری از مشکلات میکاهد. این تست میتواند بدون استحکاک انجام شود و در تمام مراحل کاملا امکانپذیر است. این ویژگی میتواند تاثیر فوقالعاده مناسبی را در روند انجام پروژه شما داشته باشد.
2. امکان استفاده از فریمورک های مختلف
امکان استفاده از تمامی ویژگیهای موجود در فریمورکهای مختلف مانند ASP.NET، Django، JSP در mvc کاملا وجود دارد. این ویژگی باعث میشود که بتوانید به راحتی تمامی امکانات فریمورکها را درون مدل خودتان استفاده کرده و خروجی بسیار با کیفیتی را داشته باشید.
3. امکان کنترل کامل HTMl
این ویژگی به شما امکان میدهد که کنترل کاملی را بر HTMl و همچنین URLهای خودتان داشته باشید. قطعا طراحان وب میدانند که این ویژگی بسیار کاربردی است.
4. پشتیبانی از ویژگی TDD
Test Driven Development (TDD) یک رویکرد توسعه نرمافزار است که در آن موارد آزمایشی برای مشخص کردن و اعتبار بخشیدن به کد انجام میشود. به عبارت ساده، موارد تست برای هر عملکرد ابتدا ایجاد و تست میشود و اگر تست ناموفق باشد، کد جدید برای گذراندن آزمون و ساده و بدون اشکال کردن کد نوشته میشود.
5. امکان جداسازی منطق
از جمله اصلیترین ویژگیهای mvc این است که این معماری جداسازی منطق را ارائه میدهد.
6. کمک به سئو
در دنیای امروز مهمترین اصل دیده شدن است. استفاده از این فریمورک باعث میشود که بتوانید به مسیریابی URLهای دوستدار SEO کمک کنید.
ویژگیهای MVVM
MٰٰٰٰVVM نیز مانند فریمورک MVC ویژگیهای مربوط به خود را دارد. در حقیقت همین ویژگیهای است که جواب سوال mvvm چیست را میسازد. اصلیترین این ویژگیها عبارتاند از:
امکان اتصال برنامه های تحت دستکتاپ متصل
MVVM برای برنامه های دسکتاپ با قابلیت اتصال داده نوشته شده است. به عنوان مثال میتوان به XAML و رابط INotifyPropertyChanged اشاره کرد.
استفاده از یک الگوی مشاهدهگر
اگر میخواهید در View-Model تغییراتی انجام دهید، View-Model از یک الگوی مشاهدهگر استفاده میکند. این ویژگی میتواند تاثیر فوقالعادهای را در پروژه مورد نظر شما داشته باشد.
کاربردهای مختلف
الگوی MVVM بیشتر توسط WPF، Silverlight، nRoute و غیره استفاده میشود.
تفاوت بین MVVM و MVC
در ادامه به مهمترین مزایا و معایب mvvm و mvc اشاره خواهیم کرد.
مزایای MVC
- پشتیبانی آسانتر برای نوع جدیدی از مشتریان
- توسعه اجزای مختلف را میتوان به صورت موازی انجام داد.
- بهترین پشتیبانی را برای توسعه آزمایش محور ارائه میدهد
- همه کلاسها و اشیاء مستقل از یکدیگر هستند تا بتوانید آنها را جداگانه آزمایش کنید.
- برای برنامههای وب که توسط تیمهای بزرگی از طراحان و توسعهدهندگان وب پشتیبانی میشوند، به خوبی کار میکند.
- این یک جداسازی تمیز از نگرانیها (SoC) را فراهم میکند.
- MVC امکان گروهبندی منطقی اقدامات مرتبط روی یک کنترلر را با هم فراهم میکند.
معایب MVC
- منطق تجاری با Ul
- دشواری استفاده از MVC با رابط کاربری مدرن
- افزایش پیچیدگی و ناکارآمدی دادهها
- بدون پشتیبانی رسمی اعتبار
- استفاده مجدد و اجرای آزمایشات سخت است.
- برای اجرای برنامه نویسی موازی نیاز به چندین برنامه نویس وجود دارد.
- دانش چندین فناوری لازم است.
مزایای MVVM
- استفاده مجدد از قطعات آسان است.
- شما میتوانید موارد تست واحد را برای هر دو لایه viewmodel و Model بدون نیاز به ارجاع به View بنویسید.
- منطق تجاری از Ul جدا شده است.
- نگهداری و تست آسان
- MVVM معماری اپلیکیشن شما را به صورت آزاد کوپلینگ میکند.
معایب MVVM
- برخی از مردم فکر میکنند که برای رابطهای کاربری ساده معماری MVVM میتواند بیش از حد باشد.
- Not اتصال محکمی بین مدل نما و نمای ارائه میدهد.
- نگهداری از تعداد زیادی کد در کنترلر
قدم بعدی چیست؟
همانطور که گفته شد نمیتوان به سوال mvvm چیست در یک مقاله به طور کامل پاسخ داد. قطعا مفاهیم مختلف بسیار زیادی هستند که باید به آنها رسیدگی شود. اگر علاقهمند به تسلط به معماری نرمافزار و به طور کلی مباحث مختلف کامپیوتر هستید بهتر است حتما به دنبال یک منبع جامع آموزشی باشید. برای این کار کتابها و جزوههای بسیار زیادی از اساتید بزرگ این رشته ایجاد شده است که میتوانید از آنها استفاده کنید.
ممکن است که با استفاده از کتابهای آموزشی به درستی مباحث مختلف را درک نکنید. از این رو معمولا استفاده از فیلمهای آموزشی توصیه میشود. در این حالت شما هزینه کمتری را نسبت به درس و دانشگاه پرداخت میکنید. در عوض همان کیفیت و حتی بهتر را دریافت میکنید. همچنین شما میتوانید یک فیلم آموزشی را چند بار ببینید اما امکان استفاده از یک کلاس آموزشی به صورت چند باره وجود ندارد. از این رو و با توجه به این مزایا میتوانید از یک فیلم آموزشی برای یادگیری مباحث مختلف مربوط به معماری نرمافزار را یاد بگیرید و سطح علمی خودتان را افزایش دهید.
سخن آخر
در این مقاله سعی شد به طور کلی به سوال mvvm چیست پاسخ داده شود. از آنجایی که یادگیری این مبحث بسیار مهم است سعی شد به صورت خلاصه به مباحث کلی آن پرداخته شود. قطعا یادگیری این معماری کار مشکلی است و تلاش زیادی را نیاز دارد. همانطور که گفته شد بهتر است برای یادگیری این معماری از یک منبع آموزشی جامع استفاده شود. همچنین بهتر است که این منبع آموزشی به صورت ویدئو باشد تا درک مطلب بهتر صورت بگیرد.
فیلمهای آموزشی متعددی در سطح اینترنت وجود دارد که میتوانید از آنها استفاده کنید. متاسفانه برخی از این فیلمها بیکیفیت هستند و استفاده از آنها نمیتواند مناسب باشد. از این رو فرادرس که یکی از بهترین منابع آموزشی در ایران است یک سری دوره آموزشی در حوزههای مختلف تهیه کرده، که استفاده از آنها خالی از لطف نیست. اگر از مطالعه این مقاله لذت بردید در بخش نظرات انتقادها و پیشنهادهای خودتان را با ما در میان بگذارید. شاد و موفق و پیروز باشید.
پاورپوینت استفاده از AJAX در MVC
پاورپوینت استفاده از AJAX در MVC در 27 اسلاید در قالب ppt. یا pptx. با قابلیت ویرایش برای ارائه درسی آماده دانلود میباشد. در این پاورپوینت نحوه استفاده از آژاکس در برنامه نویسی MVC در محیط ویژوال استودیو بوسیله سورس کدها و خروجی پروژه ارائه داده شده است.
درباره زیبا محمدی
فارغالتحصیل رشته فناوری اطلاعات IT هستم. به برنامه نویسی و علوم کامپیوتر علاقمندم. در حال حاضر در حوزه آموزش برنامه نویسی و راه اندازی سیستمهای مدیریت محتوا فعالیت دارم.