ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
‫בעזרת‬ ‫ניידי×‬ ‫למכשיר×™×‬ ‫פיתוח‬
XAMARIN
78.40%
15.60%
3.20% 2.80%
‫סמרטפוני×‬ ‫מכירות‬ ‫שוק‬ ‫נתח‬2013
Android
iOS
Windows Phone
Others
‫הטרוגני‬ ‫שוק‬ ‫הו×‬ ‫הניידי×‬ ‫שוק‬
‫מקור‬:‫ויקיפדיה‬
‫הבעיה‬:‫סביבת‬ ‫פלטפורמה‬ ‫בכל‬
‫שונה‬ ‫פיתוח‬
‫ב×נדרו×יד‬:Java/C/C++‫×נדרו×יד‬ ‫×ו‬ ‫ב×קליפס‬
‫החדש‬ ‫סטודיו‬(‫ההפעלה‬ ‫מערכות‬ ‫לכל‬ ‫זמיני×‬)
‫ב‬-iOS: Objective C‫×ו‬Swift‫ב‬-Xcode(‫למק‬ ‫זמין‬
‫בלבד‬)
Windows Phone: C++/C#/JS‫בויז‬'‫סטודיו‬ ‫ו×ל‬
(‫ל‬ ‫זמין‬-Windows‫בלבד‬,‫ל‬ ‫לפתח‬ ‫רוצי×‬ ‫ו××‬-
Windows Phone 8‫על‬ ‫רק‬ ‫×ז‬Windows 8 Pro)
‫לכל‬ ‫×ותה‬ ‫ולקמפל‬ ‫×פליקציה‬ ‫לכתוב‬ ‫ניתן‬ ‫ל×‬
‫הפלטפורמות‬
‫טבעית‬ ‫×פליקציה‬ ‫פיתוח‬(native)
‫חסרונות‬ ‫יתרונות‬
‫גבוהה‬ ‫פיתוח‬ ‫עלות‬:‫צריך‬
‫ה×פליקציה‬ ‫×ותה‬ ‫×ת‬ ‫לפתח‬
‫שלוש‬ ‫×ו‬ ‫פעמיי×‬,‫לכל‬
‫בנפרד‬ ‫מערכת‬
‫בחנות‬ ‫למכור‬ ‫ניתן‬
‫ה×פליקציות‬
‫המשתמש‬ ‫ידי‬ ‫על‬ ‫לגילוי‬ ‫קל‬
‫לחומרה‬ ‫מל×ה‬ ‫גישה‬(GPS,
‫ת×וצה‬ ‫מד‬,‫וכו‬ ‫מצלמה‬'),
‫כתובות‬ ‫פנקס‬,‫יומן‬,API‫של‬
‫ההפעלה‬ ‫מערכת‬
‫ב×פליקציה‬ ‫טובי×‬ ‫ביצועי×‬
‫מורכבת‬
‫×פליקטיבי‬ ‫×תר‬ ‫×ו‬ ‫תוכן‬ ‫×תר‬
Weather.com ‫דוגמהâ¶Ä¬:SenchaTouch
‫יתרונות‬:‫זול‬ ‫פיתוח‬,‫לכל‬ ‫זמין‬
‫המערכות‬,‫ל‬ ‫גישה‬-GPS‫המכשיר‬ ‫של‬
‫ולג‬'‫ירוסקופ‬/‫ת×וצה‬ ‫מד‬.
‫חסרונות‬:‫×חרת‬ ‫לחומרה‬ ‫גישה‬ ‫×ין‬
(‫מצלמה‬,‫ועוד‬ ‫פל×ש‬),‫קשר‬ ‫ל×נשי‬,
‫יומן‬.‫בחנות‬ ‫למכור‬ ‫×פשרות‬ ‫×ין‬
‫×פליקציות‬.‫בדפדפן‬ ‫תלויי×‬ ‫ביצועי×‬
‫ל×ינטרנט‬ ‫החיבור‬ ‫ובמהירות‬.‫המשתמש‬
‫ה×תר‬ ‫×ת‬ ‫ב×ינטרנט‬ ‫לחפש‬ ‫צריך‬.‫מר×ה‬
‫טבעי‬ ‫ל×‬.
‫×פליקציית‬HTML‫המכשיר‬ ‫בתוך‬ ‫שרצה‬
‫דוגמהâ¶Ä¬:PhoneGap/Apache Cordova
‫יתרונות‬:‫ה‬ ‫מתחו×‬ ‫מוכרות‬ ‫טכנולוגיות‬-Web,
‫המכשיר‬ ‫מש×בי‬ ‫לכל‬ ‫גישה‬,‫ה×פליקציה‬
‫היישומי×‬ ‫בחנויות‬,‫נמוכה‬ ‫פיתוח‬ ‫עלות‬
‫חסרונות‬:‫המערכת‬ ‫בדפדפן‬ ‫תלויה‬ ‫מהירות‬
‫ה×ינטרנט‬ ‫חיבור‬ ‫ובמהירות‬,‫גישה‬ ‫של‬ ‫במקרה‬
‫מרכזי‬ ‫לשרת‬.‫נמוכה‬ ‫תגובה‬ ‫מהירות‬.‫מר×ה‬
‫למערכת‬ ‫טבעי‬ ‫ל×‬.‫זיכרון‬ ‫הרבה‬ ‫דורש‬,‫בעיקר‬
‫בג‬ ‫הרבה‬ ‫משתמשי×‬ ‫כ×שר‬'‫סקריפט‬ ‫×ווה‬,‫×ו‬
‫כמו‬ ‫בספרייה‬SenchaTouch.
‫בויז‬ ‫מובנית‬ ‫תמיכה‬ ‫מוסיפה‬ ‫מיקרוסופט‬'‫ו×ל‬
‫לקורדובה‬ ‫סטודיו‬,‫בשלב‬ ‫כרגע‬CTP.
‫מפרש‬ ‫ידי‬ ‫על‬ ‫המופעלת‬ ‫×פליקציה‬
‫דוגמהâ¶Ä¬:AppceleratorTitanium
‫יתרונות‬:‫טכנולוגיות‬Web,‫לכל‬ ‫גישה‬
‫המכשיר‬ ‫מש×בי‬,‫בחנויות‬ ‫ה×פליקציה‬
‫היישומי×‬.‫למערכת‬ ‫טבעי‬ ‫יותר‬ ‫מר×ה‬,
‫ל‬ ‫ישירה‬ ‫גישה‬ ‫עקב‬-API‫המכשיר‬ ‫של‬.
‫חסרונות‬:‫ב‬ ‫תמיכה‬-Windows Phone
‫מוגבלת‬,‫רשיון‬ ‫לקנות‬ ‫יש‬ ‫לעתי×‬
‫שימוש‬,‫טבעי‬ ‫ליישו×‬ ‫קרובי×‬ ‫ביצועי×‬
‫משתווי×‬ ‫ל×‬ ‫×ך‬.‫במידת‬ ‫להכיר‬ ‫צריך‬
‫ה‬ ‫×ת‬ ‫מה‬-API‫מערכת‬ ‫של‬ ‫הספציפי‬
‫ההפעלה‬.
‫לכל‬ ‫מקומפלת‬ ‫טבעית‬ ‫×פליקציה‬
‫בנפרד‬ ‫פלטפורמה‬
‫דוגמהâ¶Ä¬:Xamarin
‫יתרונות‬:‫טבעית‬ ‫×פליקציה‬
‫לגמרי‬–‫מר×ה‬,‫ביצועי×‬,‫גישה‬
‫וכו‬ ‫לחומרה‬'.‫קוד‬ ‫שיתוף‬ ‫×חוז‬
‫פלטפורמות‬ ‫בין‬ ‫גבוה‬,‫בעיקר‬
‫ב‬ ‫כשמשתמשי×‬-MVVM.
‫חסרונות‬:‫גבוה‬ ‫רישוי‬ ‫מחיר‬,‫×ין‬
‫בבל×קברי‬ ‫תמיכה‬(‫×בל‬
‫ביישומי‬ ‫תמיכה‬ ‫יש‬ ‫לבלק×ברי‬
‫×נדרו×יד‬.)
Xamarin
Xamarin‫פיתוח‬ ‫מ×פשרת‬
‫×חת‬ ‫×פליקציה‬,‫×חת‬ ‫בשפה‬
‫×והבי×‬ ‫שכולנו‬(C#),‫בסביבת‬
‫×חת‬ ‫פיתוח‬,‫כולנו‬ ‫×ותה‬ ‫שג×‬
‫×והבי×‬(‫ויז‬'‫סטודיו‬ ‫ו×ל‬),
‫ההפעלה‬ ‫מערכות‬ ‫לשלושת‬.
Xamarin‫דוט‬ ‫מעטפת‬ ‫הי×‬-‫ל‬ ‫נט‬-API‫מערכת‬ ‫כל‬ ‫של‬
‫ומערכת‬,‫ה‬ ‫×ת‬ ‫להכיר‬ ‫צורך‬ ‫יש‬ ‫ולכן‬-API‫ו‬ ‫×נדרו×יד‬ ‫של‬-
iOS‫בה‬ ‫להשתמש‬ ‫כדי‬.
Xamarin‫מה‬ ‫ניכר‬ ‫חלק‬ ‫של‬ ‫מימוש‬ ‫מספקת‬-BCL‫עבור‬
‫ו‬ ‫×נדרו×יד‬-iOS
Xamarin‫×חת‬ ‫×פליקציה‬ ‫לפתח‬ ‫מ×פשרת‬,‫תכנות‬ ‫בשפת‬
‫×חת‬,‫×חת‬ ‫פיתוח‬ ‫בסביבת‬,‫×נדרו×יד‬ ‫על‬ ‫שתפעל‬,iOS‫ו‬-
Windows Phone(‫וג×‬Windows Store)
Xamarin‫מספקת‬API‫ב‬ ‫משתמש‬ ‫ממשק‬ ‫לבניית‬ ‫×חיד‬-
XAML,‫מהחומרה‬ ‫לחלק‬ ‫ולגישה‬.
‫מהי‬Xamarin
‫הפיתוח‬ ‫סביבת‬
Visual Studio 2013 Update 2
Windows 8/8.1 Pro
‫של‬ ‫הרחבה‬Xamarin‫לויז‬'‫סטודיו‬ ‫ו×ל‬
‫של‬ ‫ההתקנה‬Xamarin‫×ת‬ ‫ג×‬ ‫מתקינה‬Android
SDK,Java JDK,Xamarin Studio
‫לפיתוח‬iOS‫מק‬ ‫מחשב‬ ‫ג×‬ ‫צריך‬,‫מק‬ ‫ג×‬ ‫×פשר‬
‫שעולה‬ ‫מיני‬600$(‫מרחיבי×‬ ‫××‬ ‫יותר‬ ‫קצת‬ ‫×ו‬
‫זיכרון‬),‫הפיתוח‬ ‫למחשב‬ ‫ברשת‬ ‫שמחובר‬
‫×פליקציה‬ ‫של‬ ‫×נטומיה‬(‫קוד‬ ‫שיתוף‬)
‫פלטפורמה‬ ‫לכל‬ ‫משתמש‬ ‫ממשק‬ ‫פרוייקט‬
‫פלטפורמה‬ ‫לכל‬ ‫לוגיקה‬ ‫פרוייקט‬.‫פרוייקטי‬ ‫כל‬
‫פיזיי×‬ ‫קוד‬ ‫קבצי‬ ‫ב×ות×‬ ‫משתמשי×‬ ‫הלוגיקה‬,‫דרך‬
‫קבצי×‬ ‫קישור‬
‫קבצי×‬ ‫לקישור‬ ‫טכניקות‬ ‫כמה‬ ‫יש‬,‫שימוש‬ ‫נר×ה‬
‫בהרחבה‬Shared Project Reference Manager
‫לויז‬'‫סטודיו‬ ‫ו×ל‬2013Update 2.
‫לכל‬ ‫ספציפי‬ ‫קוד‬ ‫בין‬ ‫מפריד‬ ‫מותנה‬ ‫הידור‬
‫פלטפורמה‬(#if __ANDROID__)
‫דוגמהâ¶Ä¬
‫×פליקציה‬ ‫של‬ ‫×נטומיה‬(PCL)
Portable Class Library‫היוצר‬ ‫פרוייקט‬ ‫סוג‬ ‫הו×‬
DLL‫דוט‬ ‫של‬ ‫שוני×‬ ‫פרופילי×‬ ‫לכמה‬ ‫המת××™×‬-‫נט‬
‫ב‬-PCL‫ב‬ ‫להשתמש‬ ‫ניתן‬-API‫בכל‬ ‫הקיי×‬
‫שנבחרו‬ ‫הפרופילי×‬.
‫החיסרון‬:‫ש×ינן‬ ‫בספריות‬ ‫להשתמש‬ ‫ניתן‬ ‫ל×‬
‫הפרופילי×‬ ‫בכל‬ ‫זמינות‬
MvvmCross
‫לממש‬ ‫המ×פשרת‬ ‫פתוח‬ ‫קוד‬ ‫ספריית‬MVVM‫ג×‬
‫ו‬ ‫ב×נדרו×יד‬-iOS
MVVM‫ב‬ ‫טבעי‬ ‫ב×ופן‬ ‫נתמך‬-Windows Phone‫ו‬-
Windows Store
PCL‫כ×שר‬ ‫קוד‬ ‫לשתף‬ ‫המועדפת‬ ‫הדרך‬ ‫זו‬
‫ב‬ ‫משתמשי×‬-MvvmCross.
‫מכ‬ ‫הקוד‬ ‫שיתוף‬ ‫×חוז‬ ‫×ת‬ ‫מעלה‬-70%‫לכ‬-90%
Xamarin.Forms‫של‬ ‫מהיכולות‬ ‫חלק‬ ‫מכסה‬
MvvmCross
MvvmCross
‫מלבד‬MVVM,‫ג×‬ ‫מספקת‬Dependency
Injection‫בגישה‬ ‫לתמיכה‬ ‫פל××’××™× ×™×‬ ‫כמה‬ ‫וג×‬
‫×חיד‬ ‫ב×ופן‬ ‫שוני×‬ ‫מערכת‬ ‫למש×בי‬
‫מה‬ ‫חלק‬ ‫מחליפה‬-API‫במימוש‬ ‫מערכת‬ ‫כל‬ ‫של‬
‫משלה‬ ‫×חיד‬,‫ל‬ ‫קור×‬ ‫הקלעי×‬ ‫שמ×חורי‬-API
‫מערכת‬ ‫בכל‬ ‫המת××™×‬(‫למשל‬,‫מסכי×‬ ‫בין‬ ‫מעבר‬)
Ninja Coder for MvvmCross–‫שמפשטת‬ ‫הרחבה‬
‫ע×‬ ‫העבודה‬ ‫×ת‬ ‫מ×וד‬MvvmCross
‫×פליקציה‬ ‫של‬ ‫×נטומיה‬(MvvmCross)
‫תיקיית‬ ‫פלטפורמה‬ ‫כל‬ ‫של‬ ‫בפרוייקט‬ ‫יוצר×™×‬Views‫שמי×‬ ‫ובה‬
‫המסכי×‬ ‫×ת‬,‫ומערכת‬ ‫מערכת‬ ‫כל‬ ‫של‬ ‫לטכנולוגיה‬ ‫בהת××‬.
‫ה‬ ‫בפרוייקט‬-PCL‫תיקיית‬ ‫שמי×‬ ‫המשותף‬ViewModels,‫ובה‬
‫מסך‬ ‫לכל‬ ‫המת×ימי×‬ ‫המודלי×‬.‫ש×‬ ‫לפי‬ ‫נעשית‬ ‫ההת×מה‬:‫למסך‬
MainView‫המודל‬ ‫מת××™×‬MainViewModel,‫וכד‬'.
‫ל‬ ‫במסך‬ ‫שדה‬ ‫כל‬ ‫מקשר×™×‬-Property‫במודל‬ ‫מת××™×‬,‫×ירוע‬ ‫וכל‬
‫לקבל‬ ‫שרוצי×‬(‫למשל‬ ‫כפתור‬ ‫על‬ ‫לחיצה‬)‫ל‬-Property‫מסוג‬
ICommand.
‫ב×נדרו×יד‬:View‫מ‬ ‫היורשת‬ ‫מחלקה‬ ‫הו×‬-Activity.‫ב‬-WP:View
‫קובץ‬ ‫הו×‬xaml‫וה‬-code behind‫שלו‬.‫ב‬-iOS:View‫מחלקה‬ ‫הו×‬
‫מ‬ ‫היורשת‬-UIController.
‫המקר×™×‬ ‫בכל‬,‫של‬ ‫מחלקה‬ ‫דרך‬ ‫מתבצעת‬ ‫הירושה‬MvvmCross,
‫הפלטפורמה‬ ‫של‬ ‫מהמחלקה‬ ‫היורשת‬.
‫דוגמהâ¶Ä¬
‫נוספי×‬ ‫דבר×™×‬
‫ל‬ ‫יש‬-Xamarin‫מיפוי‬ ‫פרוייקט‬,‫לעטוף‬ ‫שמ×פשר‬
‫ג‬ ‫ספריות‬ ‫×וטומטי‬ ‫ב×ופן‬'‫שלישי‬ ‫מצד‬ ‫×ווה‬
‫ל×נדרו×יד‬,‫×ו‬Objective C‫ל‬-iOS,‫בקוד‬C#
‫ב×פליקציה‬ ‫בהן‬ ‫להשתמש‬ ‫כדי‬ ‫תו××‬
‫ש×ינן‬ ‫שלישי‬ ‫צד‬ ‫ספריות‬PCL‫מת××™×‬ ‫בפרופיל‬
‫לפרופיל‬ ‫×ו‬ ‫לפלטפורמה‬ ‫מחדש‬ ‫לקמפל‬ ‫צורך‬ ‫יש‬
‫ה‬-PCL
MVVM Light:‫ספריית‬MVVM‫שתומכת‬ ‫נוספת‬
‫ב‬-Windows Phone‫ו‬-PCL
‫נוספי×‬ ‫דבר×™×‬
MonoCross:‫קוד‬ ‫לשיתוף‬ ‫נוסף‬ ‫פתרון‬,‫×ת‬ ‫מממש‬
MVC‫הפלטפורמות‬ ‫כל‬ ‫על‬.‫הו×ט‬ ‫שלו‬ ‫הפיתוח‬
‫ה×חרונות‬ ‫בשני×‬.
‫ש‬ ‫מכיוון‬-Xamarin‫על‬ ‫מבוסס‬Mono‫וסביבת‬
‫הפיתוח‬MonoDevelop,‫לכתוב‬ ‫ג×‬ ‫מ×פשר‬ ‫הו×‬
‫בדוט‬ ‫שולחניות‬ ‫תוכנות‬-‫ל‬ ‫נט‬-OS X‫ו‬-Windows,
‫ב‬-GTK#.‫לינוקס‬ ‫על‬ ‫ג×‬ ‫יפעל‬ ‫כנר×ה‬ ‫זה‬(‫ל×‬
‫בדקתי‬.)‫ל‬ ‫פיתוח‬-OS X‫המק‬ ‫בגרסת‬ ‫רק‬ ‫×פשרי‬.

More Related Content

Developing mobile apps using Xamarin (Hebrew)

  • 2. 78.40% 15.60% 3.20% 2.80% ‫סמרטפוני×‬ ‫מכירות‬ ‫שוק‬ ‫נתח‬2013 Android iOS Windows Phone Others ‫הטרוגני‬ ‫שוק‬ ‫הו×‬ ‫הניידי×‬ ‫שוק‬ ‫מקור‬:‫ויקיפדיה‬
  • 3. ‫הבעיה‬:‫סביבת‬ ‫פלטפורמה‬ ‫בכל‬ ‫שונה‬ ‫פיתוח‬ ‫ב×נדרו×יד‬:Java/C/C++‫×נדרו×יד‬ ‫×ו‬ ‫ב×קליפס‬ ‫החדש‬ ‫סטודיו‬(‫ההפעלה‬ ‫מערכות‬ ‫לכל‬ ‫זמיני×‬) ‫ב‬-iOS: Objective C‫×ו‬Swift‫ב‬-Xcode(‫למק‬ ‫זמין‬ ‫בלבד‬) Windows Phone: C++/C#/JS‫בויז‬'‫סטודיו‬ ‫ו×ל‬ (‫ל‬ ‫זמין‬-Windows‫בלבד‬,‫ל‬ ‫לפתח‬ ‫רוצי×‬ ‫ו××‬- Windows Phone 8‫על‬ ‫רק‬ ‫×ז‬Windows 8 Pro) ‫לכל‬ ‫×ותה‬ ‫ולקמפל‬ ‫×פליקציה‬ ‫לכתוב‬ ‫ניתן‬ ‫ל×‬ ‫הפלטפורמות‬
  • 4. ‫טבעית‬ ‫×פליקציה‬ ‫פיתוח‬(native) ‫חסרונות‬ ‫יתרונות‬ ‫גבוהה‬ ‫פיתוח‬ ‫עלות‬:‫צריך‬ ‫ה×פליקציה‬ ‫×ותה‬ ‫×ת‬ ‫לפתח‬ ‫שלוש‬ ‫×ו‬ ‫פעמיי×‬,‫לכל‬ ‫בנפרד‬ ‫מערכת‬ ‫בחנות‬ ‫למכור‬ ‫ניתן‬ ‫ה×פליקציות‬ ‫המשתמש‬ ‫ידי‬ ‫על‬ ‫לגילוי‬ ‫קל‬ ‫לחומרה‬ ‫מל×ה‬ ‫גישה‬(GPS, ‫ת×וצה‬ ‫מד‬,‫וכו‬ ‫מצלמה‬'), ‫כתובות‬ ‫פנקס‬,‫יומן‬,API‫של‬ ‫ההפעלה‬ ‫מערכת‬ ‫ב×פליקציה‬ ‫טובי×‬ ‫ביצועי×‬ ‫מורכבת‬
  • 5. ‫×פליקטיבי‬ ‫×תר‬ ‫×ו‬ ‫תוכן‬ ‫×תר‬ Weather.com ‫דוגמהâ¶Ä¬:SenchaTouch ‫יתרונות‬:‫זול‬ ‫פיתוח‬,‫לכל‬ ‫זמין‬ ‫המערכות‬,‫ל‬ ‫גישה‬-GPS‫המכשיר‬ ‫של‬ ‫ולג‬'‫ירוסקופ‬/‫ת×וצה‬ ‫מד‬. ‫חסרונות‬:‫×חרת‬ ‫לחומרה‬ ‫גישה‬ ‫×ין‬ (‫מצלמה‬,‫ועוד‬ ‫פל×ש‬),‫קשר‬ ‫ל×נשי‬, ‫יומן‬.‫בחנות‬ ‫למכור‬ ‫×פשרות‬ ‫×ין‬ ‫×פליקציות‬.‫בדפדפן‬ ‫תלויי×‬ ‫ביצועי×‬ ‫ל×ינטרנט‬ ‫החיבור‬ ‫ובמהירות‬.‫המשתמש‬ ‫ה×תר‬ ‫×ת‬ ‫ב×ינטרנט‬ ‫לחפש‬ ‫צריך‬.‫מר×ה‬ ‫טבעי‬ ‫ל×‬.
  • 6. ‫×פליקציית‬HTML‫המכשיר‬ ‫בתוך‬ ‫שרצה‬ ‫דוגמהâ¶Ä¬:PhoneGap/Apache Cordova ‫יתרונות‬:‫ה‬ ‫מתחו×‬ ‫מוכרות‬ ‫טכנולוגיות‬-Web, ‫המכשיר‬ ‫מש×בי‬ ‫לכל‬ ‫גישה‬,‫ה×פליקציה‬ ‫היישומי×‬ ‫בחנויות‬,‫נמוכה‬ ‫פיתוח‬ ‫עלות‬ ‫חסרונות‬:‫המערכת‬ ‫בדפדפן‬ ‫תלויה‬ ‫מהירות‬ ‫ה×ינטרנט‬ ‫חיבור‬ ‫ובמהירות‬,‫גישה‬ ‫של‬ ‫במקרה‬ ‫מרכזי‬ ‫לשרת‬.‫נמוכה‬ ‫תגובה‬ ‫מהירות‬.‫מר×ה‬ ‫למערכת‬ ‫טבעי‬ ‫ל×‬.‫זיכרון‬ ‫הרבה‬ ‫דורש‬,‫בעיקר‬ ‫בג‬ ‫הרבה‬ ‫משתמשי×‬ ‫כ×שר‬'‫סקריפט‬ ‫×ווה‬,‫×ו‬ ‫כמו‬ ‫בספרייה‬SenchaTouch. ‫בויז‬ ‫מובנית‬ ‫תמיכה‬ ‫מוסיפה‬ ‫מיקרוסופט‬'‫ו×ל‬ ‫לקורדובה‬ ‫סטודיו‬,‫בשלב‬ ‫כרגע‬CTP.
  • 7. ‫מפרש‬ ‫ידי‬ ‫על‬ ‫המופעלת‬ ‫×פליקציה‬ ‫דוגמהâ¶Ä¬:AppceleratorTitanium ‫יתרונות‬:‫טכנולוגיות‬Web,‫לכל‬ ‫גישה‬ ‫המכשיר‬ ‫מש×בי‬,‫בחנויות‬ ‫ה×פליקציה‬ ‫היישומי×‬.‫למערכת‬ ‫טבעי‬ ‫יותר‬ ‫מר×ה‬, ‫ל‬ ‫ישירה‬ ‫גישה‬ ‫עקב‬-API‫המכשיר‬ ‫של‬. ‫חסרונות‬:‫ב‬ ‫תמיכה‬-Windows Phone ‫מוגבלת‬,‫רשיון‬ ‫לקנות‬ ‫יש‬ ‫לעתי×‬ ‫שימוש‬,‫טבעי‬ ‫ליישו×‬ ‫קרובי×‬ ‫ביצועי×‬ ‫משתווי×‬ ‫ל×‬ ‫×ך‬.‫במידת‬ ‫להכיר‬ ‫צריך‬ ‫ה‬ ‫×ת‬ ‫מה‬-API‫מערכת‬ ‫של‬ ‫הספציפי‬ ‫ההפעלה‬.
  • 8. ‫לכל‬ ‫מקומפלת‬ ‫טבעית‬ ‫×פליקציה‬ ‫בנפרד‬ ‫פלטפורמה‬ ‫דוגמהâ¶Ä¬:Xamarin ‫יתרונות‬:‫טבעית‬ ‫×פליקציה‬ ‫לגמרי‬–‫מר×ה‬,‫ביצועי×‬,‫גישה‬ ‫וכו‬ ‫לחומרה‬'.‫קוד‬ ‫שיתוף‬ ‫×חוז‬ ‫פלטפורמות‬ ‫בין‬ ‫גבוה‬,‫בעיקר‬ ‫ב‬ ‫כשמשתמשי×‬-MVVM. ‫חסרונות‬:‫גבוה‬ ‫רישוי‬ ‫מחיר‬,‫×ין‬ ‫בבל×קברי‬ ‫תמיכה‬(‫×בל‬ ‫ביישומי‬ ‫תמיכה‬ ‫יש‬ ‫לבלק×ברי‬ ‫×נדרו×יד‬.)
  • 9. Xamarin Xamarin‫פיתוח‬ ‫מ×פשרת‬ ‫×חת‬ ‫×פליקציה‬,‫×חת‬ ‫בשפה‬ ‫×והבי×‬ ‫שכולנו‬(C#),‫בסביבת‬ ‫×חת‬ ‫פיתוח‬,‫כולנו‬ ‫×ותה‬ ‫שג×‬ ‫×והבי×‬(‫ויז‬'‫סטודיו‬ ‫ו×ל‬), ‫ההפעלה‬ ‫מערכות‬ ‫לשלושת‬.
  • 10. Xamarin‫דוט‬ ‫מעטפת‬ ‫הי×‬-‫ל‬ ‫נט‬-API‫מערכת‬ ‫כל‬ ‫של‬ ‫ומערכת‬,‫ה‬ ‫×ת‬ ‫להכיר‬ ‫צורך‬ ‫יש‬ ‫ולכן‬-API‫ו‬ ‫×נדרו×יד‬ ‫של‬- iOS‫בה‬ ‫להשתמש‬ ‫כדי‬. Xamarin‫מה‬ ‫ניכר‬ ‫חלק‬ ‫של‬ ‫מימוש‬ ‫מספקת‬-BCL‫עבור‬ ‫ו‬ ‫×נדרו×יד‬-iOS Xamarin‫×חת‬ ‫×פליקציה‬ ‫לפתח‬ ‫מ×פשרת‬,‫תכנות‬ ‫בשפת‬ ‫×חת‬,‫×חת‬ ‫פיתוח‬ ‫בסביבת‬,‫×נדרו×יד‬ ‫על‬ ‫שתפעל‬,iOS‫ו‬- Windows Phone(‫וג×‬Windows Store) Xamarin‫מספקת‬API‫ב‬ ‫משתמש‬ ‫ממשק‬ ‫לבניית‬ ‫×חיד‬- XAML,‫מהחומרה‬ ‫לחלק‬ ‫ולגישה‬. ‫מהי‬Xamarin
  • 11. ‫הפיתוח‬ ‫סביבת‬ Visual Studio 2013 Update 2 Windows 8/8.1 Pro ‫של‬ ‫הרחבה‬Xamarin‫לויז‬'‫סטודיו‬ ‫ו×ל‬ ‫של‬ ‫ההתקנה‬Xamarin‫×ת‬ ‫ג×‬ ‫מתקינה‬Android SDK,Java JDK,Xamarin Studio ‫לפיתוח‬iOS‫מק‬ ‫מחשב‬ ‫ג×‬ ‫צריך‬,‫מק‬ ‫ג×‬ ‫×פשר‬ ‫שעולה‬ ‫מיני‬600$(‫מרחיבי×‬ ‫××‬ ‫יותר‬ ‫קצת‬ ‫×ו‬ ‫זיכרון‬),‫הפיתוח‬ ‫למחשב‬ ‫ברשת‬ ‫שמחובר‬
  • 12. ‫×פליקציה‬ ‫של‬ ‫×נטומיה‬(‫קוד‬ ‫שיתוף‬) ‫פלטפורמה‬ ‫לכל‬ ‫משתמש‬ ‫ממשק‬ ‫פרוייקט‬ ‫פלטפורמה‬ ‫לכל‬ ‫לוגיקה‬ ‫פרוייקט‬.‫פרוייקטי‬ ‫כל‬ ‫פיזיי×‬ ‫קוד‬ ‫קבצי‬ ‫ב×ות×‬ ‫משתמשי×‬ ‫הלוגיקה‬,‫דרך‬ ‫קבצי×‬ ‫קישור‬ ‫קבצי×‬ ‫לקישור‬ ‫טכניקות‬ ‫כמה‬ ‫יש‬,‫שימוש‬ ‫נר×ה‬ ‫בהרחבה‬Shared Project Reference Manager ‫לויז‬'‫סטודיו‬ ‫ו×ל‬2013Update 2. ‫לכל‬ ‫ספציפי‬ ‫קוד‬ ‫בין‬ ‫מפריד‬ ‫מותנה‬ ‫הידור‬ ‫פלטפורמה‬(#if __ANDROID__)
  • 14. ‫×פליקציה‬ ‫של‬ ‫×נטומיה‬(PCL) Portable Class Library‫היוצר‬ ‫פרוייקט‬ ‫סוג‬ ‫הו×‬ DLL‫דוט‬ ‫של‬ ‫שוני×‬ ‫פרופילי×‬ ‫לכמה‬ ‫המת××™×‬-‫נט‬ ‫ב‬-PCL‫ב‬ ‫להשתמש‬ ‫ניתן‬-API‫בכל‬ ‫הקיי×‬ ‫שנבחרו‬ ‫הפרופילי×‬. ‫החיסרון‬:‫ש×ינן‬ ‫בספריות‬ ‫להשתמש‬ ‫ניתן‬ ‫ל×‬ ‫הפרופילי×‬ ‫בכל‬ ‫זמינות‬
  • 15. MvvmCross ‫לממש‬ ‫המ×פשרת‬ ‫פתוח‬ ‫קוד‬ ‫ספריית‬MVVM‫ג×‬ ‫ו‬ ‫ב×נדרו×יד‬-iOS MVVM‫ב‬ ‫טבעי‬ ‫ב×ופן‬ ‫נתמך‬-Windows Phone‫ו‬- Windows Store PCL‫כ×שר‬ ‫קוד‬ ‫לשתף‬ ‫המועדפת‬ ‫הדרך‬ ‫זו‬ ‫ב‬ ‫משתמשי×‬-MvvmCross. ‫מכ‬ ‫הקוד‬ ‫שיתוף‬ ‫×חוז‬ ‫×ת‬ ‫מעלה‬-70%‫לכ‬-90% Xamarin.Forms‫של‬ ‫מהיכולות‬ ‫חלק‬ ‫מכסה‬ MvvmCross
  • 16. MvvmCross ‫מלבד‬MVVM,‫ג×‬ ‫מספקת‬Dependency Injection‫בגישה‬ ‫לתמיכה‬ ‫פל××’××™× ×™×‬ ‫כמה‬ ‫וג×‬ ‫×חיד‬ ‫ב×ופן‬ ‫שוני×‬ ‫מערכת‬ ‫למש×בי‬ ‫מה‬ ‫חלק‬ ‫מחליפה‬-API‫במימוש‬ ‫מערכת‬ ‫כל‬ ‫של‬ ‫משלה‬ ‫×חיד‬,‫ל‬ ‫קור×‬ ‫הקלעי×‬ ‫שמ×חורי‬-API ‫מערכת‬ ‫בכל‬ ‫המת××™×‬(‫למשל‬,‫מסכי×‬ ‫בין‬ ‫מעבר‬) Ninja Coder for MvvmCross–‫שמפשטת‬ ‫הרחבה‬ ‫ע×‬ ‫העבודה‬ ‫×ת‬ ‫מ×וד‬MvvmCross
  • 17. ‫×פליקציה‬ ‫של‬ ‫×נטומיה‬(MvvmCross) ‫תיקיית‬ ‫פלטפורמה‬ ‫כל‬ ‫של‬ ‫בפרוייקט‬ ‫יוצר×™×‬Views‫שמי×‬ ‫ובה‬ ‫המסכי×‬ ‫×ת‬,‫ומערכת‬ ‫מערכת‬ ‫כל‬ ‫של‬ ‫לטכנולוגיה‬ ‫בהת××‬. ‫ה‬ ‫בפרוייקט‬-PCL‫תיקיית‬ ‫שמי×‬ ‫המשותף‬ViewModels,‫ובה‬ ‫מסך‬ ‫לכל‬ ‫המת×ימי×‬ ‫המודלי×‬.‫ש×‬ ‫לפי‬ ‫נעשית‬ ‫ההת×מה‬:‫למסך‬ MainView‫המודל‬ ‫מת××™×‬MainViewModel,‫וכד‬'. ‫ל‬ ‫במסך‬ ‫שדה‬ ‫כל‬ ‫מקשר×™×‬-Property‫במודל‬ ‫מת××™×‬,‫×ירוע‬ ‫וכל‬ ‫לקבל‬ ‫שרוצי×‬(‫למשל‬ ‫כפתור‬ ‫על‬ ‫לחיצה‬)‫ל‬-Property‫מסוג‬ ICommand. ‫ב×נדרו×יד‬:View‫מ‬ ‫היורשת‬ ‫מחלקה‬ ‫הו×‬-Activity.‫ב‬-WP:View ‫קובץ‬ ‫הו×‬xaml‫וה‬-code behind‫שלו‬.‫ב‬-iOS:View‫מחלקה‬ ‫הו×‬ ‫מ‬ ‫היורשת‬-UIController. ‫המקר×™×‬ ‫בכל‬,‫של‬ ‫מחלקה‬ ‫דרך‬ ‫מתבצעת‬ ‫הירושה‬MvvmCross, ‫הפלטפורמה‬ ‫של‬ ‫מהמחלקה‬ ‫היורשת‬.
  • 19. ‫נוספי×‬ ‫דבר×™×‬ ‫ל‬ ‫יש‬-Xamarin‫מיפוי‬ ‫פרוייקט‬,‫לעטוף‬ ‫שמ×פשר‬ ‫ג‬ ‫ספריות‬ ‫×וטומטי‬ ‫ב×ופן‬'‫שלישי‬ ‫מצד‬ ‫×ווה‬ ‫ל×נדרו×יד‬,‫×ו‬Objective C‫ל‬-iOS,‫בקוד‬C# ‫ב×פליקציה‬ ‫בהן‬ ‫להשתמש‬ ‫כדי‬ ‫תו××‬ ‫ש×ינן‬ ‫שלישי‬ ‫צד‬ ‫ספריות‬PCL‫מת××™×‬ ‫בפרופיל‬ ‫לפרופיל‬ ‫×ו‬ ‫לפלטפורמה‬ ‫מחדש‬ ‫לקמפל‬ ‫צורך‬ ‫יש‬ ‫ה‬-PCL MVVM Light:‫ספריית‬MVVM‫שתומכת‬ ‫נוספת‬ ‫ב‬-Windows Phone‫ו‬-PCL
  • 20. ‫נוספי×‬ ‫דבר×™×‬ MonoCross:‫קוד‬ ‫לשיתוף‬ ‫נוסף‬ ‫פתרון‬,‫×ת‬ ‫מממש‬ MVC‫הפלטפורמות‬ ‫כל‬ ‫על‬.‫הו×ט‬ ‫שלו‬ ‫הפיתוח‬ ‫ה×חרונות‬ ‫בשני×‬. ‫ש‬ ‫מכיוון‬-Xamarin‫על‬ ‫מבוסס‬Mono‫וסביבת‬ ‫הפיתוח‬MonoDevelop,‫לכתוב‬ ‫ג×‬ ‫מ×פשר‬ ‫הו×‬ ‫בדוט‬ ‫שולחניות‬ ‫תוכנות‬-‫ל‬ ‫נט‬-OS X‫ו‬-Windows, ‫ב‬-GTK#.‫לינוקס‬ ‫על‬ ‫ג×‬ ‫יפעל‬ ‫כנר×ה‬ ‫זה‬(‫ל×‬ ‫בדקתי‬.)‫ל‬ ‫פיתוח‬-OS X‫המק‬ ‫בגרסת‬ ‫רק‬ ‫×פשרי‬.

Editor's Notes

  • #13: לכ×ור×” ×”×™×” ×פשר לעשות פרוייקט Class Library ×¢× ×”×œ×•×’×™×§×” שיהיה משותף לכול×. למעשה, פרוייקט ×›×–×” מקומפל כנגד פרופיל דוט-נט ×חד, ומכיוון שכל פלטפורמה משתמשת בפרופיל שונה, ×œ× × ×™×ª×Ÿ להשתמש ב×ותו פרוייקט לפלפורמות שונות. מה ×’× ×©×œ×¢×ª×™× ×¦×¨יך לצר×£ ספריות ספציפיות לפלטפורמה, ×©×œ× ×§×™×™×ž×•×ª ב×חרות, כמו תמיכה ב-SQLite ב-WP, שקיימת ×וטומטית בזמרין. לכן השיתוף נעשה על ידי שיתוף קבצי קוד פיזיי×. ×‘×ž×§×•× ×”×™×“×•×¨ מותנה, עדיף להשתמש בטכניקות מתקדמות יותר כמו Dependency Injection ×ו Provider design pattern.
  • #15: PCL ×™×¦× ×‘×¡×‘×™×‘×•×ª 2011. יש ×פשרות להוסיף תמיכה בו ל-VS2010, ×•×”×•× × ×ª×ž×š מר×ש ב-VS2012/2013 ×›×שר יוצר×™× ×¤×¨וייקט PCL, צריך לבחור ב××™×–×” פר×•×¤×™×œ×™× ×”×•× ×™×ª×ž×•×š. Xamarin מכניס ×ת עצמו לרשימת ×”×פשרויות, ו××– ×פשר ליצור PCL שיתמוך ×’× ×‘×נדרו×יד ו/×ו iOS
  • #16: ב-iOS ×¢×•×‘×“×™× ×‘×©×™×˜×ª MVC ב×ופן טבעי. ב×נדרו×יד ×–×” די דומה ל-WinForms – מ×חור×™ כל מסך יש מחלקת Activity המשתמשת בו ומנהלת ×ותו Xamarin.Forms מ×פשר לכתוב ממשק משתמש משותף לכל הפלטפורמות ב-Xaml, ×בל ×¢× ×¤×§×“×™× ×©×œ זמרין
  • #17: Ninja Coder מ×פשר להוסיף פרוייקט, להוסיף מסך, להוסיף פל××’×ין, ועוד בלחיצת כפתור ×חת. ניתן להשתמש בספריית DI ×חרת, על ידי מימוש Interface של MvvmCross שמת×× ×ותה ×¢× MvvmCross חלק מהפל××’×™× ×™× ×©×œ MvvmCross ×—×•×¤×¤×™× ×œ×“×‘×¨×™× ×©×ž×¡×•×¤×§×™× ×¢×œ ידי Xamarin, כמו גישה למצלמה, GPS, קבצי×, SQLite.