
PerformanceFilter שיורשת מ-ActionFilterAttribute.OnActionExecuting, שרצה לפני ה-Action, ול-OnActionExecuted, שרצה אחריו.DateTime.Now בשדה startTime. ב-Executed לוקחים endTime, מחשבים TimeSpan כ-endTime - startTime ומציגים בקונסול את זמן ה-Action.TotalSeconds הוא 1 ומעלה, מדפיסים הודעה שה-Action לקח יותר משנייה, עם המתודה (Request.Method) והנתיב (Request.Path).ForegroundColor), ובעיית ביצועים ב-Magenta. בסוף מחזירים עם Console.ResetColor(), כדי לא להשפיע על הדפסות של מערכות אחרות.GetAllBooks בלבד, וב-Postman רואים את הזמן (כעשירית שנייה) רק שם, ולא ב-GetOneBook.for ריקה עם מונה long מייצרת השהיה, ואז מתקבלת הודעה ב-Magenta לאחר כשתי שניות. כשהפילטר על ה-Controller, גם GetOneBook מפעיל אותו.הטקסט המלא של הדקות הראשונות בהרצאה «יצירת Pass-Through Filter» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כאשר היינו בונים מידלווייר, בואו נבנה פילטרס. שוב פעם אנחנו הולכים לתיקיית מידלווייר כי פילטר הוא סוג של מידלווייר אז אני מעדיף לשים אותו שמה שלא יהיו לנו יותר מדי תיקיות, אני לא אפתח עוד תיקייה במערכת שנקרא לה פילטר, מיותר.
ואנחנו רוצים ללכת לקלאס, בואו נבנה פילטר עבור פירפורמנס, אני אקרא לו פירפורמנס פילטר. התפקיד שלו זה לבדוק יעילות. איך בונים פילטר אז אנחנו בשביל לבנות פילטר צריכים לרשת מחלקה שנקראת Action Filter Attribute עכשיו מה שאנחנו צריכים לעשות זה לבצע Override על שתי פונקציות פונקציה אחת נקראת
On Action Executing והפונקציה הזאת מתבצעת לפני זה נקרא Before לפני כשאנחנו נכנסים לאקשן, הפונקציה הזאת תתבצע. פונקציה נוספת, בואו נבצע Override, והיא נקראת OnActionExecuted.
וזאת פונקציה שמתבצעת אחרי שהאקשן כבר התבצע, נקרא לה After Action. אם אנחנו רוצים לבצע משהו לפני, אנחנו עושים אותו פה, אם אנחנו רוצים לבצע משהו אחרי אותו אקשן, אנחנו עושים אותו כאן.
מה אנחנו רוצים לבצע בפילטר שלנו? אנחנו רוצים לבדוק זמנים בואו נלגש לפה לאזור הראשי ונבנה לעצמנו date time ונקרא לו start time זה הזמן הראשוני לפני שבעצם המערכת נכנסת לתוך אותו action וכל מה שאנחנו רוצים לעשות before זה לגשת לאותו start time ולהכניס לתוכו date time now אנחנו בודקים
כמה זמן אותו action יתבצע אז אני רוצה קודם כל לקחת את הזמן הנוכחי לפני שאני נכנס אליו. אחרי שאני נכנס אליו אני רוצה לקבל את הזמן הסופי, אני לא צריך את המשתנה הזה כמשתנה גלובלי, אנחנו יכולים פה להגדיר day time end time ולהכניס לתוכו day time נקודה now והנה יש לנו את הזמן הסופי.
כעת אנחנו רוצים לבדוק כמה זמן עבר בין ההתחלה לסיום, אז אנחנו יוצרים משתנה שנקרא time span מרווח זמן והוא ישווה ל-end time פחות סטארט טיים. עכשיו אנחנו יכולים בוא נגיד רק להציג אותו אקשן טיים ולהציג לדוגמה את