PracticU

הדגמה של Singleton - חלק 2

בלי כתוביותעם כתוביות
PracticU › קורס Design Patterns › הדגמה של Singleton - חלק 2
מילון מושגים:
Singleton - דפוס עיצוב שמבטיח שממחלקה מסוימת יהיה מופע אחד בלבד, עם נקודת גישה גלובלית אליו.
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
מעבד - יחידת העיבוד המרכזית של המחשב, שמבצעת את הפקודות של התוכניות ומנהלת את החישובים.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.

הדגמה של Singleton - חלק 2
השיעור ממשיך את הדוגמה של מערכת וידאו קונפרנס ומסביר את הארכיטקטורה של הלקוח והשרת. מכאן נגזר איזה רכיבים צריכים להיות Singleton.
התקשורת בין הלקוחות לשרת
1. השידור: לקוח שמדבר שולח את האודיו והווידאו לשרת, והשרת מעביר אותם לכל שאר המשתתפים בשיחה.
2. שיחה משותפת: כשכולם משתתפים באותה שיחה, כל מה שמשודר נשלח לשרת והשרת משכפל אותו לכולם.
הרכיבים בלקוח
3. רכיב הקלטת קול: מקבל מהמיקרופון רצף של חבילות אודיו, ומעביר אותן לרכיב התקשורת.
4. רכיב הקלטת וידאו: מקבל חבילות וידאו מהמצלמה ומעביר אותן לרכיב התקשורת, שמעביר לשרת.
5. רכיב התקשורת: מעביר לשרת את החבילות שמגיעות מהלקוח, ומקבל מהשרת את החבילות של המשתתפים האחרים.
6. החלון הראשי: מבקש מרכיב התקשורת להתחבר או להתנתק, ומעביר לרכיבי המשתתפים את החבילות שהגיעו.
7. רכיבי משתתפים: לכל משתתף יש רכיב נגן קול ורכיב נגן וידאו.
כמה רכיבים צריכים להיות
8. חלון ראשי: מופע אחד לכל היותר, כי התוכנה לא פותחת שני חלונות ראשיים.
9. רכיב תקשורת: מופע אחד, כי כל התקשורת עוברת דרכו.
10. הקלטת קול ווידאו: מופע אחד לכל אחד, כי התוכנה מאפשרת מיקרופון אחד ומצלמה אחת.
11. משתתפים: רבים, ולכן לא מוגדרים כ-Singleton.
למה לדחות יצירה
12. Lazy: ייתכן שהמשתמש לא ישתמש במיקרופון או במצלמה לאורך כל השיחה. יצירה מוקדמת מאטה את עליית התוכנה ומכבידה על המעבד והזיכרון לאורך כל חייה.
הדוגמה מראה שרוב הרכיבים במערכת הם מופע יחיד, ולכן צריך דרך מסודרת לגשת אליהם.
השיעור הבא בקורס: הדגמה של Singleton - חלק 3

פרקי ההרצאה: הדגמה של Singleton - חלק 2

  1. 00:00

    תקשורת בין קליינטים לשרת בשיחת ועידה

  2. 01:45

    תכנון רכיבי הקליינט

  3. 02:59

    רכיבי ההקלטה: אודיו ווידאו

  4. 04:15

    רכיבי התוכנה המייצגים את החברים בשיחה

  5. 05:11

    זרימת פאקטים של אודיו ווידאו לשרת

  6. 08:52

    התחברות ויציאה דרך החלון הראשי

  7. 09:46

    למה רכיב תקשורת והקלטה נשארים יחידים

תמלול ההרצאה: הדגמה של Singleton - חלק 2

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

  1. 00:08

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

  2. 00:23

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

  3. 00:45

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

  4. 01:03

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

  5. 01:25

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

  6. 01:45

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

  7. 02:00

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

  8. 02:26

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

  9. 02:49

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

  10. 03:16

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

  11. 03:34

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

  12. 03:50

    אז זה רכיב התקשורת, יש לנו רכיב תוכנה שזה ה-Main Window, החלון הראשי. אפשר לבוא ולהגיד כן, אבל החלון מכיל הכל, אבל זה לא יהיה מדויק, החלון לא מכיל את רכיב התקשורת, החלון לא מכיל את רכיבי ההקלטה.

  13. 04:09

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

  14. 04:23

    הנה רכיב התוכנה שמייצג את אליס. הנה רכיב התוכנה עבור בוב, והנה עבור קלרה, נכון? כי בשקף הראשון ראינו שיש לנו את אליס, בוב וקלרה איתנו בדיון.

  15. 04:35

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

  16. 05:01

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

  17. 05:14

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

  18. 05:33

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

  19. 05:49

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

  20. 06:16

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

  21. 06:41

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

  22. 07:07

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

  23. 07:38

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

  24. 08:04

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

  25. 08:24

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

  26. 08:44

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

  27. 08:57

    אז אני מעביר, החלון הראשי מעביר בקשת לוגין אל רכיב התקשורת שמעביר אותה אל הסרבר, וכנ"ל לגבי לוגאוט.

  28. 09:08

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

  29. 09:26

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

  30. 09:45

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

  31. 10:09

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

  32. 10:40

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

  33. 10:58

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

לקורס המלא: קורס Design Patterns אונליין

ההרצאה הקודמת: הדגמה של Singleton - חלק 1

ההרצאה הבאה: הדגמה של Singleton - חלק 3

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

  • הדגמה של הרובוט
  • הדגמה של Decorators
  • הדגמה של DRS
  • הדגמה של RESTCONF

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

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס תכנות מתקדם - #Advanced .NET C