اهمیت Controller در معماری MVC

یکشنبه 2 اردیبهشت 1397

وظیفه controller تست و بررسی سورس کدها و آزمون پذیری است. controller در واقع رابط بخش view و model می باشد و سادگی و تست پذیری را افزایش می دهد.

 اهمیت Controller در معماری MVC

معماریMvc  به سه بخش تقسیم می شود که بخش سوم آن با عنوان controller بوده و در واقع یک کنترل گر است. قصد داریم بخش کنترلر را به دقت مورد بررسی قرار دهیم و وظایف و نحوه کارکرد آن را توضیح دهیم.

Controller چیست؟

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

نکات طلایی در مورد controller

یک controller در ابتدا می بایست درخواست های url وارده را بررسی نماید، این بررسی باید بر اساس چهارچوب دقیقی صورت پذیرد، در واقع هدف اصلی مدیریت صحیح url است، سیستم های مسیردهی در معماری Mvc که بهmvc routing مشهور هستند در ابتدا باید در خواست را به کنترلر ارسال نمایند. این ارسال در صورت خطا باید خطا یابی شود. حال باید متد اجراییaction method متناسب اجرا شود. این متد باید بر اساس مقادیر url تعیین گردد. تنظیمات موجود در بخش Routes پروژه دیده می شود. در بخش کنترلر یک سری کلاس ها وجود دارد که به کلاس کنترلر مشهور است. متدهای عمومی که به public methods نامیده می شوند زمانی که وارد کلاس کنترلر می شود متدهای اجرایی یا action method خطاب خواهند شد.

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

مثالی از بخش controller

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

وظیفه اصلی controller

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

همیشه یک کنترلر می تواند تاثیر مستقیمی در طراحی یک وب سایت حرفه ای بگذارد به طوری که این بخش از ستون معماری سه لایه محسوب می شود. کنترل گر رویداد وارده را از طریق callback کنترل می کند و رویداد با یک عمل مناسب کاربری قابل فهم خواهد شد. کنترلرها مدل عملکرد کاربری را اعلام نموده و در نهایت هر تغییر ضروری را به درستی اعلام می نمایند.

اهمیت کنترلر در mvc

همانطور که تا به این جای کار مشخص شد کنترلر ها به نوعی رابط بین دو بخش View و model هستند. کدهای تصمیم گیری می توانند بر طبق سیاستی خاص در بخش های مختلفی قرار بگیرند. اما بهترین محل برای این کدها فراهم ساختن یک dropdownlist است. کنترلرها می بایست در طول زمان توسعه یک نرم افزار به طور ثابت کم حجم و سبک باقی بمانند. به طور کلی استفاده از معماری Mvc سبب می شود که برنامه به حالت تست پذیر ادامه دار شود و این موضوع ارتباط مستقیمی با واحد controller دارد. نوشتن آزمون در این بخش صورت می پذیرد. مبرهن است که وطیفه این بخش بسیار زیاد است. توسعه کنترلرها از اهمیت ویژه ای برخودار هستند و این موضوع به نوعی سبب می شود نگهداری آن ها کمی دقیق تر صورت پذیرد.

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

آموزش asp.net mvc

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید