חומר זה הוא חלק מסדרת "מבוא לפיתוח ארגוני". מאמרים קודמים:
- על הרשת ;
- על ארכיטקטורת תוכנה ;
- על פרוטוקולי HTTP/HTTPS ;
- על יסודות מייבן ;
- על servlets (אנחנו כותבים יישום אינטרנט פשוט) ;
- על מיכלי servlet .
היסטוריה של MVC
הרעיונות ל-MVC גובשו על ידי Trygve Reenskaug בזמן שעבד ב-Xerox PARC בסוף שנות ה-70. באותם ימים, לעבוד עם מחשב אי אפשר היה להסתדר בלי תואר אקדמי ולימוד מתמיד של תיעוד רב עוצמה. הבעיה ש-Reenskaug פתרה יחד עם קבוצה של מפתחים חזקים מאוד הייתה לפשט את האינטראקציה של המשתמש הממוצע עם מחשב. היה צורך ליצור כלים שמצד אחד יהיו פשוטים ומובנים ביותר ומצד שני יאפשרו לנהל מחשב ואפליקציות מורכבות. Reenskaug עבד בצוות שפיתח מחשב נייד "לילדי כל הגילאים" - Dynabook, כמו גם את שפת SmallTalk בהנהגתו של אלן קיי. אז ושם הונחו המושגים של ממשק ידידותי. עבודתו של רינסקאוג עם הצוות שלו השפיעה רבות על התפתחות תחום ה-IT. הבה נציג עובדה מעניינת שאינה קשורה ישירות ל-MVC, אך ממחישה את המשמעות של ההתפתחויות הללו. ב-2007, לאחר הצגת האייפון של אפל, אלן קיי אמר: "כשהמקינטוש יצא, ניוזוויק שאל מה אני חושב עליו. אמרתי: זה המחשב האישי הראשון שראוי לביקורת. לאחר המצגת עלה סטיב ג'ובס ושאל: האם האייפון ראוי לביקורת? ואני אמרתי, תעשה את זה חמישה על שמונה סנטימטרים ותכבוש את העולם." שלוש שנים מאוחר יותר, ב-27 בינואר 2010, הציגה אפל את האייפד בגודל 9.7 אינץ'. כלומר, סטיב ג'ובס עקב אחר עצתו של אלן קיי כמעט פשוטו כמשמעו. הפרויקט עליו עבד רנסקאוג נמשך 10 שנים. והפרסום הראשון על MVC מיוצריו פורסם עוד 10 שנים מאוחר יותר. מרטין פאולר, מחברם של מספר ספרים ומאמרים על ארכיטקטורת תוכנה, מזכיר שלמד MVC מגרסה עובדת של SmallTalk. מכיוון שלא היה מידע על MVC מהמקור העיקרי במשך זמן רב, כמו גם ממספר סיבות אחרות, הופיעו מספר רב של פרשנויות שונות למושג זה. כתוצאה מכך, אנשים רבים רואים ב-MVC תוכנית עיצוב או דפוס. פחות נפוץ, MVC נקרא דפוס מורכב או שילוב של מספר דפוסים הפועלים יחד כדי ליישם יישומים מורכבים. אך למעשה, כפי שנאמר קודם לכן, MVC הוא בראש ובראשונה אוסף של רעיונות/עקרונות/גישות ארכיטקטוניות שניתן ליישם בדרכים שונות תוך שימוש בתבניות שונות... לאחר מכן, ננסה להסתכל על הרעיונות העיקריים המשובצים בתפיסת ה-MVC.מהו MVC: רעיונות ועקרונות בסיסיים
- VC הוא אוסף של רעיונות ועקרונות אדריכליים לבניית מערכות מידע מורכבות עם ממשק משתמש;
- MVC הוא ראשי תיבות של Model-View-Controller.
שלב 1: הפרד את ההיגיון העסקי של האפליקציה מממשק המשתמש
הרעיון המרכזי של MVC הוא שכל אפליקציה עם ממשק משתמש יכולה, בקירוב ראשון, להתחלק ל-2 מודולים: מודול האחראי על יישום ההיגיון העסקי של האפליקציה, וממשק משתמש. המודול הראשון יישם את הפונקציונליות העיקרית של האפליקציה. מודול זה יהווה את הליבה של המערכת, בה מיושם מודל תחום האפליקציה. בקונספט MVC, מודול זה יהיה האות M שלנו, כלומר. דֶגֶם. המודול השני יישם את כל ממשק המשתמש, כולל הצגת נתונים למשתמש וההיגיון של האינטראקציה של המשתמש עם האפליקציה. המטרה העיקרית של הפרדה זו היא להבטיח שניתן לפתח ולבדוק את ליבת המערכת (דגם במינוח MVC). ארכיטקטורת האפליקציה לאחר חלוקה כזו תיראה כך:שלב 2. שימוש בדפוס Observer, השג עצמאות גדולה עוד יותר של המודל, כמו גם סנכרון של ממשקי משתמש
כאן אנו שואפים ל-2 מטרות:- השג עוד יותר עצמאות של המודל.
- סנכרון ממשקי משתמש.
שלב 3. חלוקת הממשק ל-View ו-Controller
אנו ממשיכים לחלק את האפליקציה למודולים, אך ברמה נמוכה יותר של ההיררכיה. בשלב זה, ממשק המשתמש (שהופרד למודול נפרד בשלב 1) מחולק לתצוגה ולבקר. קשה למתוח קו קפדני בין תצוגה לבקר. אם נגיד שהתצוגה היא מה שהמשתמש רואה, והבקר הוא המנגנון שדרכו המשתמש יכול ליצור אינטראקציה עם המערכת, יש סתירה מסוימת. פקדים, כגון כפתורים בדף אינטרנט או מקלדת וירטואלית על מסך טלפון, הם בעצם חלק מהבקר. אבל הם גלויים למשתמש בדיוק כמו כל חלק מהתצוגה. כאן אנחנו מדברים יותר על חלוקה תפקודית. המשימה העיקרית של ממשק המשתמש היא להבטיח אינטראקציה של המשתמש עם המערכת. המשמעות היא שלממשק יש רק 2 פונקציות:- להציג ולהציג בנוחות מידע על המערכת למשתמש;
- הזנת נתוני משתמש ופקודות למערכת (העברתם למערכת);
- בהתאם לעקרונות של MVC, המערכת צריכה להיות מחולקת למודולים.
- המודול החשוב והעצמאי ביותר צריך להיות המודל.
- המודל הוא הליבה של המערכת. אתה צריך את היכולת לפתח ולבדוק אותו ללא תלות בממשק.
- לשם כך, בשלב הראשון של הפרדת המערכת, עליך לחלק אותה למודל ולממשק.
- לאחר מכן, באמצעות דפוס Observer, אנו מחזקים את המודל בעצמאותו ומשיגים סנכרון של ממשקי משתמש.
- השלב השלישי הוא חלוקת הממשק לבקר ותצוגה.
- כל מה שנדרש כדי להזין מידע מהמשתמש למערכת הוא בבקר.
- כל מה שמוציא מידע מהמערכת למשתמש נמצא בתצוגה.
GO TO FULL VERSION