חופש המידע או מידע ללא פלטפורמה

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

אחת החברות הכי מזוהות עם הגישה היא כמובן מיקרוסופט, אשר המציאה לנו הרבה פורמטים "לשמור" על המידע. ההמצאות של מיקרוסופט מגיעות אלינו בצורות כמו "כוננים", אשר בסה"כ אומרים שהמידע נמצא תחום באיזור מסויים (הרי תאורטית אני לא יכול להרחיב עם מחיצה נוספת את הכונן C שלי, אני או אנצל דיסק שלם עבורו, או שאני אצור/אקנה דיסק חדש ואתן לו כונן חדש). בנוסף יש לנו הרבה צורות אחרות לשמור על מידע שיהיה נגיש רק למי שעובד עם מוצר החברה, מקבצי ה Registry שאמורים לספק פתרון אחסון מידע אודות הגדרות המשתמש, ודרך מסדי נתונים, ובכלל ניהול מידע במערכת הכל נמצא בפורמטים בינאריים שאם אין את התוכנה המקורית, אי אפשר (תאורטית) לגעת במידע.

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

אבל מה קורה כאשר יש לי כמה תוכנות הרוצות לדבר אחת עם השנייה, ואחת מורצת על Windows, וכתובה ב C#, השנייה כתובה בקובול, והשלישית כתובה ברובי במערכת הפעלה איזוטרית כדוגמת לינוקס (קצת ציניות מותר נכון) ?

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

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

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

עכשיו הסטנדרט מחולק להרבה גורמים, למשל אם אני רוצה להעביר מידע על פעולה שמערכת צריכה לעשות/להחזיר לי, אני אשתמש בטכנולוגיה שנקראת XML-RPC, שהRPC זה remote procedure call.

עוד שיטה לביצוע אותו הדבר היא SOAP, אשר פירושה הוא Simple Object Acess Protocol.

ישנם כמה הבדלים מאוד משמעותיים בין SOAP לבין XML-RPC. הפרוטוקול של SOAP, נמצא בw3, בעוד שהפרוטוקול של XML-RPC עומד לבד. הפרוטוקול XML-RPC מספק צורה פשוטה להעביר מידע, בעוד שSOAP מאוד מורכב, ומכיל עוד הרבה תתי פרוטוקולים בתוך עצמו.

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

המוטו של XML-RPC, הוא לספק פתרון פשוט להרבה בעיות, אבל לא לכל בעיה אפשרית.

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

מתכנתי #C ישתמשו ב99% מהמקרים ב SOAP גם כאשר אין צורך אמיתי בו (כלומר רמת המורכבות אינה דורשת שימוש בו), היות ומיקרוסופט עושה את זה "פשוט" מידי להשתמש בפרוטוקול.

לכן, למעט משתמשי #C כל עוד שיש מידע שאפשר לעבוד איתו עם XML-RPC, הרבה מאוד אנשים יעדיפו להשתמש בו, מאשר להשתמש ב SOAP.

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

בשביל לתת הוראות כיצד יש להציג מידע, אנחנו נשתמש בטכנולוגיה בשם XSL (בגלל זה הדבר יכול לבלבל עם XSLT), אשר המקדם שלו הוא דווקא fo. המידע על התצוגה מזכיר מאוד את ה Styleshit של CSS, אבל הוא מכיל הרבה יותר יכולות מאשר CSS עצמו.

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

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

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

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

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

5 מחשבות על “חופש המידע או מידע ללא פלטפורמה

  1. Oren

    מעניין. הסברת יפה מה זה XML,
    והטכנולוגיות הקשורות באופן ישיר: DTD/XSLT/DOM/XPATH.
    (לא ברור לי למה קראת ל- DTD 'פרוטוקול', דרך אגב).

    אני הייתי מסביר רק בסוף על הווב סרביסס (אחרי הצגת כל הטכונולוגיות הנ"ל), כי הם רק אחד השימושים הקיימים ל- XML.

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

    ועוד תוספת קטנה: gconf של גנום, אשר מנסה להיות גם הוא registry, משתמש ב- xml.

  2. ik_5 מאת

    בקשר ל DTD אתה צודק, זה יותר סכמה או שפה מאשר פרוטוקול.
    כמו שכתבתי בהערה בסוף, בהתחלה כתבתי משהו הרבה יותר גדול ונרחב ממה ששיחררתי, אבל חוסר סבלנות מהצד שלי דבר שגרם לכך שלא הצלחתי לסיים את הפוסט, גרמסה לכך שקיצרתי בערך ב 2/3 א מה שכבר עשיתי והשארתי רק כמה דברים שלדעתי נמצאים בשימוש נרחב יותר מאשר השאר (לפחות מבחינת מפתחים).

  3. ארתיום

    מספר הערות:

    1. Die XML Die!

    או במילים אחרות, למרות XML באופן כללי זה כלי לא רע יש לו מספר בעיות:

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

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

    למשל, כל העניין של XML-RPC למימוש של Pingback די גרם לי לחוסר רצון מוחלט להשתמש בו… (כאשר ב־trackback עושים אותו דבר או אפילו יותר בפחות מאמץ).

  4. ik_5 מאת

    ארתיום, אם תרד מ ++C, אז אני אסכים איתך על הרבה יותר דברים😉

    כל מה שאמרת נכון… אני תמיד מעדיף להימנע מ XML אם אפשר, ואם אי אפשר, אז לדעת איך להתמודד איתו.

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s