PracticU

Application object

בלי כתוביותעם כתוביות
PracticU › קורס ASP.NET › Application object
מילון מושגים:
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.
סשן - פרק זמן של פעילות רציפה בין משתמש למערכת, שבו נשמר מידע על מצבו, למשל לאחר התחברות לאתר.
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
דפדפן - תוכנה שמציגה דפי אינטרנט ומריצה את הקוד שבהם, ומאפשרת לגלוש בין אתרים, למשל Chrome או Firefox.
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.

Application object
אובייקט Application שומר מידע בצד השרת, אבל בניגוד ל-Session הוא משותף לכל הלקוחות. מידע שנכנס אליו נגיש לכל מי שגולש לאתר, ובמשך כל זמן ריצת האתר.
הכנסה ושליפה
ה-Application הוא אוסף שמתנהג כמו Session: מכניסים ערך לפי שם ומוציאים אותו לפי השם. בדמו נשמר צבע ירוק תחת השם myColor בלחצן Save, ונטען מהאובייקט בלחצן Load. גם כאן הערך חוזר כ-Object ולכן נדרשת המרה ל-Color. לפני ההמרה בודקים שהערך אינו null, אחרת מתקבלת אותה שגיאה כמו ב-Session.
משותף לכל הלקוחות
כשלקוח אחר נכנס לאתר ולוחץ על Load, הוא רואה את הערך שהלקוח הראשון שמר. גם אחרי שסוגרים את כל הדפדפנים, הערך נשאר. הוא נעלם רק כשהאתר נעצר. בדמו, כשעצרו את שרת הפיתוח ב-Visual Studio, הערך נמחק, ובהפעלה מחדש הוא היה ריק.
אירועי Application ב-Global.asax
- Application_Start מתרחש כשהאתר עולה לאוויר.
- Application_End מתרחש כשהאתר יורד.
- Application_Error מתרחש בשגיאה שלא טופלה במקום אחר.
דוגמה: ספירת גולשים
המרצה מציג מונה של מספר הגולשים באתר. ב-Session_Start מעלים את הערך ב-Application ב-1, וב-Session_End מורידים אותו. כיוון שה-Session_End מתרחש רק אחרי שפג זמן החיים של הסשן (ברירת מחדל 20 דקות), המספר הוא קירוב בלבד, וניתן לקצר את זמן החיים לדקה אחת לדיוק טוב יותר.
שימו לב
Application משותף לכל הלקוחות, ולכן מידע אישי של לקוח לא נכנס לשם. לשם מכניסים נתונים שכולם צריכים, כמו רשימת ערים או מחירון.
בקצרה: Session הוא לכל לקוח, Application הוא לכל האתר.
השיעור הבא בקורס: Cache object

פרקי ההרצאה: Application object

  1. 00:00

    האובייקט Application

  2. 01:35

    Application מול Session

  3. 02:55

    שמירת מידע ב-Application

  4. 04:36

    שגיאת ערך ריק

  5. 06:40

    שימוש במידע בדף נוסף

  6. 09:35

    ההבדל - אובייקט לכל הלקוחות

