TGViewer
| کانال توسعه‌دهندگان پایتون | | کانال توسعه‌دهندگان پایتون | @developixpython · 7.69K subscribers
Post #114 2.67K
🔶 جنگو
🔶 بخش دوم

🔻 فلسفه معماری MVC

فلسفه معماری MVC (Model-View-Controller) براساس تفکیک مسئولیت‌ها در طراحی و توسعه نرم‌افزار است. در گذشته توسعه و پیاده‌سازی بخش‌های مختلف برنامه نظیر بخش رابطه کاربری، مدیریت داده و بخش کنترل‌کننده در یک فایل پیاده سازی میشد و همین موضوع افزایش پیچیدگی، کاهش مقیاس پذیری و سخت شدن توسعه و ترمیم کدها را به همراه داشت و در نتیجه این موضوع سبب شد تا معماری تحت عنوان MVC ایجاد شود.

🔻 تاریخچه معماری MVC

معماری MVC در سال 1979 توسط Trygve Reenskaug در مرکز تحقیقاتی Xerox PARC و در حین کار با زبان Smalltalk معرفی شد. هدف این معماری جداسازی منطق کسب‌وکار از رابط کاربری بود تا نرم‌افزارها انعطاف‌پذیرتر و قابل نگهداری‌تر باشند. MVC ابتدا در سیستم‌های گرافیکی Smalltalk برای مدیریت رابط‌های کاربری تعاملی به‌کار رفت و به‌تدریج به یک الگوی اصلی در توسعه نرم‌افزار تبدیل شد.

در دهه 1990، با گسترش برنامه های تحت وب، MVC به‌وسیله فریم‌ورک‌هایی مانند Java Struts و Ruby on Rails وارد دنیای وب شد. این الگو به دلیل تفکیک مسئولیت‌ها و ساختار منظم، محبوبیت بالایی در توسعه برنامه‌های پیچیده یافت. در دهه 2000، فریم‌ورک‌هایی مانند Django، ASP.NET MVC، و Spring MVC این معماری را به‌عنوان هسته طراحی خود پذیرفتند.

با ظهور معماری‌های مدرن مانند MVVM و ابزارهایی مانند React و Angular، مفهوم MVC تغییراتی را تجربه کرد اما همچنان به‌عنوان یکی از بنیادی‌ترین الگوهای معماری در طراحی نرم‌افزار باقی مانده است.

🔻 بررسی معماری MVC

معماری MVC یک الگوی طراحی برای توسعه برنامه‌های وب است (البته هدف اصلی از ایجاد MVC در متن بالا توضیح داده شد). معماری MVC از سه بخش اصلی تشکیل شده است.

◇ بخش اول مدل (Model):
این بخش مسئول مدیریت داده‌ها و منطق کسب‌وکار است. این بخش تمام عملیات مرتبط با ذخیره‌سازی، بازیابی، و پردازش داده‌ها را انجام می‌دهد و با پایگاه داده تعامل دارد. Model مستقل از رابط کاربری است و تنها داده‌های پردازش‌شده را برای View و Controller آماده می‌کند.‌ به عنوان مثال، در یک سیستم رزرو هتل، مدل وظیفه دارد ظرفیت خالی اتاق‌ها را بررسی کند و اطمینان یابد که رزرو جدید برای هتل امکان پذیر است یا خیر. همچنین، اگر رزروی لغو شود، مدل باید ظرفیت را به‌روزرسانی کند. در این سناریو، Model شامل قوانین کسب‌وکار (Business Logic) مانند "هر اتاق فقط یک رزرو می‌تواند داشته باشد" است و این قوانین را هنگام ذخیره یا تغییر داده‌ها اعمال می‌کند.

