SlideShare ist ein Scribd-Unternehmen logo
1 von 20
‫בעזרת‬ ‫ניידים‬ ‫למכשירים‬ ‫פיתוח‬
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‫המק‬ ‫בגרסת‬ ‫רק‬ ‫אפשרי‬.

Weitere ähnliche Inhalte

Ähnlich wie Developing mobile apps using Xamarin (Hebrew)

דמואים, הדגמות קוד ומסגרות פיתוח חדשניים בטכנולוגיות ווב פתוחות
 דמואים, הדגמות קוד ומסגרות פיתוח חדשניים בטכנולוגיות ווב פתוחות דמואים, הדגמות קוד ומסגרות פיתוח חדשניים בטכנולוגיות ווב פתוחות
דמואים, הדגמות קוד ומסגרות פיתוח חדשניים בטכנולוגיות ווב פתוחותIsraeli Internet Association technology committee
 
Introduction To Malware Analysis & Reverse Engineering
Introduction To Malware Analysis & Reverse EngineeringIntroduction To Malware Analysis & Reverse Engineering
Introduction To Malware Analysis & Reverse Engineeringyarden hanan
 
Introduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringIntroduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringyarden hanan
 
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)tchanim
 
Introduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringIntroduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringyarden hanan
 
שרת לינוקס המשמש להפעלת שוחן עבודה מרוחק במעבדת מחשבים של תחנות חלשות
שרת לינוקס המשמש להפעלת שוחן עבודה מרוחק במעבדת מחשבים של תחנות חלשותשרת לינוקס המשמש להפעלת שוחן עבודה מרוחק במעבדת מחשבים של תחנות חלשות
שרת לינוקס המשמש להפעלת שוחן עבודה מרוחק במעבדת מחשבים של תחנות חלשותNadav Kavalerchik
 
107 HTML & CSS
107 HTML & CSS107 HTML & CSS
107 HTML & CSSEran Lahav
 
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצהסמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצהHillel Kobrovski
 
IBM WebSphere Portal 6.1 - Executive Overview
IBM WebSphere Portal 6.1 - Executive OverviewIBM WebSphere Portal 6.1 - Executive Overview
IBM WebSphere Portal 6.1 - Executive OverviewDvir Reznik
 

Ähnlich wie Developing mobile apps using Xamarin (Hebrew) (20)

It trends
It trendsIt trends
It trends
 
Sergata
SergataSergata
Sergata
 
Sergata
SergataSergata
Sergata
 
Plus.Tech
Plus.TechPlus.Tech
Plus.Tech
 
HTML5, ווב נייד ותקנים פתוחים ברשת
HTML5, ווב נייד ותקנים פתוחים ברשת HTML5, ווב נייד ותקנים פתוחים ברשת
HTML5, ווב נייד ותקנים פתוחים ברשת
 
דרושים בתחום התוכנה - ספטמבר 2015
דרושים בתחום התוכנה - ספטמבר 2015דרושים בתחום התוכנה - ספטמבר 2015
דרושים בתחום התוכנה - ספטמבר 2015
 
Macroscop VMS
Macroscop VMSMacroscop VMS
Macroscop VMS
 
דמואים, הדגמות קוד ומסגרות פיתוח חדשניים בטכנולוגיות ווב פתוחות
 דמואים, הדגמות קוד ומסגרות פיתוח חדשניים בטכנולוגיות ווב פתוחות דמואים, הדגמות קוד ומסגרות פיתוח חדשניים בטכנולוגיות ווב פתוחות
דמואים, הדגמות קוד ומסגרות פיתוח חדשניים בטכנולוגיות ווב פתוחות
 
Introduction To Malware Analysis & Reverse Engineering
Introduction To Malware Analysis & Reverse EngineeringIntroduction To Malware Analysis & Reverse Engineering
Introduction To Malware Analysis & Reverse Engineering
 
Introduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringIntroduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineering
 
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
 
Introduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineeringIntroduction to malware analysis & reverse engineering
Introduction to malware analysis & reverse engineering
 
שרת לינוקס המשמש להפעלת שוחן עבודה מרוחק במעבדת מחשבים של תחנות חלשות
שרת לינוקס המשמש להפעלת שוחן עבודה מרוחק במעבדת מחשבים של תחנות חלשותשרת לינוקס המשמש להפעלת שוחן עבודה מרוחק במעבדת מחשבים של תחנות חלשות
שרת לינוקס המשמש להפעלת שוחן עבודה מרוחק במעבדת מחשבים של תחנות חלשות
 
107 HTML & CSS
107 HTML & CSS107 HTML & CSS
107 HTML & CSS
 
Mobile Interface
Mobile InterfaceMobile Interface
Mobile Interface
 
Html5
Html5Html5
Html5
 
HTML5, ווב נייד ותקנים פתוחים ברשת
HTML5, ווב נייד ותקנים פתוחים ברשתHTML5, ווב נייד ותקנים פתוחים ברשת
HTML5, ווב נייד ותקנים פתוחים ברשת
 
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצהסמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
סמינר: הילל קוברובסקי - הגנת סייבר ברמת תחנת הקצה
 
IBM WebSphere Portal 6.1 - Executive Overview
IBM WebSphere Portal 6.1 - Executive OverviewIBM WebSphere Portal 6.1 - Executive Overview
IBM WebSphere Portal 6.1 - Executive Overview
 
מכשירים חדשים - עתיד הווב הנייד
מכשירים חדשים - עתיד הווב הנייד מכשירים חדשים - עתיד הווב הנייד
מכשירים חדשים - עתיד הווב הנייד
 

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‫המק‬ ‫בגרסת‬ ‫רק‬ ‫אפשרי‬.

Hinweis der Redaktion

  1. לכאורה היה אפשר לעשות פרוייקט Class Library עם הלוגיקה שיהיה משותף לכולם. למעשה, פרוייקט כזה מקומפל כנגד פרופיל דוט-נט אחד, ומכיוון שכל פלטפורמה משתמשת בפרופיל שונה, לא ניתן להשתמש באותו פרוייקט לפלפורמות שונות. מה גם שלעתים צריך לצרף ספריות ספציפיות לפלטפורמה, שלא קיימות באחרות, כמו תמיכה ב-SQLite ב-WP, שקיימת אוטומטית בזמרין. לכן השיתוף נעשה על ידי שיתוף קבצי קוד פיזיים. במקום הידור מותנה, עדיף להשתמש בטכניקות מתקדמות יותר כמו Dependency Injection או Provider design pattern.
  2. PCL יצא בסביבות 2011. יש אפשרות להוסיף תמיכה בו ל-VS2010, והוא נתמך מראש ב-VS2012/2013 כאשר יוצרים פרוייקט PCL, צריך לבחור באיזה פרופילים הוא יתמוך. Xamarin מכניס את עצמו לרשימת האפשרויות, ואז אפשר ליצור PCL שיתמוך גם באנדרואיד ו/או iOS
  3. ב-iOS עובדים בשיטת MVC באופן טבעי. באנדרואיד זה די דומה ל-WinForms – מאחורי כל מסך יש מחלקת Activity המשתמשת בו ומנהלת אותו Xamarin.Forms מאפשר לכתוב ממשק משתמש משותף לכל הפלטפורמות ב-Xaml, אבל עם פקדים של זמרין
  4. Ninja Coder מאפשר להוסיף פרוייקט, להוסיף מסך, להוסיף פלאגאין, ועוד בלחיצת כפתור אחת. ניתן להשתמש בספריית DI אחרת, על ידי מימוש Interface של MvvmCross שמתאם אותה עם MvvmCross חלק מהפלאגינים של MvvmCross חופפים לדברים שמסופקים על ידי Xamarin, כמו גישה למצלמה, GPS, קבצים, SQLite.