باید دید اصلن این MVC که مرتب گفته میشود چیست .
بسمه تعالی
آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها – سیستم ویدئو کلوپ – بخش دوم
باید دید اصلن این MVC که مرتب گفته میشود چیست . به تصویر زیر دقت کنید .
با پذیرش اینکه MVC یک نوع Design Pattern است ، میتوان ادعا نمود این نوع معماری دارای سه اصل اساسی به نامهای
Model ، View و Controller می باشد .
سوال اینجاست که آیا فقط ASP.NET دارای یک Design Pattern در حوزه MVC می باشد ؟. پاسخ منفی است . اصلن یک طورهایی ASP.NET این نوع معماری را از Ruby قرض گرفته است . در PHPهم Laravel و YII در بستر MVC بسیار قدرتمند ظاهر شده اند .
خوب اجازه بدهید ببینیم MODEL چیست ؟. MODEL در عمل یک طرح و یک پیاده سازی از بدنه دیتابیس ما میباشد . در عمل تک تک ماهیتهای ما در ارتباط با دیتابیس هستند در Model تعریف میشوند . فرض کنید برای ویدئو کلوپ به چه بخشهای اصلی در Model نیاز داریم .
مشتری – فیلمها – تراکنشها و خود ماهیت اجاره دادن که دارای مثلن تاریخ و .... میباشد . اینها در Model پیاده سازی خواهند شد و هر کدام یک کلاس ساده با یکسری قواعد مختص به خود میباشند. نکته مهم این است که در این نوع معماری (MVC) ، طراحی این بخشها هیچ گونه درگیری با UI نداشته و تغییر و دستکاری آن میتواند به صورت مستقل انجام شود .
View چیست ؟ . View در عمل یک فایل حاوی HTML ، CSS و محتوای Static می باشد که بخشهایی از آن میتواند به صورت Dynamic توسط کدهای برنامه نویسی تکثیر و تغذیه شود.
و اما نقش Controller . در عمل Controller وظیفه پاسخگویی به Request ها را دارد . حال ممکن است در سیر پاسخگویی به یک Request چه اتفاقاتی بیفتد و چه فرمولهایی پیاده سازی گردد و در آخر یک پاسخ صحیح باید به درخواستها داده شود.
حال فرض کنید پروژه را تمام کرده ایم و آنرا روی یک دامنه به نام www.testproj.com قرار داده ایم. وقتی یک درخواست مانند www.testproj.com/Movies به سرور ارسال شود، اول Controller صدا زده شده و باید آماده به پاسخگویی گردد.خوب حالا این Controller لیست Film ها را از Model میگیرد و سپس آنها را به Viewمنتقل میکند .
حال View میتواند هر شکل ظاهری و ... داشته باشد که با CSS و ... ایجاد گردیده است. خوب دقت کنید که این استقلال بخشهای سیستم یعنی یک پیاده سازی عالی از Separation of Concerns که امروزه برای کارهای تیمی و بزرگ بسیار مورد توجه میباشد .
یک نکته در این بین وجود دارد ، درست است که به خاطر وجود Model و View و Controller این تکنولوژی به MVCمعروف است ، ولی در این بین یک ماهیت مهم دیگر به نام Router هم وجود دارد. یعنی تصویر زیر میتواند بسیار منسفانه باشد .
گفتیم اگر یک درخواست به سمت سرور ارسال شود، Controller باید پاسخگو باشد ، ولی آیا فقط یک Controller در پروژه داریم ؟. کدام Controller باید از خواب بیدار شود و پاسخ گو باشد ؟. اینجاست که وظیفه Router مشخص میشود . بر اساس قواعد Routing ، Router مشخص میکند کدام Controller و چه متدی درون آن باید پاسخ گوی یک درخواست باشد.
این تصویر گویا است . چون لیست Movies درخواست شده ، Router اقدام به صدا زدن MoviesControllerنموده است . به صورت دقیق تر باید بگوییم اقدام به صدا زدن یکی از متدهای درون آن خواهد نمود.
خوب این بود معماری MVC در همه زبانها نه فقط ASP.NET . در بخشهای بعدی ادامه مبحث را پیگیری خواهیم نمود.