PracticU

תרגילים על Client-Server Architecture ב-#C

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מתקדם - #Advanced .NET C › תרגילים על Client-Server Architecture ב-#C
מילון מושגים:
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
GUID - מזהה ייחודי גלובלי: מספר ארוך שנוצר כך שהסיכוי לכפילות שלו זניח, ומשמש לזיהוי אובייקטים.
תמונה - קובץ גרפי המוצג על המסך. בהקשר של וירטואליזציה או Docker, תבנית מוכנה שממנה יוצרים מכונה או קונטיינר.

תרגילים על Client-Server Architecture ב-#C
תרגילי המשך לפרויקט הצ'אט שנבנה בשיעור על ארכיטקטורת Client-Server: משדרגים אותו כך שישלח אובייקטים, ישמור הודעות ותמונות בשרת ויחזיר אותן ללקוחות.
מה נדרש לבנות
1. שיפור הצ'אט: במקום מחרוזות שולחים אובייקט מסוג Message עם שלושה שדות: כינוי (nickname), טקסט וצבע. כל לקוח בוחר לעצמו כינוי וצבע, ובמקום ה-ListBox משתמשים ב-ListView, כי הוא מסוגל להציג צבעים. כל הודעה מוצגת בצורה "כינוי: טקסט" ובצבע שנבחר.
2. שמירת הודעות בקבצים: השרת פותח לכל לקוח קובץ טקסט ייעודי ומוסיף אליו את כל ההודעות של אותו לקוח, בלי לערבב בין לקוחות.
3. שליפת ההודעות שלי: לחצן נוסף אצל הלקוח מבקש מהשרת את כל תוכן הקובץ שלו כמחרוזת אחת, והלקוח מציג אותה.
4. שליחת תמונות: לקוחות שולחים תמונות מהדיסק והשרת שומר את כולן בתיקייה אחת. כדי למנוע התנגשות שמות, למשל שני לקוחות עם a.jpeg, ממציאים שם ייחודי בעזרת GUID.
5. תמונה רנדומלית: לחצן שמבקש מהשרת תמונה אקראית מהתיקייה, והלקוח מקבל ומציג אותה.
בסוף כל שלב כדאי לבדוק עם כמה לקוחות במקביל שהכול עובד.
השיעור הבא בקורס: Interoperability - חלק 1

פרקי ההרצאה: תרגילים על Client-Server Architecture ב-#C

  1. 00:00

    שיפור פרויקט הצ'אט

  2. 00:38

    בחירת כינוי וצבע ללקוח

  3. 01:16

    הצגת הודעות צבעוניות ב-ListView

  4. 01:54

    שמירת הודעות בקבצים ייעודיים

תמלול ההרצאה: תרגילים על Client-Server Architecture ב-#C

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

  1. 00:02

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

  2. 00:17

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

  3. 00:42

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

  4. 01:07

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

  5. 01:31

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

  6. 01:48

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

לקורס המלא: קורס תכנות מתקדם ב‑#C ודוט-נט

ההרצאה הקודמת: Client-Server Architecture - חלק 2

ההרצאה הבאה: Interoperability - חלק 1

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

  • Client-Server Projects
  • תרגילים 1-3
  • הדגמה של NAP Client
  • Linux Container on Server 2019

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

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