פיתוח אפליקציות מובייל חוצות-פלטפורמות עם .NET MAUI
אנו מפתחים אפליקציות מובייל חוצות-פלטפורמות על .NET MAUI — קוד בסיס יחיד עבור iOS, Android ו-Windows. אם הצוות שלך כבר משתמש ב-C# ו-ASP.NET Core, MAUI הוא הרחבה טבעית: אותם דפוסים, אותו מיכל DI, אותו NuGet. עבור ארגונים שבהם אפליקציית המובייל היא חזית (frontend) לשרת .NET, זו הדרך האופטימלית מבחינת איחוד צוותים ושימוש חוזר בקוד.
.NET MAUI הוא היורש הישיר של Xamarin.Forms, אך עם ארכיטקטורה מחודשת. במקום פרויקטים נפרדים לכל פלטפורמה — csproj יחיד עם תלותיות מותנות. משמעות הדבר היא appsettings.json אחד, מיכל DI אחד (Microsoft.Extensions.DependencyInjection), וסט מודלים אחד. המעבר מינימלי: הדפוסים זהים, הכלים (Visual Studio / Rider העדכניים) זהים.
מדוע .NET MAUI מהיר יותר מ-Xamarin.Forms?
MAUI משתמש ב-Handlers במקום Renderers, מה שמפחית את היררכיית התצוגה ב-2–3 רמות ומקטין את העומס ב-30–50%. בפועל, זה אומר גלילה חלקה יותר וצריכת זיכרון נמוכה יותר. Microsoft Learn: .NET MAUI Handlers.
היכן מתעוררות בעיות אמיתיות
Hot Reload מגיע עם הסתייגויות. XAML Hot Reload בגרסאות Visual Studio העדכניות מטפל היטב בשינויי סימון פשוטים. אך שינויים בקוד C# (code-behind) או במודלי תצוגה דורשים הפעלה מחדש — .NET Hot Reload ב-MAUI אינו אמין עבור היררכיות מורכבות. איטרציית ממשק המשתמש אורכת זמן רב יותר מאשר ב-Flutter או React Native.
גודל קובץ בינארי. קובץ APK בסיסי של .NET MAUI ללא trimming הוא 30–50 MB. עם PublishTrimmed=true ו-RuntimeIdentifier=android-arm64 ניתן לדחוס אותו ל-15–25 MB. עם זאת, trimming שובר את Reflection, שעליו מסתמכים חלק מחבילות NuGet. יש לבדוק כל חבילה לתאימות AOT/trimming.
NativeAOT על iOS זמין עם גרסת .NET העדכנית. הוא מספק זמן אתחול וגודל טובים יותר, אך דורש נטישה מוחלטת של Reflection בזמן ריצה. אם הפרויקט משתמש ב-System.Text.Json עם מחוללי קוד — מצוין. אם משתמשים ב-Newtonsoft.Json — הגירה היא חובה.
בדיקת תאימות trimming
הוסף `כיצד .NET MAUI מתמודד עם מצב לא מקוון?
אפליקציה ארגונית לפקחי שטח: עבודה לא מקוונת עם טפסים ותמונות, סנכרון כאשר הרשת זמינה. מחסנית: MAUI + EF Core SQLite + Polly לתור ניסיונות חוזרים + Microsoft.Maui.Essentials לגישה למצלמה ו-GPS. חלק ספציפי לפלטפורמה: רק גישה למערכת הקבצים (נתיבים שונים ב-iOS Documents לעומת Android GetExternalFilesDir). בהשוואה ל-Xamarin.Forms, נפח הקוד הספציפי לפלטפורמה ירד ב-40%. CI — Azure DevOps Pipelines עם dotnet publish משימות לכל פלטפורמה, חתימה דרך KeyVault.
מחסנית וארכיטקטורה
MVVM הוא התקן עבור MAUI. CommunityToolkit.Mvvm מכסה 90% מהצרכים: [ObservableProperty], [RelayCommand], [NotifyCanExecuteChangedFor] דרך מחוללי קוד. ללא boilerplate ידני של INotifyPropertyChanged.
ניווט Shell (Shell) למקרים סטנדרטיים; לניווט מורכב עם העברת אובייקטים — NavigationPage או ReactiveUI.Maui. Prism.Maui — אם הצוות מכיר אותו מ-WPF/UWP.
שכבת רשת — HttpClientFactory דרך DI, Refit עבור לקוחות REST טיפוסיים, Polly לניסיונות חוזרים/circuit breaker. לקוח gRPC דרך Grpc.Net.Client עובד על iOS ו-Android ללא הגדרה נוספת החל מגרסת .NET מסוימת.
מסד נתונים מקומי — SQLite-net-pcl למקרים פשוטים, LiteDB לאחסון מונחה-מסמכים. Entity Framework Core עם ספק SQLite עובד, אך בתרחישי trimming דורש EFCore.TrimmingSupport.
הודעות Push — Plugin.Firebase.CloudMessaging עבור FCM; APNs ב-iOS מוגדר דרך UNUserNotificationCenter ב-MauiProgram.cs.
אינטגרציית פלטפורמה
גישה ל-API מקוריים — דרך Microsoft.Maui.Essentials: מיקום גיאוגרפי, מד תאוצה, Bluetooth, מצלמה, ביומטריה (SecureStorage + Fingerprint). אם נדרשת גישה מעבר ל-Essentials — DependencyService עם מימושים ספציפיים לפלטפורמה או קריאה ישירה לקוד מקורי דרך #if ANDROID / #if IOS במחלקות partial.
Bindings ל-SDK מקוריים: ב-Android — Java/Kotlin Binding Library דרך Binding Project; ב-iOS — ObjectiveC/Swift Binding דרך ApiDefinitions.cs. ההליך עתיר עבודה אך מבוסס היטב.
לוחות זמנים
| היקף | לוח זמנים |
|---|---|
| MVP ארגוני, 8–12 מסכים | 8–14 שבועות |
| מוצר עם מצב לא מקוון וסנכרון | 4–7 חודשים |
| פלטפורמה עם אינטגרציה למערכות ארגוניות (SAP, 1C) | 6–12 חודשים |
העלות מחושבת באופן אישי לאחר ניתוח הדרישות ותשתית ה-.NET הקיימת של הלקוח. צור קשר להערכה ראשונית.
מה כלול בפיתוח
- קוד מקור במאגר (Git) עם היסטוריית commits;
- צינור CI/CD (Azure DevOps / GitHub Actions) עם חתימה ופריסה;
- תיעוד ארכיטקטורה ו-API;
- הגדרת App Store Connect ו-Google Play Console (חשבונות לקוח);
- הכשרת צוות התמיכה (2–3 מפגשים);
- אחריות לתיקון באגים תוך 30 יום לאחר המסירה.
הזמן פיתוח turnkey — קבל אפליקציה מוכנה לשחרור.
על מה אנו מתמקדים במהלך ביקורות
שלושה דברים שאנו רואים לרוב בפרויקטי MAUI ישנים: חוסר תאימות trimming (האפליקציה שוקלת 60+ MB), שימוש ב-Renderer מיושן מ-Xamarin.Forms במקום הגירה ל-Handler, ופעולות מסד נתונים סינכרוניות על שרשור ממשק המשתמש דרך EF Core ללא async/await. האחרון מבטיח ANR ב-Android. אנו עוזרים בהגירה ואופטימיזציה — כתוב לנו.







