MVC – פיתוח רב שכבתי
ל- MVC יתרונות רבים על פני פיתוח ב ASP.NET – בהפרדת השכבות, שינוי התשתיות ובחלוקת העבודה
הפוסט מפורסם בחסות חברת E4D המארגנת את כנס Expert Days 2011, האירוע המקצועי המעמיק והמקיף ביותר בטכנולוגיות מיקרוסופט. חמישה ימים של טכנולוגיה. סדנאות עומק המכסות את כל הנושאים החמים ביותר, כל סדנא בת יום אחד, בנושא אחד.
שמעתם כבר על MVC בעולם פיתוח האפליקציות ה web-יות ? נתקלתם אולי במונח הזה בבלוגים, בפרסומים של מיקרוסופט או בספרות המקצועית ולא הייתם בטוחים שאתם מבינים עד הסוף במה מדובר ? הפעם בחרנו להכיר לכם את המודל החדש הכובש את מקומו ומחליף את פיתוח ה ASP.NET המסורתי.
לכובע שלי שלוש פינות – M V C בראיה היסטורית
עד לפני מספר שנים, היה פיתוח ב ASP.NET הדרך המרכזית והנפוצה ביותר לפתח אתרים ואפליקציות WEB בעלות לוגיקה משמעותית המשלבת גישה לבסיסי מידע, עיבוד נתונים, הצגת הנתונים למשתמש וכמובן – ההתמודדות הבלתי נגמרת עם צורות ההצגה השונות של המידע בהתאמה לפלטפורמת התצוגה שלו (דפדפן או אייפון?). למרבה הצער, רבים הם המפתחים המכירים היטב את המורכבות שבעבודה בסביבה זו, את הקושי לפתח אפליקציות ואת הטיפול הנדרש בכל רכיבי המידע תוך כתיבת קוד מורכב וארוך, שלא לדבר על מורכבות ביצוע unit testing או debugging.
אז לקחה מיקרוסופט את מודל ה MVC המוכר כ pattern מהעבר, והתאימה אותו גם לעולם הפיתוח ב WEB, מה שהביא לשינוי משמעותי. נכון, המודל החדש דורש זמן לימוד ותרגול, אולם מפתחים שמצליחים לעשות את השינוי ולחשוב MVC-ית, להתרגל לכך שמדובר בפיתוח Service Oriented ולהבין את הניקוי שביצעה מיקרוסופט במנוע ה ASP.NET המסורתי – לא יחזרו לפתח בגרסה הישנה.
ל- MVC יתרונות רבים על פני פיתוח ב ASP.NET
1. היתרון הגדול והמרכזי ביותר של MVC הוא כמובן הפרדת השכבות והיכולת לנתק לחלוטין את אופן עיבוד המידע (שכבת ה control) משכבת ההצגה שלו למשתמש (view). המשמעות היא שבניגוד ל ASP.NET המסורתי, שם נדרש מפתח הלוגיקה להכיר גם את האובייקטים המופיעים על המסך ולנתח אותם (איזו פעולה בוצעה ועל איזה אובייקט?), הרי שבפיתוח תחת מודל ה MVC כל שמפתח הלוגיקה נדרש לדעת הוא מהם הארגומנטים אותם הוא מקבל משכבת ה view ואיזה מידע מועבר בתוכם. הcontroller עצמו אינו נדרש עוד לזהות בעצמו את האובייקט שהפעיל אותו, הוא אינו נדרש לדוגמא לנתח איזה כפתור נלחץ, הוא רק נדרש לקבל את הקלט שהוא מצפה לו, להפעיל את העיבוד ולהחזיר לשכבת ה VIEW את הפלט המתאים.
2. פיתוח ב MVC מאפשר לשנות את התשתיות ולכוונן את המנוע. כך לדוגמא, בזכות התוספות וממשקי הקוד שפותח המודל למפתחים יכולים אלה לשכתב את מנועי ה view או ה model binder, להוסיף קוד שיוכל לרוץ לפני ה action או לאחריו, לבצע dependency injection ולשנות את התשתית באופן שיסייע לתוכנה לרוץ בצורה נכונה ויעילה יותר.
3. מודל MVC מאפשר חלוקת העבודה בין מפתחים שונים, בעלי יכולות והכשרה שונה. כך לדוגמא מפתחי שכבת ה Control הם מפתחים בצד השרת המתמחים בכתיבת services מבלי שהם נדרשים להבין משהו בHTML או ב JQuery. מפתחי שכבת ה View לעומת זאת, יהיו HTML-יסטים או כותבי UI בכל טכנולוגיה אחרת – Jquery, Javascript, Jason, ואחרים, מבלי שיש כל צורך שיבינו בכתיבת קוד ה ASP.NET עצמו.
על הקלות הבלתי נסבלת של ביצוע unit testing ל MVC
יתרון משמעותי נוסף של MVC הוא בקלות התכנון והביצוע של unit tests לקוד עצמו. כבר בעת פתיחה של פרויקט MVC חדש בכלי הפיתוח של מיקרוסופט, נשאל המפתח האם הוא רוצה לפתוח גם פרויקט unit testing לבדיקת הקוד המצוי בשכבת ה Control וה model. את שכבת ה View לעומת זאת, אין אפשרות לבדוק באמצעות unit testing ויש להמשיך לעבוד באמצעים אחרים ששימשו עד כה (דוגמת הקלטות UI).
אז מה צריך לעשות מי שרוצה להתחיל לפתח ב MVC ? דבר ראשון, לפרק
הדבר הראשון שצריכה לעשות כל חברה המעוניינת לעבור לפתח במודל MVC הוא לקחת את האפליקציות הWEB-יות שלה, לפרק אותן לדפים ולאפיין היטב כל דף. בשלב הזה נדרש המפתח להתנתק לגמרי מהמבנה הנוכחי של הדף ומהקוד שיש בו ולהשקיע בזיהוי הקלט שאותו דף מעביר אל שכבת ה control וכן בזיהוי הפלט החוזר אל ה view. בסיום השלב הזה חשוב לעצור ולתכנן גם את הבדיקות שיעבור כל רכיב בכל שכבה במערכת, על מנת לבצע גם את ה unit testing בצורה נכונה. רק בדרך זו ניתן לפתח Service Oriented Applications כפי שמודל ה MVC מממש ולחלק את העבודה בין מפתחי קוד השרת ומפתחי הUI, כפי שהוסבר קודם לכן.
מחפשים מקורות לימוד טובים עבור מפתחים מתחילים בתחום זה? נסו את האתר הרשמי של מיקרוסופט לMVC, וכמובן – בלוגים לרוב העוסקים בתחום, דוגמת הבלוג של אייל ורדי, מנכ"ל משותף ו CTO של חברת E4D, בעל הסמכת MVP של מיקרוסופט.
רוצים ללמוד עוד על פיתוח במודל MVC ?
במסגרת כנס Expert Days 2011 מעביר אייל ורדי מספר סדנאות, ביניהן סדנת ASP.NET MVC 3.0 המיועדת למפתחים וראשי צוותים בתחום ASP.NET שמעוניינים להתפתח אל עולם ה MVC. הסדנא מתקיימת ב-11 ביולי ובה יזכו המשתתפים ל kickstart מרוכז לקראת פיתוח אפקטיבי במודל MVC, בצורה מרוכזת, מדויקת ומהירה.
הגב
14 תגובות על "MVC – פיתוח רב שכבתי"
* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.
עוד פרסומת במסווה של מאמר… האתר מתדרדר מיום ליום ופשוט הופך לזרוע שיווקית של E4D. חבל.
ואם כבר, אז לפחות תדייק. מיקרוסופט לא חשבה על לאמץ את MVC לווב- לא הייתה שום חדשנות מצד מיקרוסופט – הם פשוט העתיקו את הרעיון של ruby on rails, שאימץ את MVC כמה שנים טובות לפני מיקרוסופט.
"עד לפני מספר שנים, היה פיתוח ב ASP.NET הדרך המרכזית והנפוצה ביותר לפתח אתרים ואפליקציות WEB בעלות לוגיקה משמעותית"
באמת? אפשר בבקשה לספק קצת יותר מידע בלתי תלוי?
למשל:
היסטורי http://hotframeworks.com/rankings/by/popularity
עכשווי http://www.javalobby.org/java/forums/t101110.html
הייתי מעדיף לשים כתבות שיווקיות של מנהלי שיווק במדור פרסומי עם גילוי נאות…
הצחקתם אותי מודל "חדש" . zend framework וכמעט כל Fw אחר של PHP עושה שימוש בPattern הזה למעלה מ3 שנים.
מה שכן אחלה שהוספתם כלים בשביל זה הרי ידוע שאי אפשר להצמד ל שום design pattern בלי ש M$ תגבה כמה שקלים במסווה של sdk חדש…
מי בכלל מפתח בכלים של מיקרוסופט לאינטרנט?
רוב השרתים באירופה מריצים מערכות חופשיות כמו PHP.
עוד כתבה מגעילה שמנסה להלל את מיקרוסופט על כולם ושום דבר. מיקרוסופט היו *האחרונים* להבין שצורת פיתוח של אפליקציות ל-desktop לא מתאימה ל-web.
אם שיווקו פה חברת תוכנה, אני אעלה על הגל ואפרסם משהו בקוד פתוח….
למי שמעוניין יש גם מערכת ניהול תוכן (cms) שבנויה כולה ב-mvc ושמה Joomla!. כל הרכיבים שבנויים בה מבוססי MVC כך שזה נותן יתרון גדול בפיתוח ובניית אתרים ואפליקציות web.
הכתבה השיווקית הירודה הזאת עושה עוול אפילו למיקרוסופט שלא מנסים להציג את עצמם שמי שהמציאו את ה-MVC או טוענים ש-ASP.NET היתה הדרך העיקרית לפיתוח בווב.
לאור כמות אי הדיוקים במאמר הזה הייתי מצפה מ – E4D שלמען שמירת המוניטין שלהם יסירו אותו מהאתר. אם לא הם אז כדאי ל – Newsgeek לעשות כך מאותה הסיבה
מסכים אם התגובות כאן. אבל כמתכנת לייט וכמישהו שרוצה להיכנס לתכנות בMVC, יש למישהו קישור לקורסים? אתרים ללימוד עצמי? PDF-ים חינמיים? בנושא?
אני לא למדתי Design patterns אף פעם, ואני מניח שזה מה שחסר לי…ומקשה עליי להיכנס לראש של ה MVC.
תודה,
[email protected]
מבוסס PHP כמובן!!!!!!!
הי, rptk
נסה להתחיל עם ג'ומלה או זנד. הנה מדריך קצר על MVC שכתב אנדרו אדי (אחד ממפתחי הליבה של ג'ומלה):
תודה למגיבים שעזרו לי להבין שגיבוב השטויות הזה לא אמיתי. באתרים מכובדים כגון זה אפשר לרשום שזהו מאמר ממומן מתחת לכותרת. זה לא יפגע באמינות האתר – להיפך.