תמלול ההרצאה: Application object

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

  1. 00:01

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

  2. 00:21

    ID btn save, run את כמובן פרוור ולחצן ראשון ולחצן שני יאפשר לטעון את המידע. בנוסף ניקח לייבל.

  3. 01:09

    מה שאנחנו נעשה בלחצנים, לחצן save יכניס מידע לתוך אובייקט האפליקיישן ולחצן Load יוציא את המידע מתוך האובייקט הזה ויכניס את המידע ללייבל.

  4. 01:32

    אוקיי, איך אני מכניס מידע לתוך האובייקט? אז ראשית, בשביל להגיע לאובייקט הזה, אני פשוט רושם את המילה Application. זהו מאפיין שמאפשר לי להגיע לקולקשן הזה ולהכניס לתוך ערך.

  5. 01:49

    מה זה בדיוק אפליקיישן? אנחנו ראינו שסשן זה מעין אוסף שהוא מוגדר אוטומטית עבור כל לקוח בגלישה הראשונה שלו לאתר שלנו וחי בשרת כל עוד הלקוח נחשב כגולש באתר וזה בעצם 20 דקות כברירת מחדל אחרי הגלישה האחרונה שלו או יותר נכון 20 דקות מהגלישה האחרונה שלו אובייקט הסשן נעלם נמחק ואם הלקוח הזה יגלוש שוב פעם לאתר ייווצר

  6. 02:29

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

  7. 02:55

    בואו נבחר איזשהו פרט אינפורמציה, לדוגמה myColor = color green. לחצן save לוקח פרט אינפורמציה ומכניס אותו לאוסף הזה, במיקום myColor לחצן Load יוציא את המידע וישים אותו בלחצן btn.load.backColor שווה ניגש לאפליקיישן למיקום myColor שהגדרנו כלומר אנחנו ניגשים לפריט לפי ה-Name שלו וכמובן מבצעים פה casting ל-Color מפני שהערך שקיים

  8. 03:51

    לנו הוא מטיפוס Object אנחנו רוצים להכניס אותו לתוך אובייקט מטיפוס Color יש צורך ב-Casting. בואו נריץ את האתר, בלחצן סייב אני מכניס את המידע לאפליקיישן, בלחצן לואוד אני שולף אותו ומשתמש בו.

  9. 04:22

    עד כאן הכל טוב ויפה. מה היה קורה אם הייתי מבצע את הפעילות הזאת בפעם הראשונה לפני הפעילות הראשונה? כלומר, לפני שהייתי אי פעם מכניס ערך לתוך אפליקיישן מייקולור, הייתי ישר משתמש עם אפליקיישן מייקולור.

  10. 04:54

    בואו נסתכל מה היה קורה במצב כזה. נריץ את האתר, ניגש ל-load ושוב פעם אנחנו מקבלים את אותה הודעת שגיאה שקיבלנו כשניסינו להשתמש עם סשן בלי שבאמת יהיה בו ערך.

  11. 05:29

    אוקיי, כמובן בשביל לפתור את הבעיה הזאת אנחנו צריכים לבצע איזושהי בדיקה. האם אכן בפריט הזה שקיים פה יש משהו ששונה מנ"ל? אם הפריט הזה אכן מחזיק ערך ששונה מנהל, אני כמובן יכול לקחת אותו.

  12. 05:58

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

  13. 06:18

    נלחץ על לחצן Load, אנחנו רואים ששום דבר לא מתבצע מפני שה-if מחזיר false ולכן אנחנו לא נכנסים לתוכו. נלחץ על לחצן Save בשביל להכניס מידע לתוך האפליקיישן, לחצן Load יטען את המידע ממנו.

  14. 06:37

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

  15. 06:53

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

  16. 07:34

    בואו ניקח גם את הקוד ב-C-Sharp. להומפייג' במקום הלייבל שלא השתמשנו איתה, נגדיר קישור לדף Second Page ונריץ שוב את ההומפייג'.

  17. 08:39

    דבר ראשון, נכניס מידע לאפליקיישן, נבדוק האם המידע קיים בדף של ההומפייג' ואנחנו רואים שהמידע קיים, נלחץ על הלחצן Go to Second Page ואז ננסה לשלוף את המידע מה-Second Page.

  18. 08:58

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

  19. 09:25

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

  20. 09:41

    אם כך, מה ההבדל ביניהם? ההבדל הוא מאוד פשוט. אובייקט אפליקיישן קיים פעם אחת עבור כל הלקוחות. אובייקט סשן ראינו קיים בנפרד עבור כל לקוח.

  21. 09:58

    לכן,

לקורס המלא: קורס ASP.NET אונליין

ההרצאה הקודמת: Session object - חלק 2

ההרצאה הבאה: Cache object

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

  • מה זה console application
  • Application Context
  • TS Remote Application
  • המחלקה Object

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

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