عبارت MVC مخفف سه کلمه  Model, View, Controller می باشد. این نوع الگوی معماری سعی در جداسازی برنامه ها به این سه بخش اصلی می کند. در واقع چهارچوب معماری ASP.NET MVC یک جایگزین برای معماری سنتی و پایه ای مایکروسافت به نام ASP.NET می باشد. چهارچوب MVC یک چهارچوب کاملا انعطلاف پذیر و قابلیت تست بالا می باشد که شما می توانید از آن در همه پروژه های خود بهره ببرید.

الگوی طراحی MVC به قرار زیر است:

الگوی طراحی MVC

MVC یک الگوی طراحی استاندارد است که بسیاری از توسعه دهندگان وب با آن آشنایی دارند. برخی از آنها به صورت کامل از این فناوری استفاده کرده اند و برخی دیگر نیز به صورت جزئی مانند کسانی که Web Form ها را ایجاد می کنند از آن بهره می برند. و حتی برخی دیگر نیز هستند که به صورت ترکیبی از این دو فناوری استفاده می کنند.

اجزای چهارچوب MVC عبارتند از:

  • Models یا همان داده ها:

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

  • Views یا همان نما :

نماها بخش هایی از برنامه هستند که وظیفه نمایش رابط کاربری را بر عهده دارند.

  • Controllers یا همان کنترل کننده ها:

کنترل کننده ها بخش هایی هستند که وظیفه مدیریت تعامل با کاربر را برعهده دارند. با مدل ها کار می کنند و در نهایت یک نمایی را برای نمایش در رابط کاربری انتخاب می کنند تا برای کاربر به نمایش گذاشته شود.

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

حمایت برای توسعه تست پذیری

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

زمان تولید یک برنامه MVC

شما باید این نکته را مد نظر داشته باشید که چه وقت باید از معماری MVC استفاده کنید و چه وقت باید از WebForm ها استفاده کنید. برای اینکه بتوانید تشخیص دهید که برای پروژه خود باید از کدام یک از این چهارچوب ها استفاده کنید می بایست معایب و مزایای هر کدام از این ها را به صورت کامل شناسایی نمایید.

مزایای برنامه های وب با چهارچوب MVC

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

مزایای برنامه هایی که براساس وب فرم کار می کنند

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

امکانات چهار چوب MVC

  • جدا سازی وظایف برنامه ، تست و بخش های مرتبط با توسعه آن. تمامی قرار دادهای مرتبط با هسته چهارچوب MVC همگی بر پایه رابط هستند و شما با استفاده از اشیاء ای می توانید به این ها دسترسی داشته و رفتار دیگر اشیاء پروژه خود را زیر نظر داشته باشید. همچنین با استفاده از قابلیت تست واحد شما می توانید بدون اینکه تمامی برنامه خود را اجرا کنید به رفع ایراد از آن برنامه خاص بپردازید. و این قابلیت باعث می شود تا شما بتوانید تست گیری های خود را با سرعت بیشتری انجام دهید.
  • چهارچوب افزونه پذیر و قابل توسعه. بخش های مختلف اجزای این چهارچوب به گونه ای طراحی شده اند که می توان به آسانی آنها را جایگزین و یا شخصی سازی کرد. شما می توانید افزونه هایی را برای تعیین موتور نمایش ، سیاست های مسیریابی URL ها و دیگر بخش ها اضافه نمایید.

مزیت ساخت سایت با استفاده از چهارچوب MVC

این چهارچوب این امکان را به شماخواهد داد که بتوانید از قابلیت های HTML برای کنترل نماهای خود استفاده کنید. نماهای شما مسئول ذخیره سازی داده های آماده شده برای کاربر هستند که خود همین باعث می شود فایل HTML خروجی شما بسیار حجیم شود. و اگر کاربران شما از یک اینترنت کم سرعت استفاده می کنند همین امر باعث میشود که سرعت لود صفحات سایت شما بسیار طولانی شود. اما این معماری کاری کرده است که شما بتوانید کدهای خود را به گونه ای بنویسید که سمت مرورگر کاربران اجرا گردد و حجم کاری از روی سرور کاسته شود. همچنین شرکت مایکروسافت سعی کرده است تا بتواند در نسخه های مختلفی که ارائه می کند بهترین و بهینه ترین حالات ممکن را ایجاد کند.

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

به خاطر این جداسازی در مفاهیم موجود در معماری MVC شما می توانید هم سرعت تولید برنامه های خود را افزایش دهید و هم اینکه از برنامه نویسی موازی برای این کار استفاده کنید. و این قابلیت باعث می شود که بیش از یک برنامه نویس بتواند بر روی یک پروژه مشغول به فعالیت شود. یعنی اگر کسی بر روی بخش نما کار می کند برنامه نویس دیگری می تواند هم زمان بر روی بخش کنترلر ها کار کند و همچنین برنامه نویس دیگری نیز بر روی بخش داده ها کار کند و این یعنی برنامه این قابلیت را به شما داده است که بتوانید با این روش سرعت کار خود را سه برابر کنید.

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

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

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

این معماری باعث می شود تا شما بتوانید میزان موثر بودن وب سایت تولیدی توسط این چهارچوب را تضمین کنید. و این یک اصل مهم در تجارت الکترونیکی رو به رشد امروزی می باشد. زیرا همه به دنبال این هستند که بتوانند چنین کاری را نمایند.

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

دستور العمل های Razor

 برای اینکه شما بتوانید حجم کارهای انجام شده در سمت سرور را کاهش دهید این معماری می گوید بهتر است تا شما وظیفه آماده سازی نماها را برعهده مرورگرهای کاربران قرار دهید. به همین دلیل یک سری از بخش های سایت که بایستی حتما در سمت سرور اجرا گردند می بایست از این قائده جدا شوند. برای اینکه شما بتوانید این تمایز را در هنگام اجرای برنامه ها ایجاد کنید از یک دستورالعمل خاص در این زمینه استفاده می شود که به آن قائده Razor گفته میشود. شما در این حالت می توانید در صفحات نمای خود علاوه بر اینکه از کدهای HTML و CSS استفاده می کنید همزمان بتوانید از کدهای C#  یا VB نیز استفاده کنید. در این صورت یک جدا سازی بین این نوع از کدها صورت خواهد گرفت و شما میتوانید معین کنید که کدام یک از این بخش ها می بایستی درسمت سرور و کدام یک از آنها می بایستی در سمت مرورگر کاربران اجرا شوند. برای تعیین این نوع قابلیت در فایل های نما کافیست از کاراکترهای ()@ و {} @ استفاده کنید.

برای دسترسی به مقالات بیشتر می توانید به بخش مقالات لیو سایت ساز مراجعه نمایید.