ותוך כדי אני אסביר על היתרונות ששכבה של טיפול במידע נותנת.נניח שאני חנות אלקטרונית , יש לי אתר שדרכו עושים הזמנות (נקרא לו ה SERVER לצורך העניין) ובמקביל עוד תוכנה (CLIENT) שאמורה לנהל לי את המלאי בחנות לצורך הדוגמא.
בוא נניח שכיום הקישור בין ה CLIENT ל SERVER הוא דרך DB נניח שאין לי כרגע שכבה שמטפלת במידע ואני פשוט עושה מתי שאני צריך שליפות , הכנסות , עדכונים וכו'..
2 הבעיות המרכזיות שנוצרות פה הן צמידות וחוסר אבסטרקטיות מה הכוונה ?
צמידות :
נניח מחר אני רוצה להוסיף משהו ל CLIENT שלי שמתקשר ל DB זה אומר שאני אצטרך בנוסף לסרוק את כל המקומות בקוד של ה SERVER שבהם יש התקשרות למקום הרלוונטי ולעשות את כל השינוים גם שם , תחשוב אתה מוסיף שדה של תאריך לכל מקום ב DB אתה תצטרך לעבור שאילתה שאילתה ולהוסיף ידנית את השדה הזה , ממש לא כיף.
חוסר אבסטרקטיות :
נניח החלטתי מסיבות כאלו או אחרות לזנוח את ה DB ולעבור לתקשורת דרך WEB SERVICES , מה זה אומר ? שינוי מוחלט מבחינת ארכיטקטורה של המערכת אני פחות או יותר אצטרך לשכתב את כל המערכת שלי בשביל השינוי הזה.
אני אתייחס ל2 הנושאים הנוספים שאמרתי
מקום לטעויות:
נניח והמתכנת ב SERVER עשה טעות בשאילתה מסוימת ברמת החוקיות של ה DB , לא יהיה לי אף מנגנון שיבדוק את זה ה CLIENT יקבל את המידע השגוי
אבטחה :
המתכנת הוא לא מבין גדול במסדי נתונים הוא מעביר את מה שהוא מקבל AS IS
נניח הוא מקבל INJECTION לתוך SQL הוא מעביר את זה ואנחנו אכלנו אותה כי שוב אין אף מנגנון שיבדוק את זה .
עכשיו כשמשתמים בשכבה לטיפול במידע כל הבעיות האלו נפתרות
הבעייה של הצמידות נפתרת, ה CLIENT כבר לא צריך להיות מתואם ל SERVER הוא רק צריך להכיר את השכבה ולדבר איתה ואת כל השינוים שבא לי לעשות אני עושה בשכבה עצמה.
מבחינת האבסטרקציה השכבה תהיה בעצם סוג של INTERFACE בהתאם לצרכים שלי וביום שאני רוצה לממש דרך אחרת להעביר את המידע אני פשוט כותב משהו שיממש את ה INTERFACE הזה והCLIENT והSERVER בכלל לא ידעו על השינוי הזה.
מבחינת אבטחה ומקום לטעויות אני מוסיף עוד בדיקות נוספות ברמה של השכבה וככה אני EXTRA CAUTIOUS
זה ממש על קצה המזלג , זה נושא שעוד אפשר להרחיב אותו הרבה אני נתתי כמה נקודות שעלו לי לראש
אני מקווה שהייתי ברור אם יש עוד שאלות אני אשמח לענות.