◇ بخش دوم نما (View):
بخش View مسئول نمایش داده‌ها به کاربر است. این بخش فقط بر نمایش اطلاعات تمرکز دارد و هیچ منطق پردازشی مرتبط با داده‌ها یا منطق کسب‌وکار را شامل نمی‌شود. View داده‌ها را از Model دریافت کرده و به کاربر نمایش می‌دهد.
برای مثال، در یک سیستم فروشگاهی آنلاین، بخش نما می‌تواند صفحه‌ای باشد که لیست محصولات را به کاربر نشان می‌دهد. View فقط از اطلاعات موجود در Model (مانند نام، قیمت، و توضیحات محصول) استفاده می‌کند و آن‌ها را در قالب HTML به نمایش درمی‌آورد. این بخش هیچ‌گونه پردازش روی داده‌ها انجام نمی‌دهد، بلکه فقط آن‌ها را به شکلی قابل فهم و مرتب به کاربر ارائه می‌کند.

◇ بخش سوم کنترل‌کننده (Controller):
بخش Controller وظیفه مدیریت تعاملات کاربر و ارتباط بین Model و View را بر عهده دارد. Controller درخواست‌های کاربر را دریافت کرده و آن‌ها را به Model ارسال می‌کند تا داده‌ها پردازش شوند. سپس، Controller داده‌های پردازش‌شده را به View ارسال کرده تا در رابط کاربری نمایش داده شوند.

🔻 بررسی معماری MVT

معماری Model View Template یا به اختصار MVT به‌طور خاص در فریم‌ورک‌های Django طراحی شده است تا توسعه‌دهندگان را قادر سازد تا کدهای خود را به صورت منظم، خوانا و مقیاس‌پذیر سازماندهی کنند. این معماری مانند MVC از سه بخش اصلی تشکیل شده است که هرکدام وظایف خاصی را انجام می‌دهند. در این معماری بخش View همان بخش Controller در MVC و بخش Template تقریبا نقش View در MVC را دارد.

🔻 معماری MVT در هنگام استفاده از API

هنگام استفاده از API در جنگو، بخش Model همچنان مسئول مدیریت داده‌ها و منطق کسب‌وکار است. اما بخش View دیگر داده‌ها را به قالب‌های HTML تبدیل نمی‌کند و به‌جای آن، از Serializer برای ارسال داده‌ها به فرمت‌های JSON یا XML استفاده می‌کند. بخش Template نیز دیگر وجود ندارد.

🔻 نتیجه‌گیری

معماری MVC (Model-View-Controller) یکی از الگوهای طراحی نرم‌افزاری معروف است که به تفکیک منطق کسب‌وکار، رابط کاربری و کنترل تعاملات کمک می‌کند.

🌐 منبع تکمیلی

🔖 #Python, #پایتون, #Django, #جنگو, #orm, #فریمورک

👤 ȺʍìɾⱮօհąʍʍąժ

💎 Channel: @DevelopixPython
  • 👍 15
  • ❤ 4
More from @developixpython
  1. Sep 30, 2026💠 نسخه جدید کتابخانه FastAPI منتشر شده است 🔸 ارتقا از نسخه 0.141.1 به 0.142.2 🔖 #fastap…
  2. Sep 8, 2026آرگومان پیش‌فرض لیست؛ باگ خفن ولی بی‌سر‌و‌صدا 😅 خیلی‌ها (حتی حرفه‌ای‌ها) یه زمانی این سوت…
  3. Sep 6, 2026🔥 پروژه: مهارت‌های تحقیق آکادمیک با Claude Code اگر برای پروژه‌های پایتونی مقاله، مستندات…
  4. Aug 24, 2026خیلی وقت‌ها با باگ‌های عجیب روبه‌رو می‌شویم که فقط به خاطر یک فاصلهٔ اضافی یا خط‌جدید ته ر…
  5. Aug 12, 2026🔥 پروژه: ‏DSPy فریم‌ورک برنامه‌نویسی LLM DSPy یه فریم‌ورک پایتونی از آزمایشگاه NLP اس…
  6. Aug 9, 2026مدیریت درست resource مثل فایل، connection دیتابیس یا lock، کلی باگ و Memory Leak بالقوه را…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →