mvc-چیست؟

mvc چیست؟

جوابی شفاف و ساده برای mvc چیست؟

فرض کنیم که از mvc برای طراحی یک سایت می خواهیم استفاده کنیم:

  1. یک سایت یک سری صفحات دارد که همان view ها در این معماری است
  2. یک سایت دیتابیس دارد، در معماری mvc یک سایت علاوه بر دیتابیس نیاز به یک سری مدل (کلاس) دارد که می تواند دقیقا مطابق با دیتابیس شما باشد و اطلاعات از دیتابیس به مدل میاید.
  3. یک سایت منطقی دارد که در آن می گوید که مثلا در صفحه اصلی ۱۰ تا از آخرین پست ها را بر اساس تاریخ انتشار آنها نمایش بده، این منطق در کنترلر (controller) نوشته می شود. در کنترلر اطلاعات را مطابق با مدل (model) از دیتابیس گرفته می شود و برای view فرستاده می شود بنابر این در این الگو منطق برنامه کاملا از view جدا می شود و این امر سبب می شود که کار توسعه پروژه بسیار آسان تر شو (سایت انار تک, از معماری mvc استفاده کرده است)

جوابی فنی تر و تخصصی تر برای mvc چیست؟

mvc چیست ؟ mvc مخفف کلمات Model View Controller هست . در واقع MVC یک الگوی طراحی (design pattern) جهت جداسازی قسمت های مختلف برنامه است. هر یک از بخش های معماری MVC یعنی Model و View و controller را به شکل زیر تعریف می کنیم.

۱. Model 
در mvc مدل ها همان کلاس های برنامه هستند که شبیه به دیتابیس هستند ولی می توانند متفاوت و بیشتر باشند. همچنین Model وظیفه تایید داده ها را برعهده دارد تا اطلاعات درست درون آنها قرار بگیرد و برای دیتابیس ارسال شود.

۲. View 
این بخش اطلاعات را به کاربر نشان می دهد، ویو کاری به منطق برنامه ندارد و فقط یک model دریافت می کند و آن را به هر شکلی که نیاز باشد به کاربر نشان می دهد، این model هم توسط کنترلر ایجاد شده است و برای view رسال شده است. نکته مهمی که در بخش View باید مد نظر داشت این است که این بخش مسئول کنترل صحت داده های وارد شده از طریق کاربر و همچنین مسئول صحت داده های نشان داده شده به کاربر نیست . در واقع این بخش با داده های خام کار میکند  و مسولیت صحت داده با model است.

۳. Controller 
این بخش همانگونه که از اسم آن مشخص است، یک بخش کنترل کننده است، ساده بگویم controller بیشتر مواقع دو جور کار می کند :

  1. controller اطلاعات را از دیتابیس در قالب model هایی می گیرد و بعد پردازش خود را روی آن انجام می دهد و اطلاعات را در قالب model جدیدی به view می فرستد تا ویو هر طور خواست این اطلاعات را به کاربر نشان دهد.مثلا فرض کنید که ما برای صفحه پروفایل یک view برای موبایل داریم و یک view برای ویندوز، حال کنترولر بنا به تشخیص که کاربر با موبایل است یا نه یک view را انتخاب می کند تا برای کاربر ارسال شود و می بینید که یک اطلاعات مشخص در دو view متفاوت ظاهر می شود و view (ظاهر) از منطق برنامه جدا است.
  2. controller اطلاعات را از مدلی که از view برای او ارسال کرده است دریافت می کند و پس انجام اقداماتی آن را در دیتابیس ذخیره می کند و view دیگری را به کاربر می فرستد تا ببیند.

مزیت های استفاده از معماری mvc

اگر تا امروز نمی دانستید که mvc چیست پس احتمالا متوجه دلایل برتری mvc نمی شوید این امری عادی است پس به طرف شروع کار با mvc بروید و مطمئن باشید که مزیت های زیادی دارد. 
مزیت های معماری یا الگو mvc:

  1.  استفاده دوباره از کد که در مهندسی نرم افزار بسیار مهم است، به دلیل جدا بودن این سه قسمت از هم این قابلیت به خوبی در این معماری قابل لمس است.
  2. همان طور که در بالا توضیح داده شد ، به سادگی می توان چندین interface داشت. یعنی شما می توانید چندین view مختلف داشته باشید و به سادگی از آنها استفاده کنید.
  3. کسی که ui کار است می تواند کاملا به ظاهر و ui توجه کند و به مسائل منطق یا باگ های برنامه کاری نداشته باشد.
  4. کسانی که کار منطق برنامه را پیدا می کنند می توانند فقط به کار خود توجه داشته باشند و به ظاهر صفحه ها کاری نداشته باشند.
  5. بنابر این کار تیمی بروی یک پروژه به خوبی با mvc انجام می شود.
  6. به دلیل جدا بودن view از model به سادگی می توان view اضافه کرد بدون این که model تغییری کند.

معایب استفاده از mvc و کمک به mvc

من فقط یک عیب به نظرم آمد ، اگر شما موردی برای مزیت یا معایب ام وی سی به نظرتون آمد تو نظرات منتظر شما هستم.

آن یک مورد این است: اولین بار درک mvc و کار کردن با آن سخت است و بدون ام وی سی پروژه های کوچک سریع تر و راحتر بالا می آیند ولی اگر پروژه نیاز به کار تیمی داشته باشد و توسعه آینده آن مهم باشد دیگر استفاده نکردن از mvc غیر عقلانی است و گران تمام می شود.

فریم ورک هایی که بر پایه mvc هستند

اگر جواب mvc چیست را یافتید نوبت به آموزش mvc  برای یکی از framework های محبوب است. در زیر فریم ورک هایی که بر پایه mvc هستند برای زبان های برنامه نویسی مختلف نام می برم و شما در این میان نام فریم ورک هایی را می بینید که بسیار این روز ها معروف شده اند و افراد قوی آنها را پیشنهاد می کنند که این خود دلیل دیگری برای اثبات خوب بودن mvc است.

  1. asp.net دیگر کنار رفته است و asp.net mvc آمده است که در آن با معماری mvc کد c# می زنید و از توسعه وب لذت می برید. 
  2. php به دلیل متن باز بودن فریم ورک های mvc زیادی دارد که در زیر نام می برم که درحال حاظر لاراول محبوب ترین فریم ورک php است.
    1. laravel
    2. CodeIgniter
    3. CakePHP
    4. Zend
    5. Yii
  3. python هم فریم ورک معروفی برای کد نویسی در وب دارد که از معماری mvc استفاده می شود.  django و Pyramid دو  فریم ورک محبوب پایتون mvc هستند.
  4. برنامه نویسی روبی که همه نام آن را با rails شنیده اند. جالب است بدانید که rails یک framework بر پایه mvc است.  
  5. انگولار جی اس (angularjs) یکی از فریمورک های  جاوا اسکریپت است که توسط  گوگل توسعه داده شده است . برنامه های تک صفحه ای نیاز دارند تا بدون رفرش شدن مدام با سرور ارتباط برقرار کنند، این فریمورک برای پیاده سازی چنین برنامه هایی بسیار مفید است. فریمورک AngularJS به خوبی معماری MVC را در سطح client پیاده سازی می کند ، که باعث ساده تر شدن توسعه و خطایابی برنامه های تحت وب می شود

منبع : blog.limoonad.com


برچسب ها :


اشتراک گذاری :