
Serialize הופך אובייקט למחרוזת JSON, ו-Deserialize עם הטיפוס המבוקש הופך אותה בחזרה לאובייקט.הטקסט המלא של הדקות הראשונות בהרצאה «Serialization - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
עכשיו, אנחנו הכרנו כרגע בתוכנית הזאת את SOAP פורמטר ואת BINARY פורמטר. אלה שני הפורמטרים שהגיעו בילד אין בדוט נט עם הגרסה הראשונה של דוט נט. אבל עם הזמן התווספו עוד פורמטרים, או ליתר דיוק לא קוראים להם בדיוק פורמטרים, קוראים להם סריאלייזרים.
זאת אומרת שיש עוד מחלקות שמסוגלות לשמור את המידע מאובייקט לסטרים או למשהו אחר, תכף נראה, שהם שומרות אותו בפורמטים אחרים. אז פורמטר אחד שאנחנו הולכים לראות, או סריאלייזר יותר נכון, זה יותר מדויק לקרוא לזה, נקרא XML-Sarializer.
עכשיו רגע, ה-soap הוא גם היה XML, אבל soap-formatter שומר את זה ספציפית לפורמט soap, ו-XML-Serializer מאפשר לנו לשמור את זה לפורמט XML שאנחנו רוצים.
שימו לב לתגיות שיש פה ב-soap, פורמטר שאנחנו לא באמת שולטים עליהם כי זה בעצם הפורמט ה-XMLי של SOAP, ככה SOAP נראה. אז אנחנו יכולים לבצע שליטה יותר גבוהה אם אנחנו עובדים עם הרכיבים הנוספים האלה, אז בואו נראה איך אפשר לעבוד איתם.
מה שכדאי לבצע זה פשוט שכפול של התוכנית הזאת, וכך אנחנו יכולים לבצע תוכנית דומה, נבצע קופי ונקרא לתוכנית הזאת other serializers נפתח את התוכנית הזאת שיש פה שכפול ככה שתי התוכניות יוכלו להישאר ותוכלו להוריד את שתיהן ובואו נבצע אדפטציה מתאימה בשביל לשמור את זה עם
serializers אחרים קודם כל אנחנו תמיד יכולים לשנות את שם ה-solution ואת שם ה-project ואנחנו יכולים בפרופרטיז לומר שאנחנו רוצים לשנות גם את שם של קובץ האקסקיושן שנוצר לנו ואנחנו יכולים לראות איזה אדפטציה אנחנו צריכים לבצע.
אז דבר ראשון, בואו נתחיל עם המחלקה פרסון. עבור הפורמטרים, או ליתר דיוק הסריאלייזרים שאנחנו רוצים לעבוד איתם, אנחנו לא צריכים להגדיר סריאלייזבל, זה לא עובד באותה השיטה.
אז בואו נוריד את זה, בואו נוריד את אלה, נוריד את האופציונל פילד ויש לנו פה פרסון רגיל לגמרי. עכשיו בואו ניגש לתוכנית ונבצע פה את השינוי.
נתחיל עם הפונקציות האלה save to binary file ו-read from binary file בואו נקרא להם save to xml ו-read from xml כעת אנחנו לא רוצים לקחת את binary formatter אנחנו רוצים לקחת את xml serializer xml serializer צריך לקבל לקונסטרקטור את הטייפ של המחלקה שאנחנו רוצים לשמור כרגע זה פרסון טייפ זה בעצם מחלקה אוקרטור טייפ אוף מחזיר אובייקט
מטיפוס טייפ שזה פשוט מאוד אובייקט שמתאר נתונים לגבי טיפוס נתונים מסוים לגבי פרסון אז יש לנו כרגע את ההגדרה של מה בדיוק האובייקט שאנחנו רוצים לשמור בואו לא נקרא לזה פורמטר נקרא לזה סריאלייזר בעזרת רינמינג נשנה את השם ואנחנו יכולים לפתוח קובץ, עדיין אנחנו רוצים לפתוח קובץ XML.
אז בואו נפתח פה XML, גם כאן וגם כאן. שוב פעם אנחנו רוצים לשנות את זה ל-XML-Serializer. אנחנו רוצים Type of Person, ונשנה את זה לאותו שם, Serializer.
זה המונח היותר מתאים מאשר Formatter, למרות שאין הרבה הבדל הגיוני בין הקונספטים. בואו נראה אילו עוד שינויים אנחנו צריכים לבצע במחלקה פרסון. אז כאשר אנחנו משתמשים בשיטה הזאת של הפורמטר, אולי אפילו כדאי לשים את פרסון פה לידינו.
אז יש פה כמה הגבלות ונתונים שאנחנו צריכים להבין. דבר ראשון, המחלקה חייבת להיות פאבליק. אם לא נגדיר אותה כפאבליק, תהיה לנו פה גריסה.
דבר שני, חייב להיות למחלקה קונסטרקטור. דבר שלישי רק אלמנטים שהם public זה לא משנה אם זה data member או property אם זה public הוא יישמר אוקיי אז בואו נריץ וקיבלנו שוב פעם את אותם נתונים אנחנו רואים בדיוק את הנתונים שנשמרו אלה הם מוצגים אבל מה שיותר מעניין זה מהפורמט של הקובץ עצמו אז בואו ניכנס לתיקיית בין תיקיית דיבאג ונראה שיש לנו פה person.xml ובואו נסתכל
עליו מה שאנחנו הולכים לראות כרגע זה פורמט אחר לגמרי שזה בייסיקלי פורמט xml טהור מבחינתנו. אנחנו רואים ממש תגית xml, אנחנו רואים פה תגית person, אנחנו רואים את ה-first name, last name, age, address ולא פורמט soap.
אין פה את האנבלופ ואת ה-body ואת ה-header שיש בפורמט soap וכל המידע הנוסף, אבל יש לנו פה שליטה יותר גבוהה על הפורמט. מה זה אומר שליטה יותר גבוהה? יכולים לגשת למחלקה person ולהחליט איך לקרוא לכל דבר שהולך להישמר בקובץ.
אם אנחנו נחזור עוד פעם ונסתכל באמת על התגיות שקיימות כאן, אנחנו נראה שבדיוק הדאטה ממברס והשמות שהיו קיימים בקוד אלה השמות שאנחנו רואים.
אנחנו רואים שיש לנו person, first name, last name, age ואדרס. תזכרו את אלו. כעת בואו נחזור בחזרה ובעזרת אטריביוטס אנחנו יכולים לקבוע דברים אחרים עבור הפרסון שלנו.
לדוגמה אנחנו יכולים לומר xml root שזאת התגית הראשונה שקיימת xml root נקרא לזה my single person אנחנו רוצים שהfname יהיה xml אלמנט והשם שלו בכלל יהיה fname אותו הדבר ה last name שימו לב שכל האטריביוט מתייחס לאלמנט התכנותי האחד והיחיד שנמצא מתחתיו last name age בואו ניקח שוב פעם בעצם age נשאיר כמו שאנחנו רוצים ואדרס נקרא לזה adr בואו נריץ המידע נשמר נקרא כמו שצריך נסתכל
על הקובץ