چهارچوب کاری ASP.NET MVC یک فریم ورک طراحی و توسعه نرم افزارها و سایت های تحت وب است که توسط شرکت مایکروسافت، ارائه شده است. ASP.NET MVC، قابلیت های مدل معماری MVC یا (Mode View Controller) که جزء به روز ترین و محبوب ترین تکنولوژی های برنامه نویسی و طراحی نرم افزار است را با بخش مناسب و پرکاربرد ASP.NET، ترکیب کرده است. فریم ورک ASP.NET MVC، چیزی نیست که از صفر طراحی شده باشد. این چهارچوب کاری یک جایگزین کاملتر و پیشرفته تر برای فریم ورک قدیمی تر صفحات وب ASP.NET Web Forms است. این چهارچوب بر مبنای فریم ورک ASP.NET طراحی شده، لذا برنامه نویسان می توانند ASP.NET MVCهمزمان از ویژگی های معماری MVC استفاده کرده و مهارت های قبلی خود در زمینه ASP.NET را نیز به کار ببرند.
ASP.NET 1.0 در تاریخ 2002 به عنوان بخشی از چهارچوب کاری .NET ورژن 1.0 ارائه شد. در آن زمان می توانستید ASP.NET و تکنولوژی صفحات فرم (Web Form) را با هم یکسان در نظر بگیرید اما ASP.NET همواره از دو بخش اصلی و مجزا به صورت زیر، پشتیبانی می کرده است. بخش System.Web.UI : این بخش شامل فرم اصلی صفحه (Web Form)، کنترل های سرور، خاصیت ViewState و ... می شود. بخش system.web : این بخش شامل موارد اصلی و پایه عملکرد صفحات وب است ، مثل ماژول ها (modules)، مدیریت کننده ها (handlers)، درخواست های HTTP و ... زمانی که ASP.NET MVC در سال 2007 ارائه شد، الگوی معماری MVC، یکی از محبوب ترین روش ها برای ایجاد فریم ورک های تحت وب بود. در سال 2009، ASP.NET MVC به صورت رسمی توسط مایکروسافت عرضه شد با این توضیح : "چهارچوب کاری ASP.NET MVC یک فریم ورک سبک، با قابلیت تست بالاست که معماری MVC را با قابلیت های فعلی ASP.NET، ترکیب کرده است". برخی از این قابلیت های مهم، صفحات مادر (master pages) و یا سیستم اهراز هویت درون ساخته ASP.NET است. چهارچوب کاری MVC در فایل اسمبلی System.Web.MVC تعریف شده است. در آخرین تغییر نیز، مایکروسافت ASP.NET MVC را با قابلیت های جدید Razor Code و web ApI در سال 2012 عرضه عمومی کرد.
مایکروسافت تصمیم گرفت تا چهارچوب کاری MVC مختص خود را جهت ساخت برنامه های تحت وب، ایجاد کند. همانطور که گفتیم ASP.NET MVC بر روی پلتفرم ASP.NET قدیمی تر ساخته شده است. در هنگام طراحی نرم افزارهای تحت وب یا ASP.NET MVC، دیگر خبری از مشکل State نیست. همچنین مفهومی به شکل قبلی صفحه یا page، خواندن صفحه (page load) و چرخه حیات صفحه (page life cycle) وجود ندارد. هدف دیگر از طراحی ASP.NET MVC، گسترش تمامی جنبه های فریم ورک .NET بود. در ASP.NET MVC، وقتی از نما ها یا (Views) صحبت می کنیم، این View ها بایستی توسط یک موتور پردازش نما (View Engin)، تولید شوند. هنوز موتور پردازشگر View پیش فرض، می تواند صفحات ASPX را دریافت کند، اما اگر از فایل های ASPX خوشتان نمی آید، می توانید از موتور پردازشگر دلخواه خود استفاده کنید. درون فریم ورک MVC، یک جزء یا Componet ای وجود دارد که می تواند کنترلرها (Controllers) را شناسایی، فراخوانی و اجرا کند. شما ممکن است از روش پیش فرض MVC برای پیدا کردن کنترلرهای اجرای آن ها، خوشتان نیاید. بنابراین می توانید کار را به صورت دستی انجام دهید. در MVC این امکان وجود دارد که الگو و کد مورد نظر خود را وارد کرده تا رویدادها و کنترلرها را به روش دلخواه مدیریت کنید. نکته : مهمترین ایده در پشت استفاده از معماری MVC، جداسازی رویه ها یا (Sepration of Concerns) از هم است. در این مدل، هر بخش به صورت مجزا طراحی شده و سپس با هم ترکیب می شوند. در نتیجه جداسازی رویه ها، دیگر کنترلر (Controller) شما توسط بسیاری از گره های ASP.NET Runtime و یا گره های استفاده از فایل های aspx که امتحان وقت آن ها بسیار سخت است، تحت تاثیر قرار نگرفته و دچار مشکل نمی شود. در حالت جدید، برای هر چیز یک کلاس (Class) معمولی همراه با گروه ای از متدها (methods) دارید که به راحتی می توانید آن ها را تست کرده و متوجه شوید آیا کنترلر درست کار می کند یا خیر.
استفاده از چهارچوب کاری ASP.NET MVC دارای فواید زیر است : فریم ورک ASP.NET MVC با تقسیم نرم افزار به بخش مجزای نما (View)، مدل داده ای (Model) و کنترلر (Controller)، طراحی و مدیریت آن را ساده تر کرده و هر بخش می تواند توسط یک تیم یا فرد، بدون نیاز به سایر بخش ها، طراحی شود. امکان کنترل کامل بر روی کد HTML تولید شده را فراهم کرده و به خوبی مفهوم جداسازی رویه ها (Sepration of Concern) را پیاده می کند. امکان تعامل و پاسخگویی به سایر نرم افزارها و API های خارجی را فراهم می کند. شرایط بهتری را برای تست و خطایابی کد برنامه فراهم می کند، مدل Test Driven Development یا TDD. امکانات بسیار خوبی را برای کار سیستمی فراهم می کند، تا تیم های بزرگ به راحتی و بدون تداخل بر روی بخش های مختلف برنامه کار کنند. همچنین به طراحان سایت امکان درک بهتر از عملکرد برنامه را می دهد.