לדלג לתוכן

Model View Controller

מתוך ויקיפדיה, האנציקלופדיה החופשית
גרסה מ־05:57, 1 בנובמבר 2005 מאת שם בדוי (שיחה | תרומות) (ארכיטקטורת MVC.)
(הבדל) → הגרסה הקודמת | הגרסה האחרונה (הבדל) | הגרסה הבאה ← (הבדל)

ארכיטקטורת MVC הינה ארכיטקטורת תוכנה, שהוגדרה על ידי סמולטוק בשנת 1979, אשר מפרידה בין מבנה־הנתונים של האפליקציה, ממשק המשתמש והשליטה בו לשלושה חלקים שונים, כך ששינויים בחלק אחד ישפיעו באופן מינימלי על החלקים האחרים. MVC הם ראשי התיבות של Model-View-Controller, מודל-תצוגה-בקרה. יש המתייחסים לארכיטקטורת MVC כתבנית לעיצוב־תוכנה, אך אין היא כזו שכן יש בה יותר אפשרויות מרוב התבניות לעיצוב תוכנה.

דרך הפעולה

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

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

תצוגה: התצוגה הופכת את המודל לחלקים ממשק המשתמש. MVC נראית בעיקר באפליקציות אינטרנט; ה-HTML הוא ממשק המשתמש, התצוגה, והקוד שמאחוריו כמו גם בסיס הנתונים הם המודל.

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

  • הערה: ארכיטקטורת MVC לא מציינת במפורש בסיס־נתונים כלשהו למידע.

מקובל לחשוב על אפליקציה כעל שלוש שכבות: התצוגה (UI), המרחב (הדומיין) ושכבת הנתונים. ב-MVC, שכבת התצוגה מחולקת לבקרה ולתצוגה בכדי ששינוי חלק מסוים ישפיע כמה שפחות על האחרים.

קובץ:MVC.jpg
בקרה-מודל-תצוגה

למרות שארכיטקטורות MVC עובדות בדרכים שונות, התוכנה מתפקדת בדרך כלל כך:

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

יתרונות וחיסרונות

המודל חזק אך התצוגה חלשה

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

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

מונע אירועים

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

שימושים

ארכיטקטורת MVC הוצגה בראשונה ב-1979 בידי Trygve Reenskaug, אז עובד בסמולטוק במעבדות המחקר של זירוקס. יישום זה הופעל על ממשקי GUI רבים אחרים, כמו:

בסביבות פיתוח לאינטרנט:

ראו גם

ארכיטקטורת תוכנהעיצוב תוכנהGUIממשק משתמשתכנות מכוון עצמים.

קישורים חיצוניים