آشنایی با معماری MVC

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

معماری MVC در دهه 70 میلادی معرفی شد ولی در آن وقـت پیاده سازی برنامه های Stand Alone با بهره گیری از این معماری چندان مورد استقبال برنامه نویسان قرار نگرفت. ولی با ظهور اینترنت و برنامه های مبتنی بر وب این معماری شانس مجـدد ای یافت. ASP.NET MVC فریم ورک مبتنی بر معماری MVC مایکروسافت اسـت که در این سری مقالات به معرفی و بازبینی آن خواهیم پرداخت. از عـلت ها محبوبیت این معماری نظام بخشیدن به پروژه های طراحی سایت میباشد. اغلب ً به دلیـل همکاری چندین تکنولوژی مختلـف با هم در برنامه های مبتنی بر وب ساختـار پروژه های بزرگ پیچیده میشوند و انجام تغییرات و ضمناً از میـان بردن ارور های پروژه مساله و زمانبر میشوند که معماری MVC با جداسازی لایه های مختلـف برنامه نویسی تا حد بیشتری این مساله را از میـان بردن کرده می باشد. از دیگر خصوصیت ها ی این فریم ورک میتوان به مدیریـت کامل بر روی HTML نهایی، حمایت از فریم ورکهای مختلـف برای Unit Testing ، مدیریـت بر روی آدرسهای URL و تعامل راحت تر با فریم ورکهای javascript اشاره کرد.

 ویژگیها یک نرم افزار خوب چیست ؟

نام بردن همه ویژگیها یک نرم افزار خوب در این مقال نمی گنجد ولی تعداد محدود و مهمی از آنان عبارتند از:

  • قابل حمل بودن
  • قابل بهره گیری دوباره بودن
  • قابل تغییر بودن
  • بهینه بودن از لحاط حافظه و وقـت (زمان مهمتر از حافظه)

مسئله ؟
بهتر هست وجود مسئله را با یک مثال نشان دهم فرض نمایید نرم افزاری برای شرکتی نوشتید که یک قسمـت آن مقدار سود وزیان کمپانـی را در سـال های مختلـف بر حسب ارقام بیان می کند . حال مالـک برنامه پـس از مدتی ازشما می خواهد برنامه را طوری تغییر دهید که این اطلاعات را به گونه های دیگری برای مثال نمودار های مختلـف ( میله ای ، دایره ای و …) در اختیار داشته باشد و یا حتی بخواهد آنان را به فرمت ویژه ای و در فایل های ویژه ای ذخیره نماید . در این مواقع چطور مساله را حل مینمایید ؟ همان گونه که گفته شد یکـی از ویژگیها نرم افزار خوب قابل تغییر بودن آن میباشد. فرض نمایید که برنامه را به این شکل طراحی کردید:

معماری MVC

معماری MVC

 

همان گونه که در شکل نیز نشان داده شده هست همه اعمال اعم از اخذ داده ها که مهمترین قسمـت است و ضمناً پردازش آن ها همگی در یک ساختـار طراحی و پیاده سازی شده اند، و دقیقا مساله همینجا نمایان می گـردد . رابطه مستقیم با مأخذ داده بر قرار کردن جدا از اینکه مـوارد امنیتی دارد که بحث دربـاره آن بیرون از این مقال هست ، باعث می شود که دست برنامه نویس را برای تغییرات آتی دربرنامه ببندد. چون داده درون خود ساختـار از مأخذ داده و به شیوه مستقیم خوانده می گـردد پس دسترسی به داده های خوانده شده وجود ندارد . یا حداقل متحمل سربار بیشتری می باشد.

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

شاخصه های بیشتری برای طراحی این الگوها در نظـر گرفته می گـردد که چند مورد از آن ها را تیتروار بیان می کنیم :

مواظبت کردن از سیستم :

سیستم ها می بایست طوری طراحی شوند تا تیـم گسترش دهنده یا تیم های دیگر بتوانند در دراز مدت ارور ها و باگ های آنرا براحتی در کمترین وقـت ممکن از میـان بردن نمود. برای مطالعه سایـر مطلب به ادامه مطلب بروید

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

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

MVC چیست ؟

