none
מה זה MVVM RRS feed

  • שאלה

  • שלום,

    לאחר הפוגה קלה שנגרמה בגלל היותי בצבא.

    טוב.. העמקתי מעט binding ומשם הצצתי מעט ל MVVM.

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

    מה זה MVVM ? אני הבנתי שזו פשוט צורת חשיבה. זה הכל.

    ואז הגיע הקטע נשל התשתית. ראיתי כמה שמות כמו Prism ו - caliburn  - תשתית זה אומר הגבלות ע"מ שתתכנת לפי צורת החשיבה הזו?

    ושמשהו יגאל אותי פעם אחת ולתמיד מהבורות הזו: מה זה design pattren.

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

    יום שלישי 24 ספטמבר 2013 18:42

תשובות

כל התגובות

  • Model-View-ViewModel

    זו ארכיטקטורת פיתוח שמבוססת על הפרדת חלקים שונים בפיתוח על פי האופי של השימוש בהם. אני אוהב לקרוא לזה הפרדת רשויות.

    אם אני חייב לנסות לסכם כמה שעות של הרצאה למשפט כללי אחד ,אז הייתי אומר ש: מדובר ברעיון של הפרדת החלק האחראי על ה GUI (יקרא VIEW) מהחלק האחראי על מבנה האלמנטים (לו קוראים MODEL). במשפט הרחבה ניתן להוסיף שלשם נוחות מקיימיים חלק שלישי בו מחזיקים קשרים ואלמנטים וירטואליים. הכוונה לא לוירטואלי במובן של הפיתוח אלא וירטואלי במובן שאלו אינם אלמנטים אמיתיים... למשל אם עובדים עם מסד נתונים אז ה Model יכול להיות מחלקה התואמת לטבלה במסד הנתונים ואז ה ViewModel יכולים להיות למשל מחלקה שעושה שימוש במחלקות של ה Model על מנת ליצור אלמנט שיותר מתאים במבנה לזה שאנחנו צריכים באפליקציה שלנו.

    זו ארכיטקטורה מאוד וותיקה שמייקרוסופט הכניסה בשנים האחרונות בצורה מובנית לכמה טכנולוגיות כמו למשל WPF או WEB FORM  ועוד... ישנה ארכיטקטורה הרבה יותר מוכרת שהיא הבסיס של MVVN והיא ה MVC שהיא ההפרדה Model–view–controller.

    אני ממליץ לך להעזר בגוגל למידע יותר מפורט.

    * אם אתה מפתח אפליקציות WEB אז אני ממליץ על שימוש בטכנולוגיה של MVC שמבוססת כמובן על הארכיטקטורה של MVC והיא תת טכנולוגיה של asp.net (טכנולוגיה נוספת שהיא תת טכנולוגיה של asp.net היא ה web form שהזכרתי קודם). תוכל לקרוא הרבה יותר באתר הרשמי שכולל מאות סירטונים ופרוייקטים ללימוד של צעד אחרי צעד כאן:
    http://www.asp.net/mvc

    * אם אתה מחפש לפתח אפליקציות חלונאיות, אז אתה יכול לראות סדרה של סירטונים מעולים בנושא, בטכנולוגיית WPF כאן:
    http://www.youtube.com/watch?v=EpGvqVtSYjs


    signature

    • הוצע כתשובה על-ידי ipdd יום רביעי 25 ספטמבר 2013 08:39
    יום שלישי 24 ספטמבר 2013 19:48
    מנחה דיון
  • ראשית, תודה, כרגיל.

    שנית, אני נזכר שכתשבת לי פעם שאתה מפתח ב-MCV - זה אומר שאתה לא ממליץ לפתח ב-MVVM ?  קראתי באיזה מקום שזה ארכיטקטורה מאוד קשוחה ובגלל זה אנשים מתקשים לעבוד איתה.

    אני מתחיל בC# ועד עתה התמקדתי ב-WPF - למה? אני חושב שזה פשוט מה שנפל לי לידיים, האם לדעתך אני צריך להתחיל להתמקד בארטקטורת פיתוח כלשהיא? או שלבנתיים לזרום עם תיכנות בסגנון "חופשי"? ואם כן מתי אני צריך להתחיל להצימד לארכיטקטורה כלשהיא?

    אף פעם לא היו לי כ"כ הרבה שאלות "לא תיכנותיות" על תיכנות ><

    יום רביעי 25 ספטמבר 2013 09:59
  • כן הטכנולוגיה המומלצת על ידי היא MVC שהיא כמו שכתבתי מעל מבוססת על הארכיטקטורה של MVC (אנשים שמתקשים רק אלו שלא לומדים... לוקח שעה אחת להבין את כל הרעיון ואז נשאר לממש אותו כמובן... אבל אנשים מחפשים ללחוץ על כפתור ולקבל הכל מוכן ולכן הם צריכים ללמוד על הכלים שאחרים הכינו להם). כרגע אני אדבר על הכלים המוכנים של מייקרוסופט מפני שזה מה שאתה מחפש בשלב זה של הלימוד.

    MVVM היא ארכיטקטורה ולא טכנולוגיה

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

    לסיכום: אני ממליץ על ארכיטקטורת MVC או MVVC בעקרון
    בפיתוח WEB (או asp.net) הטכנולוגיה המובנית לארכיטקטורת הפרדת הרשויות היא טכנולוגיית MVC
    בפיתוח WPF האריכטקטורה המובנית יותר לעבודה עם הפרדת הרשויות היא MVVC ולכן בה עלייך להתמקד כרגע

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


    [Personal Site] [Blog] [Facebook]signature

    • נערך על-ידי pituachMVP, Moderator יום רביעי 25 ספטמבר 2013 11:01 תיקון: רשמתי הפוך לגבי MVVM בטעות
    יום רביעי 25 ספטמבר 2013 10:54
    מנחה דיון
  • אוקי, אז אני מבין ש- MCV(model,controller, view) ו- MVVM(model-View-ViewModer) הן שתי ארכיטקטורות פיתוח, כלומר אתה מגביל את עצמך  ב"חוקים"  שעל פיהם אתה מתכנת ע"מ להשיג יתרונות תיכנותיים כמו הפרדה גבוהה בין UI ללוגיקה אפשרות של טסטים עצמאיים(במקרה של MVVM).

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

    כמו כן, אם אני מתמקד ב-WPF לעת עתה אז אתה ממליץ לתכנת ע"פ ארכיטקטורת MVVM?

    יום רביעי 25 ספטמבר 2013 12:34
  • צודק בעקרון

    [Personal Site] [Blog] [Facebook]signature

    • סומן כתשובה על-ידי Juda Michael יום רביעי 25 ספטמבר 2013 13:34
    יום רביעי 25 ספטמבר 2013 13:18
    מנחה דיון
  • אוקי, אם כך אז אני אתמקד ב-MVVM ל-WPF ובהמשך (הרחוק) אגיע גם ל-MCV ל-WEB.

    תודה

    יום רביעי 25 ספטמבר 2013 13:34
  • בכיף :-)

    תבדוק את הסירטונים בקישור הראשון שהבאתי, הם ניראים טוב מאוד להתחלה (בדקתי רק את הראשון ורק כמה דקות אבל אפשר להתרשם בהחלט לטובה)


    [Personal Site] [Blog] [Facebook]signature

    יום רביעי 25 ספטמבר 2013 15:36
    מנחה דיון