wait لطفا صبر کنید
صفحه اصلی  » مقالات
1395/12/08
7995
00

آشنایی با معماری MVC (بخش اول)

معماری MVC (Model-View-Controller) یک معماری نرم افزاری بمنظور جداسازی نمایش داده ها از ارتباط کاربر می باشد.

معماری MVC (Model-View-Controller)یک معماری نرم افزاری بمنظور جداسازی نمایش داده ها از ارتباط کاربر می باشد.

بخش Model شامل داده های برنامه، قوانین تجاری، منطق و توابع برنامه می باشد. یک View نیز می تواند نمایش خروجی باشد، مثل یک نمودار و یا جدول. برای مجموعه یکسانی از داده ها می توان نمایش های متنوعی را داشت. به عنوان مثال می توان یک نمایش نموداری برای مدیر سیستم داشته و یک نمایش جدولی از همان داده ها را برای حسابداران ارائه داد. بخش Controller نیز در واقع به عنوان رابط بین دو بخش Model و View عمل می کند.

 

·   Controller: به View مرتبط دستور می دهد تا نوع نمایش Model را تغییر دهد (به عنوان مثال اسکرول کردن در یک داکیومنت). همچنین می تواند به Model دستور دهد تا حالت خود را بروز کند (به عنوان مثال ویرایش کردن یک داکیومنت).

·   Model: تغییر وضعیت خود را به دو بخش دیگر اعلام می کند. بدین ترتیب بخش View نمایش بروز شده را ارائه دهد و بخش Controller نیز مجموعه دستورات خود را بروز می کند.

·    View: این بخش داده های مورد نیاز خود برای تولید یک نمایش را از بخش مدل دریافت می کند.

شاید این سوال پیش بیاید که چه نیازی به طی این همه مراحل برای رسیدن نتیجه و نمایش آن به کاربر می باشد. اما خدمتی که این مدل ارائه می دهد، جداسازی مفاهیم و قابل استفاده مجدد بودن کد می باشد. جداسازی مفاهیم کمک می کند تا بتوان سیستم را بسیار راحت تر تغییر و یا توسعه داد.

به عنوان مثال فرض کنید برنامه ای نوشته و آن را به مشتریان تحویل داده اید. پس از مدتی از شما خواسته می شود که امکانات دیگری به برنامه اضافه گردد. به عنوان مثال علاوه بر نمایش‎های جدولی، نمایش های نموداری و امکان ذخیره سازی در فایلها نیز اضافه گردند. در این صورت اگر برای دسترسی به داده های مورد نیاز هر فرم به صورت مستقیم با پایگاه داده ارتباط برقرار شده باشد، تغییرات و توسعه های آتی در نرم افزار به سختی و با مشکل همراه خواهد بود. در حالیکه استفاده از معماری MVC این مشکل را حل و امکان توسعه نرم افزارها را راحت تر می کند.

در معماری MVC روند کلی برنامه به این شکل است که کاربر تقاضای خود را از طریق واسط های برنامه نویسی از بخش View درخواست می کند. بخش View در خواست ها را به بخشController  فرستاده و این بخش با برقراری ارتباط با بخش Model درخواست های کاربر را پردازش کرده و پس از پایان پردازش زمانی که خروجی درخواست داده شده آماده گردید، بخش Controller بخش View را آگاه می سازد تا خود را بر اساس تغییرات جدید که اصطلاحا در معماری MVC به آن حال Model می گویند، بروز کند. در واقع چیزی که باعث می شود تا بخش Controller به بخشView  اطلاع دهد که باید حالت جدید Model را دریافت کند و خود را Update کند این است که بخش View باید قبلا خودش را در بخش Model اصطلاحا Register کرده باشد که البته عمل Register کردن توسط بخش Controller انجاام می گیرد.

به عنوان یک مثال ساده بسیاری از برنامه نویسان زمانی که در فرم Login برنامه، کاربر کلمه عبور خود را وارد می‎‎کند، در همان فرم Login اقدام به چک کردن پسورد مبنی بر صحت آن و . . . می کنند. که این عمل در معماری  MVCقابل قبول نیست! در واقع برای حل این مسئله در معماری MVC، در فرم Login هنگامی که کاربر کلمه عبور را وارد کرد و دکمه Login یا ورود را زد، کلمه عبور داده شده بدون هیچ گونه اعمالی اعم از Encrypt کردن و . . . به بخش های دیگر فرستاده می شود و فقط یک نتیجه ساده مبنی بر این که کاربر اجازه ورود دارد یا خیر را از بخش های دیگر دریافت می‎کند که بر اساس ان اجازه ورود کاربر به برنامه داده می‎شود.

امروزه فریم ورک های زیادی وجود دارند که امکان پیاده سازی معماری MVC را در برنامه های تحت وب فراهم می کنند. فریم ورک های MVC اولیه تقریبا تمام سه بخش Model، View و Controller را در سمت سرور پیاده می کردند. در این فریم ورک ها درخواست کاربر به کنترلر ارسال شده و پاسخ آن به صورت یک صفحه و یا فرم از view دریافت می شد. پس از احساس نیاز به کم کردن بار سرورها فریم ورک هایی چون JavascriptMVC و Backbone ارائه گردیدند که امکان اجرای بخش های از معماری MVC را بر روی کلاینت ها فراهم کردند.

تماس با ما

ایمـیل : I N F O @ D E P N A . C O M
 دفتر تهران : خیابان کارگر شمالی - بعد از مسجد النبی - خیابان ابراهیمی (17) - پلاک 140
تلفن:88019001-021
 دفتر قم : خیابان 45 متری صدوقی - 20 متری فجر - خیابان دانش - کوی 14 - پلاک 10
تلفن:32906868-025