• بررسی تخصصی ASP.NET MVC Controller – قسمت اول
بررسی تخصصی ASP.NET MVC Controller – قسمت اول
1395/03/07 - 11:25:50 // MVC 5 & 6 // 0 نظر // 3087 بازدید

این مقاله شروع بررسی تخصصی قابلیتهای Controller در ASP.NET MVC Projects میباشد . برای شروع به بررسی مراحلی خواهیم پرداخت که سبب اجرای یک Action Method از ابتدا تا انتها خواهند گردید و در کنار آن به بررسی راههای مختلف کنترل و در دست گرفتن این مراحل خواهیم پرداخت.

بسمه تعالی

بررسی تخصصی ASP.NET MVC Controller قسمت اول

این مقاله شروع بررسی تخصصی قابلیتهای Controller در ASP.NET MVC Projects میباشد . برای شروع به بررسی مراحلی خواهیم پرداخت که سبب اجرای یک Action Method از ابتدا تا انتها خواهند گردید و در کنار آن به بررسی راههای مختلف کنترل و در دست گرفتن این مراحل خواهیم پرداخت.

تصویر زیر سیکل انجام یک Request را در یک ASP.NET MVC Project نشان میدهد .

در این مقاله سلسله مباحث ، تاکید ما بر روی Controller Factory و Action Invoker خواهد بود . از نام این دو Component ،می توان کارکرد آنها را تقریبا پیش بینی نمود . در عمل وظیفه Controller Factory ایجاد یک Instant جدید از Controller در سرویس و Action Invoker وظیفه یافتن و اجرای Action Method مرتبط را در سطح Controller خواهد داشت.

MVC FrameWork هر دوی این Component ها را به صورت Default درون خود دارد که آنها را مورد بررسی قرار خواهیم داد و علاوه بر آن به بررسی چگونگی پیاده سازی Custom Controller Factory و Custom Action Invoker خواهیم پرداخت. یعنی در عمل خواهیم توانست کامپوننتهای Custom شده خود را با انواع Default جایگزین کنیم.

خوب حالا اجازه بدهید ببینیم اصلن اگر از یک Custom Controller Factory توانستیم استفاده کنیم ، چه مزیت و برتری بر کسانی که از نوع Default استفاده میکنند خواهیم داشت .

فرض کنید یکسری تغییرات و کنترلها بر روی Action Method ها نیاز داریم که باید در هر Action Method یا کلن در بدنه همه Controller ها اعمال شود . به عنوان مثال عملیات Log کردن تراکنشها . خوب یکی از راهها میتواند ایجاد یک Filter باشد ، ولی در مواردی حتی مایل نیستید در قسمت Header هر Action Method یک Filter استفاده کنید و نیاز دارید کاری کنید که خود طبیعت هر Controller یکسری اعمال را برای شما انجام دهد . اینجاست که لازم است یک Custom Controller Factory داشته باشید و از طریق آن عملیات Log را انجام دهید . یکی دیگر از مثالهای خوب در بیان کاربرد این مبحث ایجاد DLL و جلوگیری از نمایش یکسری عملیاتهای Controller ها در تیمهای برنامه نویسی میباشد . وقتی هسته Controller های شما در حال استفاده از یک DLL باشند که بدنه آن برای کسانی که با Source Code سر و کار دارند ، مشخص نیست ، این میتواند سبب داشتن دست برتر به عنوان مدیر یا صاحب سیستم برای شما گردد. (یکم خبیثانه است ، ولی چاره ای نبود . باید مثال میزدم!!).

یکی دیگر از مزایای Custom سازی این دو کامپوننت ، امکان سبکتر کردن آنها و حذف یا Optimize کردن بعضی تحرکات آنها میباشد .

برای درک بهتر مباحث این چند مقاله ، دانش پایه در OOP و Interface بسیار میتواند مفید و کارساز باشد .

برای شروع به سراغ یک Custom Controller Factory خواهیم رفت . برای ایجاد چنین آیتمی باید از یک Interface به نام IControllerFactory ارث بری و آنرا پیاده سازی نمود. این Interface دارای 3 متد میباشد که در صورت پیاده سازی توسط یک کلاس باید دوباره سازی گردد.

این سه متد به شرح زیر هستند .

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

علی کلاهدوزان
معرفی نویسنده : علی کلاهدوزان

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

امتیاز به مطلب
           
نظرات کاربران
ارسال نظر