PracticU

יצירת Pass-Through Filter

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › יצירת Pass-Through Filter
יצירת Pass-Through Filter
ההרצאה בונה Filter מסוג Pass-Through שמודד כמה זמן לוקח לכל Action להתבצע ומתריע כשהוא איטי.
איך זה עובד
1. מיקום וירושה: יוצרים בתיקיית Middleware מחלקה PerformanceFilter שיורשת מ-ActionFilterAttribute.
2. שתי פונקציות: עושים override ל-OnActionExecuting, שרצה לפני ה-Action, ול-OnActionExecuted, שרצה אחריו.
3. מדידת הזמן: ב-Executing שומרים DateTime.Now בשדה startTime. ב-Executed לוקחים endTime, מחשבים TimeSpan כ-endTime - startTime ומציגים בקונסול את זמן ה-Action.
4. התראה: אם TotalSeconds הוא 1 ומעלה, מדפיסים הודעה שה-Action לקח יותר משנייה, עם המתודה (Request.Method) והנתיב (Request.Path).
5. צבעים: ההודעה הרגילה בירוק (ForegroundColor), ובעיית ביצועים ב-Magenta. בסוף מחזירים עם Console.ResetColor(), כדי לא להשפיע על הדפסות של מערכות אחרות.
6. רישום: פילטר רושמים כ-attribute, ולכן הוא ספציפי. אם מניחים אותו על Action אחד, הוא ירוץ רק עליו. מעל ה-Controller הוא ירוץ על כל ה-Actions שלו ולא על Controllers אחרים.
7. בדיקה: מניחים אותו קודם על GetAllBooks בלבד, וב-Postman רואים את הזמן (כעשירית שנייה) רק שם, ולא ב-GetOneBook.
8. הדמיית איטיות: לולאת for ריקה עם מונה long מייצרת השהיה, ואז מתקבלת הודעה ב-Magenta לאחר כשתי שניות. כשהפילטר על ה-Controller, גם GetOneBook מפעיל אותו.
עכשיו אפשר לבנות Filter שמודד ביצועים ולבחור אם לרשום אותו על Action או על Controller שלם.
השיעור הבא בקורס: יצירת Short-Circuit Filter
מילון מושגים:
ירושה: מנגנון בתכנות מונחה עצמים שבו מחלקה יורשת תכונות ופעולות ממחלקת אב, ויכולה להרחיב אותן.
Middleware: שכבת תוכנה שמתווכת בין רכיבים ומטפלת בבקשות בדרכן, למשל לאימות, רישום לוג או עיבוד נתונים.
מתודה: פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.
נתיב: מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
מאפיין: תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
קונטרולר: רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).
Postman: כלי לבדיקת API: שליחת בקשות HTTP לשרת ובחינת התגובות, נפוץ בפיתוח ובבדיקות.
השהיה: משך הזמן שלוקח למידע לעבור ממקור ליעד ברשת. ככל שההשהיה נמוכה יותר, התגובה מהירה יותר.

פרקי ההרצאה: יצירת Pass-Through Filter

  1. 00:00

    בניית Performance Filter

  2. 00:39

    דריסת OnActionExecuting ו-Executed

  3. 01:37

    מדידת הזמן לפני האקשן

  4. 02:14

    חישוב זמן הביצוע

תמלול ההרצאה: יצירת Pass-Through Filter

הטקסט המלא של הדקות הראשונות בהרצאה «יצירת Pass-Through Filter» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    כאשר היינו בונים מידלווייר, בואו נבנה פילטרס. שוב פעם אנחנו הולכים לתיקיית מידלווייר כי פילטר הוא סוג של מידלווייר אז אני מעדיף לשים אותו שמה שלא יהיו לנו יותר מדי תיקיות, אני לא אפתח עוד תיקייה במערכת שנקרא לה פילטר, מיותר.

  2. 00:17

    ואנחנו רוצים ללכת לקלאס, בואו נבנה פילטר עבור פירפורמנס, אני אקרא לו פירפורמנס פילטר. התפקיד שלו זה לבדוק יעילות. איך בונים פילטר אז אנחנו בשביל לבנות פילטר צריכים לרשת מחלקה שנקראת Action Filter Attribute עכשיו מה שאנחנו צריכים לעשות זה לבצע Override על שתי פונקציות פונקציה אחת נקראת

  3. 00:50

    On Action Executing והפונקציה הזאת מתבצעת לפני זה נקרא Before לפני כשאנחנו נכנסים לאקשן, הפונקציה הזאת תתבצע. פונקציה נוספת, בואו נבצע Override, והיא נקראת OnActionExecuted.

  4. 01:10

    וזאת פונקציה שמתבצעת אחרי שהאקשן כבר התבצע, נקרא לה After Action. אם אנחנו רוצים לבצע משהו לפני, אנחנו עושים אותו פה, אם אנחנו רוצים לבצע משהו אחרי אותו אקשן, אנחנו עושים אותו כאן.

  5. 01:27

    מה אנחנו רוצים לבצע בפילטר שלנו? אנחנו רוצים לבדוק זמנים בואו נלגש לפה לאזור הראשי ונבנה לעצמנו date time ונקרא לו start time זה הזמן הראשוני לפני שבעצם המערכת נכנסת לתוך אותו action וכל מה שאנחנו רוצים לעשות before זה לגשת לאותו start time ולהכניס לתוכו date time now אנחנו בודקים

  6. 01:52

    כמה זמן אותו action יתבצע אז אני רוצה קודם כל לקחת את הזמן הנוכחי לפני שאני נכנס אליו. אחרי שאני נכנס אליו אני רוצה לקבל את הזמן הסופי, אני לא צריך את המשתנה הזה כמשתנה גלובלי, אנחנו יכולים פה להגדיר day time end time ולהכניס לתוכו day time נקודה now והנה יש לנו את הזמן הסופי.

  7. 02:16

    כעת אנחנו רוצים לבדוק כמה זמן עבר בין ההתחלה לסיום, אז אנחנו יוצרים משתנה שנקרא time span מרווח זמן והוא ישווה ל-end time פחות סטארט טיים. עכשיו אנחנו יכולים בוא נגיד רק להציג אותו אקשן טיים ולהציג לדוגמה את

לקורס המלא: קורס דוט נט NET Core. אונליין

ההרצאה הקודמת: יצירת Short-Circuit Middleware

ההרצאה הבאה: יצירת Short-Circuit Filter

הרצאות קשורות מקורסים אחרים

  • map & filter
  • Angular 4 - Filter and Pipe
  • התקפת Pass-The-Ticket - חלק 1
  • פקודת Get-WinEvent - חלק 4 - Filter

קורסים נוספים במסלול

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio