فهرست عناوین مقاله
جوابی شفاف و ساده برای mvc چیست
فرض کنیم که از mvc برای طراحی یک سایت می خواهیم استفاده کنیم:
- یک سایت یک سری صفحات دارد که همان view ها در این معماری است
- یک سایت دیتابیس دارد، در معماری mvc یک سایت علاوه بر دیتابیس نیاز به یک سری مدل (کلاس) دارد که می تواند دقیقا مطابق با دیتابیس شما باشد و اطلاعات از دیتابیس به مدل میاید.
- یک سایت منطقی دارد که در آن می گوید که مثلا در صفحه اصلی 10 تا از آخرین پست ها را بر اساس تاریخ انتشار آنها نمایش بده، این منطق در کنترلر (controller) نوشته می شود. در کنترلر اطلاعات را مطابق با مدل (model) از دیتابیس گرفته می شود و برای view فرستاده می شود بنابر این در این الگو منطق برنامه کاملا از view جدا می شود و این امر سبب می شود که کار توسعه پروژه بسیار آسان تر شو (رسانه آموزشی لیموناد, از معماری mvc بهره مند است)
جوابی فنی تر و تخصصی تر برای mvc چیست
mvc چیست ؟ mvc مخفف کلمات Model View Controller هست . در واقع MVC یک الگوی طراحی (design pattern) جهت جداسازی قسمت های مختلف برنامه است. هر یک از بخش های معماری MVC یعنی Model و View و controller را به شکل زیر تعریف می کنیم.
1. Model
در mvc مدل ها همان کلاس های برنامه هستند که شبیه به دیتابیس هستند ولی می توانند متفاوت و بیشتر باشند. همچنین Model وظیفه تایید داده ها را برعهده دارد تا اطلاعات درست درون آنها قرار بگیرد و برای دیتابیس ارسال شود.
2. View
این بخش اطلاعات را به کاربر نشان می دهد، ویو کاری به منطق برنامه ندارد و فقط یک model دریافت می کند و آن را به هر شکلی که نیاز باشد به کاربر نشان می دهد، این model هم توسط کنترلر ایجاد شده است و برای view رسال شده است. نکته مهمی که در بخش View باید مد نظر داشت این است که این بخش مسئول کنترل صحت داده های وارد شده از طریق کاربر و همچنین مسئول صحت داده های نشان داده شده به کاربر نیست . در واقع این بخش با داده های خام کار میکند و مسولیت صحت داده با model است.
3. Controller
این بخش همانگونه که از اسم آن مشخص است، یک بخش کنترل کننده است، ساده بگویم controller بیشتر مواقع دو جور کار می کند :
- controller اطلاعات را از دیتابیس در قالب model هایی می گیرد و بعد پردازش خود را روی آن انجام می دهد و اطلاعات را در قالب model جدیدی به view می فرستد تا ویو هر طور خواست این اطلاعات را به کاربر نشان دهد.مثل فرض کنید که ما برای صفحه پروفایل یک view برای موبایل داریم و یک view برای ویندوز، حال کنترولر بنا به تشخیص که کاربر با موبایل است یا نه یک view را انتخاب می کند تا برای کاربر ارسال شود و می بینید که یک اطلاعات مشخص در دو view متفاوت ظاهر می شود و view (ظاهر) از منطق برنامه جدا است.
- controller اطلاعات را از مدلی که از view برای او ارسال کرده است دریافت می کند و پس انجام اقداماتی آن را در دیتابیس ذخیره می کند و view دیگری را به کاربر می فرستد تا ببیند.
مزیت های استفاده از معماری mvc
اگر تا امروز نمی دانستید که mvc چیست پس احتمالا متوجه دلایل برتری mvc نمی شوید این امری عادی است پس به طرف شروع کار با mvc بروید و مطمئن باشید که مزیت های زیادی دارد. (آموزش asp mvc در پایین صفحه)
بعد از کمی تجربه اگر کنجکاو بودید برگردید و مزیت های mvc را بخوانید.
مزیت های معماری یا الگو mvc:
- استفاده دوباره از کد که در مهندسی نرم افزار بسیار مهم است، به دلیل جدا بودن این سه قسمت از هم این قابلیت به خوبی در این معماری قابل لمس است.
- همان طور که در بالا توضیح داده شد ، به سادگی می توان چندین interface داشت. یعنی شما می توانید چندین view مختلف داشته باشید و به سادگی از آنها استفاده کنید.
- کسی که ui کار است می تواند کاملا به ظاهر و ui توجه کند و به مسائل منطق یا باگ های برنامه کاری نداشته باشد.
- کسانی که کار منطق برنامه را پیدا می کنند می توانند فقط به کار خود توجه داشته باشند و به ظاهر صفحه ها کاری نداشته باشند.
- بنابر این کار تیمی بروی یک پروژه به خوبی با mvc انجام می شود.
- به دلیل جدا بودن view از model به سادگی می توان view اضافه کرد بدون این که model تغییری کند.
معایب استفاده از mvc و کمک به mvc
من فقط یک عیب به نظرم آمد ، اگر شما موردی برای مزیت یا معایب ام وی سی به نظرتون آمد تو نظرات منتظر شما هستم.
آن یک مورد این است: اولین بار درک mvc و کار کردن با آن سخت است و بدون ام وی سی پروژه های کوچک سریع تر و راحتر بالا می آیند ولی اگر پروژه نیاز به کار تیمی داشته باشد و توسعه آینده آن مهم باشد دیگر استفاده نکردن از mvc غیر عقلانی است و گران تمام می شود.
فریم ورک هایی که بر پایه mvc هستند
اگر جواب mvc چیست را یافتید نوبت به آموزش mvc برای یکی از framework های محبوب است. در زیر فریم ورک هایی که بر پایه mvc هستند برای زبان های برنامه نویسی مختلف نام می برم و شما در این میان نام فریم ورک هایی را می بینید که بسیار این روز ها معروف شده اند و افراد قوی آنها را پیشنهاد می کنند که این خود دلیل دیگری برای اثبات خوب بودن mvc است.
- asp.net دیگر کنار رفته است و asp.net mvc آمده است که در آن با معماری mvc کد c# می زنید و از توسعه وب لذت می برید. رسانه آموزشی لیموناد، ورزش سه و … از تکنولوژی asp mvc بهره برده اند. ( دوره آموزش asp.net mvc )
- php به دلیل متن باز بودن فریم ورک های mvc زیادی دارد که در زیر نام می برم که درحال حاظر لاراول محبوب ترین فریم ورک php است.
- laravel (دوره جامع آموزش لاراول) (مقاله لاراول چیست)
- CodeIgniter
- CakePHP
- Zend
- Yii
- python هم فریم ورک معروفی برای کد نویسی در وب دارد که از معماری mvc استفاده می شود. django و Pyramid دو فریم ورک محبوب پایتون mvc هستند. (در لینک آموزش پایتون ببینید.)
- برنامه نویسی روبی که همه نام آن را با rails شنیده اند. جالب است بدانید که rails یک framework بر پایه mvc است. اگر با ruby on rails اشنا نیستید در این مقاله حتما با آن اشنا شوید تا بدانید تویتر و soundcloud و git hob و بسیار از سایت های خوب و مدرن از ruby on rails بهره برده اند. (مقاله: ruby on rails چیست)
- انگولار جی اس (angularjs) یکی از فریمورک های جاوا اسکریپت است که توسط گوگل توسعه داده شده است . برنامه های تک صفحه ای نیاز دارند تا بدون رفرش شدن مدام با سرور ارتباط برقرار کنند، این فریمورک برای پیاده سازی چنین برنامه هایی بسیار مفید است. فریمورک AngularJS بخوبی معماری MVC را در سطح client پیاده سازی می کند ، که باعث ساده تر شدن توسعه و خطایابی برنامه های تحت وب می شود (لینک آموزش انگولار جی اس 2 )
در نمودار زیر که به بررسی میزان سرچ عبارت در گوگل از سال 2005 تا به حال می پردازد، می توانید به پر اهمیت شدن mvc پی ببرید و ببیند که چطور asp.net دارد به فراموشی سپرده می شود و جای آن با asp.net mvc پر می کند.
و در نمودار زیر مقایسه “آموزش php” با “آموزش لاراول” را در 5 سال گذشته داریم.
6 دیدگاه.
بسیار عالی بود مطالب .سپاس گزارم
عالی بود. خیلی راحت و ساده توضیحات داده شده???
چه زبان های برنامه نویسی لازمه یادگیری mvcهست؟!
میخوام کامل یاد بگیرم،میشه لطفا راهنماییم کنید!
ببینید mvc یک الگو است،
و این روزها بیشتر در طراحی سایت ها استفاده می شود.
اگر بخواهید php کار کنید، آموزش لاراول را جستجو کنید با خواندن همین مقاله کوتاه و آموزش لاراول به طور ضمنی mvc را هم یاد می گیرید.
اگر بخواهید .net و c# کار کنید، آموزش asp.net mvc را جستجو کنید با خواندن همین مقاله کوتاه و آموزش asp.net mvc به طور ضمنی mvc را هم یاد می گیرید.
متن شما اشکال فنی داره عزیز اصلاح فرمائید
mvc هرگز معماری چند لایه نبوده و اصلا نه ارتباطی با معماری داره و نه معماری چند لایه ای …. کلا معماری چند لایه مفهموم جدایی است
mvc یک الگوی طراحی یا پترن دیزاین است کافیه ویکیپدیا mvc را مطالعه کنید
mvc هرگز قدرت این رو نداره پروژه رو چند لایه بکنه تنها دایرکتوری ها و یا بخش های کدها رو از هم تفکیک میکنه وگرنه هرگز لایه بندی انجام نمیده
کاملا درست.
ممنون از شما آقا سامان.