MvC مخفف سه کلمه Model View Controller هست . در واقع MVC بر روی معماری های چند لایه ای جهت جداسازی بخـش های مختلـف برنامه و بطور دقیق تر جدا کردن قسمـت ها منطقی برنامه اعم از دیتا ، permission ها ، بررسی صحت داده ها و …. از لایه Presentation layer یا در واقع همـان لایه ای که مستقیما با کاربر نهایی (End user) در رابطه هست ،قرار میگیرد. بـعد بر حسب توضیحات فوق می توانیم هر یک از قسمـت های معماری MVC یعنی Model و View و controller را به شکل پایین تعریف کنیم.

MVC در واقع يك شیوه براي معماري نرم افزار هست كه نرم افزار را به سه بخـش Model ، View و Controller تقسيم مي كند و هر كدام از اين سه بخـش وظيفه خاصي را براي تهیه و اجرا نرم افزار ايفا مي كنند. تركيب اين شیوه با زبان برنامه نويسي ASP.NET باعث به وجود آمدن مفهومي به نام ASP.NET MVC مي گـردد كه پروژه هاي برنامه نويسي در زبان ASP.NET بر حسب اين شیوه طراحي و پياده سازي مي شوند. در مساوی معنی ASP.NET MVC مفهومي به نام ASP.NET WEB FORMS قرار مي گيرد.

ویژگی ها ی بهره گیری از ASP.NET MVC

چهارچوب کاری ای اس پی دات نت ام وی سی مزاياي ذيل را در بر مي گيرد:

با تقسيم برنامه به سه قسمـت Model, View و Controller از پيچيدگي آن کم و بر سادگي آن مي افزايد.

در اين شیوه نيازي به بهره گیری از ساختـار هاي server-base نيست. كه اين امر چهارچوب MVC را براي گسترش دهندگاني كه مي خواهند بر روي بخـش هاي مختلـف برنامه كنترل كامل داشته باشند به يك چهارچوب ايده آل تبديل مي كند.

شرايط را براي آزمایش برنامه راحـت تر مي كند.

با دقت به تقسيم برنامه به بخـش هاي كوچكتر براي كارهاي گروهي بسيار مناسب می باشد. در این معماری در واقع ما حاوی ترجمه ای از بخـش های با ارزش معماری به شکل پایین هستیم:

1. Model 
در واقع مرتبه اصلی معماری MVC بر عهده این قسمـت می باشد. این قسمـت می تواند با داده ها در رابطه باشد .الزاماً منظور از داده قطعا رابطه با پایگاه های داده همچون MSSQL و Access و … نمی بـاشد ، حتی مأخذ داده ها در قسمـت Model خواهـد توانست یک آرایه از اعداد و یا هر چیز دیگری باشد . ضمناً Model وظیفه بررسی داده ها جهت صحت درستی داده ها را هم بر عهده دارد (در این زمینه همکاری زیادتری با قسمـت Controller دارد) و ضمناً وظیفه های دیگری که در مثال ها ی عملی که در آینده خواهم زد زیـادتر آشنا خواهید شد.

2. View 
این قسمـت که در واقع همـان بخش Presentation Layer در معماری 3 لایه اسـت وظیفه بر قراری رابطه با کاربر نهایی و گرفتن داده از کاربر و نمایش داده های اماده با کاربراز طریق برقراری رابطه با دو قسمـت دیگر یعنی Model و controller می باشد. در واقع نکته مهمی که در قسمـت View می بایست مد نظـر داشت این هست که این لایه مسئول مدیریـت صحت داده های وارد شده از طریق کاربر و ضمناً مسئول صحت داده های نشان داده شده به کاربر نمی بـاشد . در واقع این قسمـت با داده های خام کار می کند . یک مثال ساده بسیار از برنامه نویسان وقتی که در ساختـار Login برنامه ،کاربر کلمه گذر خود را وارد می کند ، در همـان فرم Login اقدام به بررسی پسورد مبنی بر صحت آن و … می کنند . که این عمل در معماری MVC قابل قبول نمی بـاشد . در واقع برای حل مسئله فوق در معماری MVC در ساختـار Login وقتی که کاربر کلمه گذر را وارد نمـود و دکمه Login یا داخل را زد ، کلمه گذر داده شده بدون هیچ گونه اعمالی اعم از Encrypt کردن و … به قسمـت های دیگر فرستاده می شود و تنها یک سرانجام ساده مبنی بر این که کاربر اجازه داخل دارد یا خیر را از قسمـت های دیگر اخذ می کند که بر حسب آن اجازه داخل کاربر به برنامه داده می شود .

