طراحی معماری نرم‌افزار یکی از مهم‌ترین مراحل توسعه این بخش بوده و اهمیت آن به اندازه معماری ساختمان است، طوری که وجود اشتباه هر قدر کوچک در معماری ساختمان می‌تواند عواقب خطرناکی داشته باشد، از این رو انتخاب الگو‌های طراحی مناسب برای معماری یک پروژه از اهمیت ویژه‌ای برخوردار است.

خوشبختانه در دنیای نرم‌افزار ، معماری‌ و الگوهای متفاوتی برای توسعه نرم‌افزار به وجود آمده‌ است، این که از چه الگویی و کجا و چگونه استفاده شود به بررسی و استفاده از تجربه شخصی و تجربه دیگران نیاز دارد. شاخصه‌های زیادی برای طراحی این الگوها در نظر گرفته می‌شود که چند مورد از آنها را تیتروار بیان می‌کنیم:

۱ ـ نگهداری از سیستم: سیستم باید طوری طراحی شود تا گروه توسعه‌دهنده یا تیم‌های دیگر بتوانند خطاها و باگ‌های آن را براحتی در کمترین زمان ممکن رفع کنند.

۲ ـ قابلیت استفاده مجدد: یک طراحی خوب باید بتواند در درازمدت هم قابلیت توسعه داشته باشد و قابلیت‌های جدید براحتی و بدون کمترین خللی در بقیه اجزا به سیستم اضافه شود.

۳ ـ بازد‌هی سیستم: بخشی از بازدهی سیستم مربوط به چارچوب کاری و پلتفرم مورد استفاده است؛ اما یک الگوی مناسب با تقسیم اجزا و ایجاد رابطه منطقی بین آنها می‌تواند در بازدهی سیستم تاثیر بسزایی داشته باشد.

۴ ـRapid Application Development) RAD) : یک معماری خوب می‌تواند سرعت توسعه را به طرز قابل ملاحضه‌ای افزایش دهد. حذف عملیات تکراری و ساده باعث می‌شود تمرکز تیم توسعه‌دهنده به بخش‌های اساسی سیستم و تامین امنیت برنامه معطوف شود.

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

طراحان نرم‌افزار هنگام طراحی معماری سیستم‌های نرم‌افزاری، الگوهای مختلفی را برای پیاده‌سازی ساختار نرم‌افزار در پیش می‌گیرند. یکی از این الگوهای معماری نرم افزار MVC یا Model View Controller نام دارد.

MVC نرم‌افزار را به سه قسمت Model ، View و Controller تقسیم می‌کند که هریک از آنها وظیفه خاصی را در چرخه حیات نرم‌افزار بازی می‌کنند.

Model (مدل)

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

View (نما)

نما درواقع رابط کاربری نرم‌افزار است و می‌توان گفت فرم‌های نرم‌افزار و تمام چیزهایی که کاربر با آنها در ارتباط است، تحت عنوان نما در نرم‌افزار قرار می‌گیرد. نما نیز همانند مدل هیچ نقشی در منطق کلی نرم‌افزار ندارد و تنها به‌عنوان یک پل ارتباطی بین کاربر و سایر بخش‌های نرم‌افزار عمل می‌کند. درواقع، نما هیچ‌گونه تصمیم‌گیری انجام نمی‌دهد و فقط شمای بیرونی نرم‌افزار است.

Controller (کنترل‌کننده)

کنترل‌کننده‌ها، قلب تپنده نرم‌افزارهای MVC محسوب می‌شوند. تمام تصمیم‌گیری‌ها و منطق نرم‌افزار در کنترل‌کننده قرار می‌گیرد و درواقع پل ارتباطی مدل و نماست. با بیانی ساده می‌توان گفت کنترل‌کننده تصمیم می‌گیرد چه داده‌ای از کدام مدل دریافت و به کدام نما برای نمایش ارسال شود.

اما چرا این ساختار برای طراحی توسعه برنامه‌های وب مناسب بوده و چه مشکلاتی را حل می‌کند؟

در پاسخ به این سوال می‌توان به چند دلیل زیر اشاره کرد:

MVC توسعه نرم‌افزار را به یک فرآیند بسیار ساده تبدیل می‌کند.

MVC فرآیند آزمون واحدها را بسیار راحت می‌کند. MVC کار گروهی همزمان را برای تیم طراح و برنامه‌نویس هموار می‌سازد.

MVC با جدا سازی منطق برنامه از نما و قرار دادن آن در کنترل‌کننده، خوانایی کدها را بسیار بالا می‌برد.

مهم‌تر از همه این‌که MVC به شکل شگفت‌انگیزی حجم کد را کاهش می‌دهد.

MVC در هر زبان برنامه‌نویسی قابل پیاده‌سازی است؛ حتی در جاوااسکریپت. اما هم‌اکنون از این روش بیشتر برای زبان‌های سمت سرور مثل PHP و ASP.net و Ruby استفاده می‌شود و در کل، MVC روشی بسیار کارا برای تیم‌های بزرگ‌تر است. هرچه تیم بزرگ‌تری داشته باشید مزایای این الگو برای شما ملموس‌تر خواهد بود. براساس تجربه، MVC برای پیاده‌سازی پروژه‌های کوچک توصیه نمی‌شود و استفاده از آن در پروژه‌های کوچک به استفاده از پتک برای کشتن پشه تشبیه می‌شود!