
הטקסט המלא של הדקות הראשונות בהרצאה «ארכיטקטורה של MVC» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז הדבר הראשון שאנחנו הולכים לראות זה מה זה אומר הקיצור MVC ומה זאת בעצם הארכיטקטורה הזאת. אז MVC מתאר בעצם design pattern, כלומר מבנה של מערכת.
ה-M ב-MVC מתאר מודל. מה זה בעצם מודל? מודל זה מחלקות המידע שיש לנו במערכת. לדוגמה, אם אנחנו מתעסקים בלקוחות, אז אמורה להיות לנו איזושהי מחלקה שמתארת לקוח אחד ואולי גם מחלקה שמתארת אוסף לקוחות.
המודל מתאר את הקבוצת מחלקות הזאת. ה-V ב-MVC מתאר Vue. אלו אוסף הדפים שהלקוח בסופו של דבר רואה ואלה הדפים שמגיעים ללקוח.
ה-C ב-MVC מתאר קונטרולר. קונטרולר זה המוח של המערכת. המוח מכיל את כל מה שהמערכת צריכה לבצע בסופו של דבר.
עכשיו, איך פועל כל המנגנון של MVC? אז הדבר הראשון שקיים לנו במערכת זה המודל. שמתארות את המידע שאנחנו צריכים בסופו של דבר להציג או להשתמש בו.
לקוח מבצע בקשה עבור הקונטרולר, או יותר נכון פונה לקונטרולר ומבקש פקודה מסוימת או ביצוע בקשה מסוימת. הקונטרולר אז לוקח את המודל, אובייקטים שאנחנו צריכים להחזיר ללקוח, ויוצר איתם את ה-view, זאת אומרת שהוא יוצר את הדפים שבסופו של דבר חוזרים ללקוח.
לדוגמה, יש לנו מחלקה שמתארת לקוח, קסטומר, הקונטרולר פונה לדאטאבייס, מקבל ממנו בוא נניח רשימת לקוחות, ומחזיר לגולש דף שמכיל את רשימת הלקוחות.
ה-view משתמש במודל בשביל לעצב את עצמו. הוא לוקח את רשימת הלקוחות, יוצר לעצמו את התצוגה, שאז מוחזרת ללקוח. דבר נוסף, אם הלקוח מבצע פקודות עם התצוגה נניח לוחץ על לחצן בשביל להוסיף לקוח או משהו כזה אז המידע מוחזר לקונטרולר שאז מבצע את הפעולה ושומר את המידע בדאטאבייס.
כמו כן ה-view יכול לפנות למודל לדוגמה אם הוא רוצה לבצע ולידציה, לבדוק אם שם הפרטי הוא כמו שצריך או אם האימייל הוא כמו שצריך. הוולידציה יכולה לשבת במודל ולהגדיר מה נכון ומה לא נכון ואז ה-view יכול להשתמש במידע הזה הוא פונה למודל או משתמש במידע שיש במודל.
עכשיו, ארכיטקטורת MVC זה בעצם הגישה החדשה יותר לפיתוח אתרי אינטרנט. הגישה הקודמת שהייתה מבית מייקרוסופט נקראת ASP.NET. כמה הבדלים בין MVC לבין ASP.NET למי שמכיר ASP.NET.
דבר ראשון, ב-ASP.NET לקוח היה גולש לדף. היינו לנו דפים עם סיומת ASPX, ולקוח פשוט היה רושם בדפדפן www.שם האתר, אולי נקודה.coil, ואז איזשהו שם של דף, נניח product.spx, מבצע גלישה לדף הזה, ומיידית מקבל את כל הדף עם התצוגה שלו.
ב-MVC זה לא מה שמתבצע. לקוח לא גולש לדפים, שזה נראה קצת מוזר. לקוח גולש לפונקציות שנמצאות בתוך ה-controller, ישירות לתוך פונקציות, ומסוגל גם לשלוח להם פרמטרים על ידי שורת ה-URL.
כל הנושא הזה של מה לכתוב בשורת ה-URL בכדי להגיע בדיוק לפונקציה שנמצאת בקונטרולר נקרא ראוץ. זה נושא שנדבר עליו בהרחבה בהמשך. ראוץ זה בעצם הנתיב שאליו אנחנו גולשים.
אז הבדל ראשון אנחנו רואים, אין פה גלישה לדפים, יש בו גלישה לפונקציות שנמצאות בתוך הקונטרולר, ממש פונקציות שכתובות בקוד. דבר נוסף, בגלל שיש לנו גלישה לראוץ, לנתיב מסוים, אנחנו יכולים לשחק עם הנתיב הזה, כך הלקוח יכול לקבל מידע יותר נכון לגבי לאן הוא גולש.
כלומר, אין לנו פה גלישה לדף אחד. יכול להיות שיש לנו קונטרולר ויש לו כמה פונקציות ואז הלקוח יכול לתאר בדיוק איזה פונקציה הוא רוצה בקונטרולר וזה נותן לו יותר אינפורמציה נכונה מבחינת לאן הוא גולש.
מנועי חיפוש יכולים לנתח את הנתיבים האלה בצורה יותר מדויקת ולהעלות את הדפים שלנו יותר גבוה במנועי החיפוש. הבדל נוסף ב-sp.net כאשר גלשנו לדף היה מה שנקרא Page Life Cycle זה בעצם סדרה של אירועים שכל פעם שהיינו גולשים לאיזשהו דף האירועים האלה היו
מתבצעים בצד של השרת וגוזלים המון זמן. ב-MVC אין את כל האירועים האלה. כל מה שקשור ל-Page Life Cycle הוציאו ולכן יש את המינימום שמתרחש בצד של השרת בכדי להביא ללקוח ממש תצוגה של דף.
הבדל אחרון זה מבניות המערכת. כאן אנחנו רואים שישנם שלושה חלקים מרכזיים בתוך ארכיטקטורת MVC. יש לנו את החלק של המודל, אלה מחלקות המידע, יש לנו את החלק של הקונטרולר והמוח שמבצע את הפונקציונליות, גישה לדאטאבייס, יצירת אובייקטים מהמידע ויצירת view, ויש לנו את החלק של ה-view שהוא בעצם הטפסים
עצמם שאנחנו בונים אותם לרוב html או צד לקוח. לכן אם אנחנו בונים את המערכת הזאת ב-MVC יש פה ממש יש חלוקה מדויקת של חלקים במערכת.
עבור פרויקטים בינוניים ומעלה, הדבר הזה הוא הרבה יותר מסודר מאשר כל המידע פשוט שוכב לו בדפים ב-sp.net. וכך בן אדם חדש יכול להיכנס למערכת קיימת וישר להתמצא שם, ישר לדעת מי מחלקות המידע, מהו המוח שמבצע את הפעולות ומה קורה בדפים