معماری MVC یا (Model View Controller) در حقیقت چندین سال است که ایجاد شده و تاکنون در تکنولوژی های مختلفی استفاده شده است. امروزه خیلی چیزها از Smalltalk، C++ گرفته تا جاوا و C# و چهارچوب کاری .NET از این معماری برای ساخت فریم ورک ها و رابط های کاربری خود استفاده کرده اند. در لیست زیر به مهم ترین ویژگی های معماری MVC پرداخته ایم : در ابتدا، این معماری Thing-Model-View-Editor نام داشت که بعدا به شکل ساده تر مدل (Model)، نما (View) و کنترلر (Controller) تغییر کرد. معماری MVC یک معنی قدرتمند و انعطاف پذیر از مفهوم جداسازی رویه ها و اجزا (Sepration of Concern) را در یک نرم افزار، ارائه می دهد. برای مثال، فرآیند جداکردن کدهای دسترسی به داده و خواندن آن ها از بخش نمایش داده ها در یک نرم افزار وب، زیبایی، کارامدی و قدرت طراحی بهتر را فراهم می کند. جداسازی صریح رویه ها و بخش ها (Sepration of Concern) در معماری MVC ممکن است کمی پیچیدگی را به عملیات طراحی نرم افزار اضافه کرده باشد، اما از طرف دیگر سرعت کار، زیبایی کدها، قابلیت کار سیستمی همزمان و خیلی فواید دیگر را به همراه داشته است. الگوی معماری MVC رابط کاربری (UI) یک برنامه را به 3 بخش اصلی به صورت زیر تقسیم می کند :
مدل (Model) : مدل، مجموعه ای از کلاس هاست (Class) که ساختار دیتا (data) برنامه را تعیین می کند مثل business logic. نما (View) : نما، تعیین می کند که رابط کاربری یا خروجی ظاهری برنامه (UI)، چگونه نمایش داده شود. نما از کدهای خالص HTML و سایر بخش های کلاینت ساید تشکیل می شود. کنترلر (Controller) : کنترلرها مجموعه ای از کلاس ها (Class) هستند که درخواست کاربر را پردازش کرده، جریان حرکت برنامه را کنترل نموده و ساختارهای تصمیم گیری (logic) برنامه را اجرا می کنند.
ایده اصلی در معماری MVC، این است که شما جزء (Component) ای دارید به نام نما (View) که مسئول رندر و تولید خروجی و رابط کاربری (UI) است. این نما (View) می تواند از کد خالص HTML تشکیل شده باشد یا یک ویجت (widget) بر روی دستکاپ باشد. نما (View) اطلاعات مورد نظر را توسط کنترلر از مدل (Model) که دربرگیرنده اطلاعات است دریافت می کند و معمولا خودشان کد اجرایی چندانی ندارند. اطلاعات دریافتی در محل های از پیش تعیین شده در نما (View) قرار گرفته و با کد ایستاتیک HTML ترکیب و در نهایت در خروجی نمایش داده می شوند. در معماری MVC، کنترلر تمامی کارها را مدیریت می کند. هنگامی که یک درخواست HTTP به نرم افزار MVC می رسد، توسط سیستم مسیردهی (Routing)، کنترلر هدف تعیین شده و عملیات های مثل انتخاب نما (View) مناسب، خواندن اطلاعات از مدل، اجرای دستورات منطقی و ... را انجام داده و به View در نمایش خروجی نهایی کمک می کند.