موضوع مقاله: مدل-نما-مدل نما | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # مدل-نما-مدل نما | مقدمه: به این معنی که مسئول تبدیل اشیای داده‌ای از مدل به گونه‌ای است که بتوان به راحتی آن‌ها را مدیریت و ارائه کرد. | ## بخش 1: مدل-نما-مدل نما | از این نظر، نمامدل بیشتر به مدل شباهت دارد تا نما و بیشتر (اگر نه تمام) منطق نمایش نما را مدیریت می‌کند.نمامدل ممکن است یک الگوی میانجی را پیاده‌سازی کند و دسترسی به منطق بک‌اند را حول مجموعه‌ای از موارد استفاده پشتیبانی‌شده توسط نما سازماندهی کند. اجزای الگوی MVVM مدل مدل به یکی از دو مفهوم می‌انجامد: یک مدل دامنه که وضعیت واقعی را نمایش می‌دهد (یک رویکرد شی گرا)، یا لایه دسترسی به داده که محتوا را نمایش می‌دهد (یک رویکرد محور داده). نما همانطور که در الگوهای مدل-نما-کنترل‌گر (MVC) و مدل-نما-ارائه‌دهنده (MVP)، نمای نمایش، ساختار، طرح و ظاهر آنچه کاربر در صفحه نمایش می‌بیند است. این نمایش یک نمایش از مدل را نمایش می‌دهد و بازخورد کاربر را با نمایشگر (کلیک‌های موس، ورودی صفحه کلید، حرکات تپ صفحه و غیره) دریافت کرده و این اقدامات را از طریق پیوند داده (ویژگی‌ها، تماس‌های رویداد و غیره) که برای اتصال نما و مدل نمایش تعریف شده، به مدل نما منتقل می‌کند. مدل نما مدل نما یک انتزاع از نمایشگر است که ویژگی‌ها و دستورات عمومی را آشکار می‌کند. به جای کنترل‌گر در الگوی MVC یا ارائه‌دهنده در الگوی MVP، MVVM یک بایندر دارد که ارتباطات بین نما و ویژگی‌های بسته‌شده در مدل نمایشگر را به طور خودکار انجام می‌دهد. یک تفاوت اصلی بین مدل نما و ارائه‌دهنده در الگوی MVP این است که ارائه‌دهنده یک مرجع به نمایشگر دارد در حالی که مدل نمایشگر ندارد. به جای آن، نما به طور مستقیم به ویژگی‌های مدل نمایشگر برای ارسال و دریافت به‌روزرسانی‌ها بایند می‌شود. | ## بخش 2: مدل-نما-مدل نما | برای عملکرد بهینه، این نیاز به فناوری بایندینگ یا تولید کدهای سری می‌کند تا بایندینگ انجام شود. تحت برنامه‌نویسی شی گرا، مدل نمایشگر گاهی به عنوان یک شیء انتقال داده ارجاع می‌شود. بایندر بایندر (Binder) یا واسط، به طور ضمنی در الگوی MVVM وجود دارد و وظیفه همگام‌سازی داده‌ها و دستورات بین مدل‌نما و نما را به عهده دارد. بایندر توسعه‌دهنده را از نوشتن منطق‌های تکراری برای همگام‌سازی مدل‌نما و نما معاف می‌کند. زمانی که الگوی MVVM خارج از پشته‌ی مایکروسافت پیاده‌سازی می‌شود، وجود یک فناوری بایندینگ داده‌های اعلانی است که امکان‌پذیری این الگو را فراهم می‌کند. بدون یک بایندر، معمولاً از MVP یا MVC استفاده می‌شود و نیاز به نوشتن کدهای تکراری بیشتر است (یا تولید آن‌ها با استفاده از ابزارهای دیگر). منطق MVVM برای حذف تقریباً تمام کدهای رابط کاربری گرافیکی ("کد-پشت") از لایه نمایش، با استفاده از توابع اتصال داده در WPF (بنیاد ارائه ویندوز) برای تسهیل بهتر جداسازی توسعه لایه دید از بقیه الگوها طراحی شده است. به‌جای اینکه توسعه‌دهندگان تجربه کاربری (UX) را مجبور به نوشتن کد رابط کاربری گرافیکی کنند، می‌توانند از زبان نشانه‌گذاری چارچوب (مانند XAML) استفاده کنند و پیوندهای داده‌ای را به مدل view ایجاد کنند، که توسط توسعه‌دهندگان برنامه نوشته و نگهداری می‌شود. | ## بخش 3: مدل-نما-مدل نما | جداسازی نقش‌ها به طراحان تعاملی اجازه می‌دهد تا به جای برنامه‌نویسی منطق تجاری، بر نیازهای UX تمرکز کنند. بنابراین، لایه های یک برنامه کاربردی را می توان در جریان های کاری متعدد برای بهره وری بالاتر توسعه داد. حتی زمانی که یک توسعه‌دهنده منفرد روی کل پایگاه کد کار می‌کند، جداسازی مناسب دیدگاه از مدل مؤثرتر است، زیرا رابط کاربری معمولاً در چرخه توسعه اغلب و در اواخر چرخه توسعه براساس بازخورد کاربر نهایی تغییر می‌کند.[نیازمند منبع] الگوی MVVM تلاش می کند تا هر دو مزیت جداسازی توسعه عملکردی ارائه شده توسط MVC را به دست آورد، در حالی که از مزایای اتصال داده ها و چارچوب با اتصال داده ها تا حد امکان به مدل کاربردی خالص استفاده می کند. از بایندر، مدل مشاهده و ویژگی های بررسی داده های لایه های تجاری برای اعتبارسنجی داده های دریافتی استفاده می کند. نتیجه این است که مدل و چارچوب تا حد امکان عملیات را هدایت می‌کنند و منطق برنامه را که مستقیماً نمایش را دستکاری می‌کند، حذف یا به حداقل می‌رساند (به عنوان مثال، کد-پشت). او معتقد است که MVVM می‌تواند برای ایجاد رابط‌های کاربری ساده، "بیش از حد" باشد. | ## جمع‌بندی | برای برنامه‌های بزرگ‌تر، او بر این باور است که عمومی‌سازی مدل‌نما از ابتدا می‌تواند دشوار باشد، و بایندینگ داده‌های بزرگ‌مقیاس می‌تواند منجر به کاهش عملکرد شود.