در این بخش در رابطه با معماری MVT جنگو و تفاوتهای آن با معماری با سابقه MVC صحبت خواهیم کرد. قبل از اینکه سراغ معماری MVT جنگو برویم، بیایید اول نگاهی به معماری MVC بندازیم.
# معماری MVC
معماری MVC برای مدت طولانی در صنعت نرم افزار وجود داشته است. اکثر زبانهای برنامهنویسی با تغییراتی جزئی معماری MVC را پیاده سازی میکنند. این معماری هر برنامه را به سه بخش تقسیم میکند. معماری MVC مخفف model-view-controller است که در زیر هر سه بخش را به صورت جزئی توضیح میدهیم:
+ بخش model
کامپوننت model ساختار اطلاعات ذخیره شده در دیتابیس را مشخص میکند. برای اتصال به دیتابیس و کار کردن با دادهها باید از model استفاده کنید. این بخش میتواند برای تبادل اطلاعات با دو بخش دیگر همکاری کند. model در این معماری با model جنگو یکسان است.
+ بخش view
بخش view رابطی است که کاربر نهایی با آن سروکار دارد. در این بخش اطلاعات را از بخش model گرفته و به کاربر نمایش میدهیم، همچنین در این بخش میتوانیم اطلاعات را از کاربر نهایی گرفته و به بخشهای دیگر ارسال کنیم. view در این معماری با view جنگو متفاوت است که در ادامه به این تفاوت میپردازیم.
+ بخش controller
بخش controller مسئول انجام تمام عملیاتهایی است که در پشت صحنه اتفاق میفتد. اگر کاربر درخواستی را ارسال کند، این درخواست ابتدا به controller رفته، پردازش شده و به بخشهای دیگر ارسال میشود. کامپوننت controller میتواند اطلاعات را از model گرفته و در بخش view به کاربر نمایش دهد. در جنگو بخش controller نداریم.
# معماری MVT
جنگو ترجیج میدهد معماری خودش را پیاده کند. معماری که جنگو از آن استفاده میکند MVT نام دارد که بسیار مشابه MVC است. MVT مخفف model-view-template است. این سه بخش مشابه سه بخشی هستند که در معماری MVC بودند اما با نامهایی متفاوت. در زیر این سه بخش را توضیح میدهیم:
+ بخش model در جنگو
دقیقا مشابه model در mvc، این بخش در جنگو هم مسئول مدیریت ساختار اطلاعات ذخیره شده در دیتابیس است. این model در جنگو با model معماری mvc هیچ تفاوتی ندارد.
+ بخش view در جنگو
برخلاف معماری mvc که در آن view مسئول نمایش اطلاعات به کاربر نهایی بود، در جنگو این بخش مسئول پردازش درخواستها است. این بخش رابطی است که بخشهای model و template را به هم وصل میکند. زمانی که کاربر درخواستی را ارسال میکند، درخواستش در این بخش پردازش شده و پاسخ مناسب به او نشان داده خواهد شد. میتوان گفت که view در جنگو همان controller است در معماری mvc.
+ بخش templates در جنگو
کامپوننت templates معادل view است در معماری mvc. در این بخش نتیجه نهایی به کاربر نشان داده میشود. همچنین میتوانید در این بخش از کاربر اطلاعاتی را دریافت کرده و به دیگر بخشهای ارسال کنید. نمایش templates جنگو وظیفه بخش view است. تمام فایلهای استاتیک مانند فایلهای html یا css در این بخش مدیریت میشوند.
همانطور که در تصویر بالا میبینید، زمانی که یک کاربر درخواستی را ارسال میکند، مراحل زیر طی میشود:
- کاربر یک درخواست از طریق url به برنامه جنگویی ارسال میکند.
- جنگو به دنبال یک url معتبر در خود میگردد.
- اگر url به view خاصی متصل باشد آنگاه آن view صدا زده خواهد شد.
- در صورت نیاز view به model متصل شده و اطلاعات مناسبی را دریافت خواهد کرد.
- در آخر view یک بخش از templates، همراه با اطلاعات دریافتی از model را به کاربر نمایش میدهد.
ارسال نظر