PracticU

Serialization - חלק 2

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מתקדם - #Advanced .NET C › Serialization - חלק 2
מילון מושגים:
XML - שפת סימון לייצוג נתונים מובְנים בעזרת תגיות, המשמשת להחלפת מידע בין מערכות ולקובצי הגדרות.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
בינארי - ייצוג מידע בבסיס 2 בעזרת הספרות 0 ו-1. גם קובץ הכולל קוד מכונה ולא טקסט קריא.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
פריימוורק - מסגרת תוכנה שמספקת מבנה וכלים מוכנים לפיתוח יישומים, כדי לחסוך כתיבת קוד חוזר.

Serialization - חלק 2
בשיעור הזה משתמשים בשני סריאלייזרים נוספים מעבר ל-SoapFormatter: XmlSerializer לקובץ XML רגיל, ו-JavaScriptSerializer שממיר לפורמט JSON.
השלבים העיקריים
1. מבוא לסריאלייזרים: מעבר לפורמטרים הבינארי וה-SOAP, בדוטנט קיימים סריאלייזרים נוספים שמשמרים אובייקט לפורמט אחר. ההבדל ב-XmlSerializer הוא שהמתכנת שולט יותר בפורמט הסופי.
2. דרישות ל-XmlSerializer: המחלקה חייבת להיות public, חייב להיות לה קונסטרקטור ריק, והחברים שנשמרים הם רק אלה שהם public, בין שהם שדה ובין שהם פרופרטי. בלי זה התוכנית נופלת.
3. הסרת סמנים מיותרים: בקוד הדוגמה מוסרים הגדרות ישנות, כמו Serializable, כי הסריאלייזר הזה לא עובד בשיטה הזאת.
4. פורמט הקובץ: XmlSerializer יוצר קובץ XML נקי, בלי המעטפת של SOAP. שם התגיות נלקח משמות השדות והפרופרטיז במחלקה.
5. שינוי שמות: אפשר לקבוע שם לתגית הראשית, לשנות שם של תגיות עם תגית ייעודית, ואפילו להפוך חבר לתכונה (attribute) של התגית, כמו הגיל בדוגמה. שם התכונה אפשר לשנות גם הוא.
6. JSON: פורמט קומפקטי יותר מ-XML, שמשמש להעברת מידע בין לקוח לשרת באתרי אינטרנט. כדי להשתמש בו משנים את גרסת הפריימוורק של הפרויקט לגרסה 4 ומעלה, ומוסיפים הפניה ל-System.Web.Extensions.
7. JavaScriptSerializer: הסריאלייזר הזה לא כותב לסטרים, אלא מחזיר מחרוזת. Serialize הופך אובייקט למחרוזת JSON, ו-Deserialize עם הטיפוס המבוקש הופך אותה בחזרה לאובייקט.
בסיום השיעור ברור שסריאלייזר שונה ממשפיע על פורמט הקובץ, ושלכל פורמט יש דרישות משלו מהמחלקה.
השיעור הבא בקורס: Serialization - חלק 3

פרקי ההרצאה: Serialization - חלק 2

  1. 00:00

    היכרות עם XML Serializer מול SOAP

  2. 01:18

    שכפול התוכנית לעבודה עם Serializers אחרים

  3. 03:53

    שימוש ב-XmlSerializer עם TypeOf Person

  4. 05:41

    הגבלות המחלקה - public וקונסטרקטור ריק

  5. 06:20

    צפייה בפורמט קובץ ה-XML

  6. 07:35

    שליטה בתגיות עם XmlRoot ו-XmlElement

תמלול ההרצאה: Serialization - חלק 2

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

  1. 00:02

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

  2. 00:25

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

  3. 00:46

    עכשיו רגע, ה-soap הוא גם היה XML, אבל soap-formatter שומר את זה ספציפית לפורמט soap, ו-XML-Serializer מאפשר לנו לשמור את זה לפורמט XML שאנחנו רוצים.

  4. 01:04

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

  5. 01:27

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

  6. 02:06

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

  7. 02:37

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

  8. 02:50

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

  9. 03:06

    נתחיל עם הפונקציות האלה save to binary file ו-read from binary file בואו נקרא להם save to xml ו-read from xml כעת אנחנו לא רוצים לקחת את binary formatter אנחנו רוצים לקחת את xml serializer xml serializer צריך לקבל לקונסטרקטור את הטייפ של המחלקה שאנחנו רוצים לשמור כרגע זה פרסון טייפ זה בעצם מחלקה אוקרטור טייפ אוף מחזיר אובייקט

  10. 04:12

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

  11. 04:45

    אז בואו נפתח פה XML, גם כאן וגם כאן. שוב פעם אנחנו רוצים לשנות את זה ל-XML-Serializer. אנחנו רוצים Type of Person, ונשנה את זה לאותו שם, Serializer.

  12. 05:15

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

  13. 05:41

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

  14. 05:53

    דבר שני, חייב להיות למחלקה קונסטרקטור. דבר שלישי רק אלמנטים שהם public זה לא משנה אם זה data member או property אם זה public הוא יישמר אוקיי אז בואו נריץ וקיבלנו שוב פעם את אותם נתונים אנחנו רואים בדיוק את הנתונים שנשמרו אלה הם מוצגים אבל מה שיותר מעניין זה מהפורמט של הקובץ עצמו אז בואו ניכנס לתיקיית בין תיקיית דיבאג ונראה שיש לנו פה person.xml ובואו נסתכל

  15. 06:33

    עליו מה שאנחנו הולכים לראות כרגע זה פורמט אחר לגמרי שזה בייסיקלי פורמט xml טהור מבחינתנו. אנחנו רואים ממש תגית xml, אנחנו רואים פה תגית person, אנחנו רואים את ה-first name, last name, age, address ולא פורמט soap.

  16. 06:54

    אין פה את האנבלופ ואת ה-body ואת ה-header שיש בפורמט soap וכל המידע הנוסף, אבל יש לנו פה שליטה יותר גבוהה על הפורמט. מה זה אומר שליטה יותר גבוהה? יכולים לגשת למחלקה person ולהחליט איך לקרוא לכל דבר שהולך להישמר בקובץ.

  17. 07:16

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

  18. 07:29

    אנחנו רואים שיש לנו person, first name, last name, age ואדרס. תזכרו את אלו. כעת בואו נחזור בחזרה ובעזרת אטריביוטס אנחנו יכולים לקבוע דברים אחרים עבור הפרסון שלנו.

  19. 07:45

    לדוגמה אנחנו יכולים לומר xml root שזאת התגית הראשונה שקיימת xml root נקרא לזה my single person אנחנו רוצים שהfname יהיה xml אלמנט והשם שלו בכלל יהיה fname אותו הדבר ה last name שימו לב שכל האטריביוט מתייחס לאלמנט התכנותי האחד והיחיד שנמצא מתחתיו last name age בואו ניקח שוב פעם בעצם age נשאיר כמו שאנחנו רוצים ואדרס נקרא לזה adr בואו נריץ המידע נשמר נקרא כמו שצריך נסתכל

  20. 08:12

    על הקובץ

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

ההרצאה הקודמת: Serialization - חלק 1

ההרצאה הבאה: Serialization - חלק 3

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

  • Object Serialization

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

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