3. Controller 
این قسمـت همان گونه که از نام آن معیـن هست یک قسمـت مدیریـت کننده است ، و در واقع واسطی میـان دو قسمـت Model و View میباشد. حال ببینیم روند انجام برنامه در معماری MVC به چه نحوی خواهد بود . در معماری MVC روند کامل برنامه (جزئیات را در ادامه خواهید دید) به این شکل هست که کاربر تقاضای خود را از طریق واسط های برنامه نویسی (مثل Form ها و User Control ها و .. ) از برنامه (از قسمـت View)تقاضـای می کند . قسمـت View در خواست ها را به قسمـت Controller فرستاده و این قسمـت با برقراری رابطه با قسمـت Model در خواست های کاربر را پردازش کرده و پـس از انتهـا پردازش وقتی که خروجی تقاضـای داده شده آماده گردید قسمـت Controller قسمـت View را آگاه می سازد تا خود را بر اسا س تغییرات تازه که اصطلاحاً در معماری MVC به آن حال Model گفته می شود ، به روز سازد . در واقع چیزی که باعث می شود تا قسمـت Controller به قسمـت View اطلاع دهد که می بایست حالت تازه model را اخذ نماید و خود را Update نماید این هست که قسمـت View می بایست قبلا خودش را در قسمـت Model اصطلاحا Register کرده باشد که اما عمل Register کردن بوسیـله قسمـت Controller انجام میگیرد . روش register کردن قسمـت View به معماری آن محیط و ضمناً زبانی که بوسیـله آن برنامه را گسترش میدهید و ضمناً امکانات آن زبان بستگی دارد.

حال با تهیه یک پروژه آشنای Hello World با ساختـار Controller و view آشنا میشویم:

برای تهیه پروژه تازه مطابق معمول از منوی File ویژال استودیو ، مورد New و سپس Project را گزینش نمایید و سپس استـایل زیر را گزینش نمایید :

خواهید توانست basic را گزینش نمایید ، ولی basic حاوی یک سری الگوهای آماده ، مثل Membership دات نت فریم ورک ، مراجع Jquery ، کلاسهای CSS از پیش تهیـه شـده است

معماری MVC

معماری MVC

 

همان گونه که می بینید پوشه های مجزایی برای هر دسته از فایلها وجود دارد : مثل Controller , View , Model , … پوشه Script حاوی فایلهای جاوا اسکریپت و Jquery و MicrosoftAjax می باشد. پوشه Conetnt هم مکانی برای مواظبت کردن فایلهای CSS و عکس های می باشد. پوشه App_Data جایی هست که فایل‌هایی با توانایی read/write در آن قرار می‌گیرند

مطابق شکل پایین اولیـن کنترلر خود را به پروژه اضافه نمایید : نام کلاس کنترلر مطابق قرارداد، مختوم به کلمه Controller است

معماری MVC

معماری MVC

 

در صفحه باز شده نام کنترلر را وارد نمایید و روی add کلیک نمایید

 

معماری MVC

معماری MVC

برای اکشن یک View تهیه می نمایید و در آن ، معیـن می نمایید که کاربر چه خروجی را می بایست مشاهده نماید برای این کار روی اکشن راست کلیک نمایید :

 

معماری MVC

معماری MVC

خواهید نگاه کـرد که فایلی به نام Index.cshtml در فولدر View تهیه می گـردد . به ازای هر Controller یک فولدر وجود دارد که در آن View های مربوطه مواظبت کردن می شوند

این فایل را باز نمایید و محتویات پایین را به آن اضافه نمایید :

معماری MVC

معماری MVC

با فشردن دکمه F5 اولیـن صفحه وب خود را که با تکنولوژی MVC ساخته اید ببینید.

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