آموزش الگوی معماری نرم افزار MVC

معماری‌ها در برنامه نویسی نقش مهم و به سزایی در نحوه کارکرد یک برنامه و یا وبسایت دارند، طی 20 سال گذشته، فضای وب پیشرفتهای خوبی را داشته است. وبسایتها از صفحات ساده با کمی CSS تغییر یافته‌‌اند و به برنامه‌های بسیار پیچیده و قدرتمندتری تبدیل شده اند.برنامه نویس‌ها برای سهولت در توسعه برنامه ها از الگوها و معماری‌های نرم افزاری مختلفی استفاده می‌کنند تا کد را کمتر پیچیده کنند.mvcاما اولاً، معماری نرم افزار چیست؟معماری روشی سیستماتیک است که در آن نرم افزار توصیف می‌شود. همچنین به رابطه آن با سایر نرم افزارها و نحوه تعامل آنها با یکدیگر اشاره دارد.معماری نرم افزار همچنین شامل فاکتورهای دیگری از جمله استراتژی تجارت، ویژگی های کیفیت، پویایی انسان، طراحی و محیط IT است.به عبارتی دیگر، یک معماری به عنوان یک طرح کلی برای یک سیستم عمل می‌کند.architecture softwareمعماری Model-View-Controller (MVC)مشهورترین معماری نرم افزار ، Model-View-Controller یا MVC است. معماری MVC هر برنامه بزرگ را به سه قسمت تقسیم می کند:The ModelThe ViewThe Controllerهر یک از این م componentslمولفه ها برای مدیریت جنبه خاصی از برنامه ساخته شده اند و اهداف مختلفی دارند.mvcThe Modelمدل شامل تمام منطق مربوط به داده است که کاربر با آن کار می کند، مانند طرحها و رابط های یک پروژه، پایگاه داده ها و زمینه‌های آنها.به عنوان مثال، یک کاربر اطلاعات مشتری را از پایگاه داده بازیابی می کند، سوابق او را در پایگاه داده دستکاری یا به روز می‌کند یا از آن برای ارائه داده استفاده می کند.The Viewویو View شامل رابط کاربری و ارائه یک برنامه است. به عنوان مثال، نمای (View ) کاربر شامل تمام اجزای رابط کاربر مانند جعبه متن، کشویی و سایر مواردی است که کاربر با آنها ارتباط برقرار می کند.The Controllerو اما Controller کنترل کننده شامل تمام منطق مربوط به تجارت است و درخواستهای ورودی را رسیدگی می کند. این یک رابط بین مدل و View است.به عنوان مثال، Controller کاربر تمام تعاملات و ورودی های حاصل از نظر کاربر را مدیریت کرده و پایگاه داده را با استفاده از مدل کاربر به روز می کند. برای مشاهده اطلاعات کاربر از همان Controller استفاده خواهد شد.خب میدونم که سخت شد، اینجا برای درک بهتر یک نمودار برای کمک به تجسم معماری MVC و نحوه کار همه چیز با هم آورده شده است: در زیر به توضیح آن میپردازیم، با دقت بیشتری به مطلب بنگرید که متوجه نحوه کارکرد این معماری شوید.Flow diagram of the Model View Controllerنحوه کار معماری MVCابتدا مرورگر درخواستی را به Controller می فرستد. سپس، کنترل کننده (Controller ) برای ارسال و دریافت داده با مدل تعامل می کند.سپس Controller برای نمایش داده ها با View در تعامل است. View فقط به نحوه ارائه اطلاعات و نه ارائه خروجی نهایی است. این یک فایل HTML پویا است که داده ها را بر اساس آنچه کنترل کننده برای آن ارسال می‌کند ارائه می‌دهد.در نتیجه، View آخرین نمایش خود را به Controller ارسال می‌کند و Controller اطلاعات نهایی را به خروجی کاربر ارسال می‌کند.(اگه همش و نفهمیدین مشکلی نیست، این جمله پایین و خوب بفهمید، کافیه)نکته مهم این است که View و Model هرگز با یکدیگر تعامل ندارند. تنها تعاملی که بین آنها انجام می شود از طریق Controller است.این بدان معنی است که منطق برنامه و رابط کاربری هرگز با یکدیگر ارتباط برقرار نمی‌کنند، که نوشتن برنامه‌های پیچیده را آسان می کند.بیایید به یک مثال ساده نگاه کنیم:sample MVCبیایید ببینیم اینجا چه خبر است. (قدم به قدم جلو میریم) ابتدا، یک کاربر ورودی هایی را می خواهد که می خواهند لیستی از فیلم ها را از طریق یک مرورگر وب یا یک برنامه تلفن همراه ارائه دهند.سپس مرورگر درخواست را به Controller می‌فرستد تا لیست فیلمها را دریافت کند.در مرحله بعد، Controller از Model می‌خواهد لیست فیلم‌های موجود در پایگاه داده را پیدا کند.سپس Model پایگاه داده را جستجو می‌کند و لیست فیلم ها را به Controller برمی گرداند.اگر Controller لیست فیلم ها را از Model دریافت کند، Controller از View می‌خواهد که لیست فیلم‌ها را ارائه دهد.سپس، View درخواست را دریافت می‌کند و لیست ارائه شده فیلم ها را به HTML در کنترلر برمی گرداند.سرانجام، Controller آن HTML را می‌گیرد و آن را به کاربر بازمی‌گرداند، بنابراین لیست فیلم ها را به عنوان خروجی دریافت می کند.نتیجه گیریبسیاری از معماری‌های نرم افزار وجود دارد، اما Model-View-Controller محبوب ترین و پر کاربردترین است. پیچیدگی کد را کاهش می‌دهد و باعث می‌شود نرم افزار به راحتی قابل فهم باشد.اکنون شما با مفاهیم موجود در Model-View-Controller آشنا هستید. https://www.instagram.com/behrad.tech/ سوال، نکته یا ابهامی داشتین در کامنت بپرسید تا جاییکه بلدم در خدمت هستم، لایک هم یادت نره ?.