ASP.NET Core 1 – قسمت پنجم
1395/01/26 - 14:20:41 // MVC 5 & 6 // 0 نظر // 3331 بازدید
از این قسمت به بعد ، عملن در حال ایجاد و بررسی تنظیمات Middle Wareخواهیم بود. این بدین معناست که هر Http Request قرار است چگونه مدیریت شود و در پایان چند قسمت مرتبط باید بتوانیم از ASP.NET MVC 6 در سطح پروژه استفاده نماییم.
بسمه تعالی
ASP.NET Core 1 – قسمت پنجم
از این قسمت به بعد ، عملن در حال ایجاد و بررسی تنظیمات Middle Wareخواهیم بود. این بدین معناست که هر Http Request قرار است چگونه مدیریت شود و در پایان چند قسمت مرتبط باید بتوانیم از ASP.NET MVC 6 در سطح پروژه استفاده نماییم. شایان ذکر است که تا نقطه رسیدن به وضعیت واقعی Model View Controller ، باید اندکی صبور باشید چرا که از سرو و روی این بخشها ابهام و گنگ بودن میریزد و مطمئن باشید من شما را به خوبی درک میکنم ، ولی مثلن در 3 مقاله جلوتر خواهید دید چگونه آنچه تا به اینجا گفته شده یکدفعه کاربرد پیدا خواهد کرد و میتوان از آن بهره برد .
اجازه بدید ببنیم اصلن Middle Ware چیست و چرا به آن نیاز داریم .
هنگامی که یک Http Request به سرور میرسید ؛ مثلن برای مثال یک Post Request مانند وضعیت
Post/Reviews
سرور باید به صورت نرم افزاری به آن پاسخ دهد . وظیفه این کار در ASP.NET بر عهده Middle Ware خواهد بود . هر تکه از Middle ware در ASP.NET یک object خواهد بود و هر بخش یک نقش کامل مشخص ، اختصاصی و محدود به یک وظیفه خاص خواهد داشت . پس اینطور که پیداست Middle Ware باید حاوی تعداد زیادی از این بخشهای کوچک باشد تا بتواند به درستی عمل کند .
خوب فرض کنید من میخام هر گونه Request را در Application خودم به قول معروف Log کنم . منظور از Log کردن شکار و کنترل و تصمیم گیری و شاید دادن جواب لازم به هر Request خواهد بود.
خوب پس اولین تکه ای که در Middle Ware نیاز دارم Logger خواهد بود .
فرض میکنیم این Logger هر Request شامل Query String ، هر گونه Coockie ، هر گونه Access Token و ... را میتواند شکار کند . در ضمن Logger میتواند اطلاعات متعلق به Request را Record و یا تغییر دهد .حتی توانایی Reject کردن Request را برای Logger تصور خواهیم نمود . خوب در مرحله بعدی Logger اطلاعات دریافتی را به کامپوننتی دیگر که آن هم از اجزای Middle Ware میباشد خواهد فرستاد. خوب فرض میکنیم قسمت بعدی یک Authorizer باشد که می تواند یک کوکی یا یک Token در هدر URL باشد . خوب اگر درخواست از نظر Authorizer یک درخواست Valid باشد ، اعمال خواهد شد و اکر نه رد شده و مثلن پیام خطا یا ... نمایش داده خواهد شد یا مثلن کاربر به صفحه لاگین پرتاب خواهد شد . اگر درخواست Valid باشد ، به بخش دیگری از Middle Ware مثلن مانند Router ارسال خواهد شد . بر اساس تشخیص Router است که یک متد خاص صدا زده شده و مثلن تغییراتی در View داده خواهد شد . پاسخ Router میتواند یک Json یا XML یا .. باشد و اگر برای درخواست یک پاسخ مطابق با آن وجود نداشته باشد ، اصولن پیام خطای 404 خواهیم داشت . اگر برای درخواست محتوای HTML مناسب وجود داشته باشد ، Router این محتوا را صدا خواهد زد . باید به این نکته توجه داشت که اجزای Router میتوانند باز به قبلی پیام یا محتوا برگردانند . مثلن با بازگشت پاسخ از Router و Authorizer به Logger ، این Logger میتواند زمان ارسال و دریافت پاسخ را نگهداری و به عنوان مدت زمان پاسخ آنرا نگهداری کند تا بتوان تایین نمود هر Request چقدر زمان برده است . این کل چیزی بود که به عنوان منطق Middle Ware در ASP.NET میشناسیم .
خوب برای پیاده سازی این اجزا و داشتن یک کانسپت تحت عنوان Middle Ware ، نیاز است تعدادی از اشیا را پیاده سازی کرده و آنها را در کنار یکدیگر قرار داد . ما به Middle Ware برای مدیریت خطاها ، مدیریت محتوای استاتیک و حتی به آن برای ارسال Request ها به MVC Frame Work نیاز خواهیم داشت .ما در این سلسله مقالات قصد نداریم وارد ریز و جزئیات Middle Ware شویم ولی برای صرفا پیاده سازی آن به معرفی و شناخت آن نیاز داشتیم که به اندازه کافی در مورد آن صحبت شد . در بخش بعدی به بررسی Middle Ware در همان پروژه قبلی پرداخته و با ایجاد چندین تغییر اساسی وضعیت کارکرد Middle Ware و IApplicationBuilder خواهیم پرداخت .
معرفی نویسنده : علی کلاهدوزان
سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .