PDA

View Full Version : آموزش: MVC Step By Step



hjolany
پنج شنبه 14 اردیبهشت 1396, 10:41 صبح
آشنای با معماری برنامه نویسی MVC
تاریخچه
در پی گسترش فریم ورکهای مختلف در قالب پلتفرمهای گوناگون در بستر طراحی اپلیکیشنهای تحت وب شاهد فراز و نشیب های متعددی در طول پیشرفت تکنولوژی طراحی وب بودیم. در نسخه اولیه طراحی داینامیک صفحات وب در هم آمیختگی پیچیده ای از کد های Server Side و Client Side شامل html، java script، asp ویا php بودیم، همچنین تگهای CSS نیز به صورت مستقیم و در قالب تگ Style برای هر کدام از المانهای html قرار داشت، این آشفتگی پیاده سازی در آینده پروژه های بزرگ، دلیل اصلی مشکلات پشتیبانی و دیباگ سیستم بودند.
در نظر بگیرید یک سیستم بزرگ پس از انتشار نسخه نهایی از طرف کارفرما نیاز به تغییراتی در نمای سایت می داشت. در این صورت علاوه بر تغییرات بر روی تمام css های موجود نگرانی تاثیر منفی بر روی کد های سمت سرور مضاف بر اسکریپتهای سمت کلاینت نیز معضلی بود که برای تمام توسعه دهندگان وجود داشت،
به تدریج این گونه طراحی ها به سمتی پیش می رفت که هر کدام از این قسمتها توسط متخصصین مجرب و به صورت جداگانه پیاده سازی شود. بدین ترتیب هر صفحه وب متشکل از بخشهای html, Css, Javascript, Serverside Script به صورت مجزا جایگزین آشفتگی موجود گردید.
با به بازار آمدن انواع فریم ورکهای مختلف دغدغه اختراع مجدد چرخ تبدیل به پیاده سازی محاوره ای شد که تمام برنامه نویسیان و طراحان وب سایت را متعجب و خورسند کرد. فریم ورکهای از جمله Bootstrap که عرصه رقابت را از آن خود کردند، کلاسهای کتابخانه ای Jquery که تحولی عظیم در UI ایجاد کرد.
با این وجود هنوز هم این مشکل در سمت برنامه های سمت سرور وجود داشت، واگرایی این قسمت به سمت پیاده سازی اکشنهای پایگاه داده، بیزینس اصلی پروژه و بخش ارتباط با UI نیز باعث تغییر عمده ای در کد های سمت سرور شد.
MVC چیست؟
MVC بر خلاف تجسم بسیاری از دولوپرهای آماتور زبان برنامه نویسی جدیدی نبوده و یک معماری جدید پیاده سازی سمت سرور می باشد که هدف اصلی آن جداسازی بخشها منطقا مجزا می باشد. MVC مخفف کلمه Model View Controller بوده که بر همین اساس هر بخش جدا شده شامل Model ، View، Controller می باشد
Model
می دانیم اطلاعاتی که از سمت سرور قرار است به سمت کلاینت ارسال گردد عموما در دیتابیس وجود دارند، ارتباط با دیتابیس نیز دستخوش تغییرات و تکامل قرار گرفته و از حالت ارتباط مستقیم Online Spool به سوی ارتباط غیر مستقیم Offline Spool گرایش داشته و این تحول موجب متناظر سازی جداول پایگاه داده در قسمت برنامه کاربردی (در اینجا مقصود برنامه نویسی سمت سرور می باشد) شد. بدین ترتیب برنامه نویسان می بایست عینا مدلی از دیتابیس را سمت خود ایجاد و بجای ارتباط مستقیم با دیتابیس عملیات خود را بر روی مدل شبیه سازی شده پیاده می کردند. در Microsoft Visual Studio تکنیکهای جدیدی جهت پیاده سازی این گونه مدل سازی وجو دارد که معروف ترین آن Linq می باشد. بدین ترتیب متناظر سازی پایگاه داده به همراه متدهای مرتبط با آن را درقالب یک قسمت مجزا را Model می نامیم. به عنوان مثال جدولی شامل اطلاعات دانشجو به همراه متدهای درج، حذف، ویرایش،جستجو و فراخوانی را در این مدل شبیه سازی می کنیم
Controller
بیزینسی و پالایشی که در نهایت میبایست بر روی اطلاعات انجام میشود نیز در قسمت جداگانی ای بر روی اطلاعت اعمال میگردد، این قسمت شامل متدهای عمومی و خصوصی ای می باشد که علاوه بر اعمال الگوریتمهای مورد نیاز در نهایت می بایست اطلاعات پالایش شده را به سمت UI ارسال و به کاربر نمایش دهد.
View
و سر انجام اطلاعات دریافت شده از سمت دیتابیس به مدل و پالایش شده در کنترلر به این قسمت منتقل می گردد تا به کلاینت نمایش داده شود. پیشتر دیدیم که بخش نمایش نیز خودش به قسمتهای مختلفی مجزا شده بود از جمله ساختار اصلی سایت در قالب HTML، اسکریپتهای سمت کلاینت شامل javascript و کتابخانه های Jquery و نیز قسمت شماتیک سایت به صورت CSS. اطلاعات دریافتی از سمت کنترلر در داخل تگهای HTML (این قسمت صرفا جهت نمایش خروجی بوده و هیچ گونه عملیات بیزینس و پالایش در این قسمت نباید انجام گردد) ادغام می گردد.