

Waarom je Flutter of React Native zou moeten overwegen in plaats van .NET MAUI of .NET voor mobiel
Xamarin is de afgelopen 10 jaar een van de belangrijkste cross-platform frameworks voor mobiele apps geweest. Meer dan 15.000 organisaties wereldwijd hebben Xamarin-applicaties gebouwd en gebruikt.
Microsoft heeft echter besloten om de ondersteuning voor Xamarin vanaf 1 mei 2024 stop te zetten en te vervangen door .NET MAUI en .NET for Mobile. De impact zal merkbaar zijn vanaf 1 april 2024, aangezien de distributie van updates voor iOS vanaf die datum zal stoppen.
Xamarin migreren naar .NET MAUI of .NET voor Mobile?
De beslissing om bestaande Xamarin-apps te migreren naar .NET MAUI of .NET for Mobile is minder eenvoudig dan het lijkt. Onze ervaring bij ACA Mobile leert ons dat een herschrijving naar een ander platform vaak een betere keuze is. In deze blog geven we argumenten ten gunste van dit advies.
Waarom .NET MAUI en .NET Mobile geen goed alternatief zijn voor Xamarin
- De roadmap voor .NET MAUI en .NET for mobile(https://github.com/dotnet/maui/wiki/Roadmap) biedt weinig duidelijkheid en zekerheid op de lange termijn. Microsofts beslissing om Visual Studio for Mac, een essentiële tool voor iOS- en Mac-ontwikkeling, met pensioen te sturen, versterkt deze bezorgdheid en zendt gemengde signalen uit over hun toewijding aan cross-platform mobiele ontwikkeling. Bovendien gebruikt Microsoft zelf React Native voor cruciale mobiele applicaties zoals Microsoft Teams en Outlook. Daarom mist Microsoft een strategische focus op .NET MAUI en .NET for Mobile.
- Uit onze ervaring met migraties naar .NET MAUI en .NET for Mobile blijkt dat er nog veel problemen zijn in deze frameworks. Verdere stabilisatie en ontwikkeling zijn nodig om ze op het niveau van de concurrentie te brengen. We zien echter dat slechts een zeer beperkt aantal ontwikkelaars actief aan de slag gaat met het framework. Bij frameworks als Flutter en React Native zien we 3 tot 4 keer meer activiteit.
- De LTS-releases (Long-Term Support) van .NET MAUI voldoen niet aan de standaarden die we gewend zijn van volwassen frameworks. Hoewel de releasecyclus van .NET MAUI de normen van .NET volgt, is de ondersteuningsperiode korter. Dit resulteert in de noodzaak om .NET MAUI voortdurend bij te werken naar nieuwere versies.
- Er is een aanzienlijke daling in het aantal ontwikkelaars dat actief gebruikmaakt van Xamarin, .NET voor mobiel en .NET MAUI. Deze trend wijst op een afnemend vertrouwen in de gemeenschap, wat op lange termijn mogelijk kan leiden tot minder ondersteuning en innovatie.
De uitdagingen van het migreren van Xamarin naar .NET MAUI of .NET Mobile
Tegen de verwachtingen in is de migratie van Xamarin naar .NET MAUI of .NET for Mobile geen gestandaardiseerd proces. De documentatie is zeer beperkt en problemen moeten voornamelijk met vallen en opstaan worden ontdekt en opgelost. Dit leidt tot regressies, waarbij bepaalde functionaliteiten niet langer worden ondersteund, codeverduistering niet langer werkt, tooling niet beschikbaar is en bestaande pakketten niet langer compatibel zijn. Bovendien komen er regelmatig bugs in het .NET framework zelf aan het licht.
Bovendien is de app niet technisch beter na migratie; alle technische schuld blijft behouden en kan zelfs erger worden door het oplossen van bugs.
De kosten van de migratie, inclusief alle bugfixing, kunnen daarom aanzienlijk worden. Voor sommige van onze grotere projecten brengt dit een proces met zich mee waarbij meerdere ontwikkelaars gedurende meerdere maanden betrokken zijn.
Tot slot rijst de vraag of deze migratie een langetermijninvestering rechtvaardigt, gezien onze twijfels over de toekomst van .NET MAUI en .NET for Mobile.
Het alternatief: de Xamarin app herschrijven in React Native of Flutter
Vanuit onze ervaring zijn we ervan overtuigd dat het herschrijven van de Xamarin app met React Native of Flutter meer waar voor je geld biedt dan migreren naar .NET MAUI of .NET for Mobile.
Ten eerste bieden beide frameworks een volwassen basis met een langetermijnvisie en ondersteuning, waardoor de herschreven applicatie gemakkelijk te onderhouden, schaalbaar en klaar voor de toekomst is. Meer details over elk van deze frameworks zijn te vinden aan het einde van dit artikel.
Het herschrijven biedt ook de perfecte gelegenheid om de app aan te passen aan veranderende of nieuwe bedrijfsbehoeften. Het is niet alleen een technisch project, maar levert ook tastbare bedrijfswaarde op.
Bovendien is het kostenverschil tussen migreren en herschrijven kleiner dan je zou denken:
- We herbouwen alleen de app zelf, waardoor integraties met backendsystemen behouden blijven, wat resulteert in aanzienlijke besparingen. Zelfs als er een Backend-For-Frontend is gebruikt, kan deze behouden blijven.
- We baseren de herbouw op het ontwerp van de oude app, waardoor er geen nieuw analysewerk nodig is.
- Door met een nieuwe architectuur te beginnen, kunnen we alle bestaande technische schuld in één keer aanpakken. Dit betekent dat onderhoud en toekomstige uitbreidingen aanzienlijk eenvoudiger en dus goedkoper worden.
Samenvattend zien we dat het herschrijven van de Xamarin app in React Native of Flutter niet fundamenteel duurder hoeft te zijn dan een migratie naar .NET MAUI of .NET Mobile met bug fixing. Zeker als je kijkt naar de verbeterde onderhoudskosten, de langere levensduur van de app en de toegevoegde bedrijfswaarde.
De voordelen van Flutter
Overweeg je om van Xamarin naar Flutter te migreren? Een verstandige keuze, want Flutter biedt verschillende strategische voordelen:
- Toekomstbestendige technologie: Flutter geniet een sterke ondersteuning van Google, die als primaire bijdrager een zeer actieve ontwikkelgemeenschap heeft (1313 bijdragers, waarvan er 72 meer dan 50 commits hebben gemaakt). Google past het framework toe in hun eigen applicatieontwikkeling, waaronder applicaties als Google Classroom, YouTube Create, Google Ads en recentelijk in hun AI-toepassing Gemini voor het genereren van aangepaste UI's tijdens runtime. Dit geeft bedrijven de zekerheid dat Flutter een technologiestack is die op de lange termijn wordt onderhouden.
- Populariteit: Sinds de lancering in 2018 heeft Flutter gestaag marktaandeel gewonnen in cross-platform ontwikkeling. In 2020 was 1% van de apps in de App Store en 3% in Google Play geschreven in Flutter. In slechts drie jaar tijd is dit gestegen naar 9% en 19%. Het aandeel van Xamarin is daarentegen 4% gebleven.
- Unified User Experience: Flutter gebruikt zijn eigen rendering engine en beheert de UI volledig vanuit Flutter zelf. Dit zorgt voor een consistente gebruikerservaring tussen iOS en Android, zelfs bij verschillende besturingssystemen. Oudere OS-versies kunnen ook profiteren van nieuwe functies, wat zorgt voor een uniforme ervaring.
- Toegang tot de nieuwste functies: Hoewel niet alles out-of-the-box beschikbaar is door Flutter's unieke rendering engine, worden nieuwe features snel ondersteund door updates van het Flutter Framework. Het is altijd mogelijk om native componenten te schrijven en deze beschikbaar te maken binnen onze Flutter code, zodat essentiële functies direct toegankelijk zijn.
De voordelen van React Native
Migreren van Xamarin naar React Native is ook een slimme keuze vanwege de vele strategische voordelen die React Native biedt:
- Toekomstbestendige technologie: React Native is oorspronkelijk ontwikkeld door Meta om zichzelf als mobile-first bedrijf in de markt te positioneren. Er is een zeer actieve ontwikkelgemeenschap die bijdraagt aan de toekomst ervan (2604 medewerkers, waarvan 89 met meer dan 50 commits). Meta gebruikt React Native voor zijn eigen applicaties, zoals Facebook, Facebook Ads Manager, Oculus en Messenger Desktop. Microsoft investeert ook een aanzienlijke hoeveelheid energie en tijd in React Native en gebruikt het voor de ontwikkeling van toepassingen zoals Microsoft Office, Microsoft Store op Xbox en Power Apps. Dit geeft vertrouwen in de stabiliteit van het framework.
- Populariteit: Sinds de lancering in 2015 heeft React Native een snelle stijging in populariteit doorgemaakt. Het heeft al enkele jaren een stabiel marktaandeel in de ontwikkeling van mobiele applicaties. In 2020 was 8% van de apps in de App Store en 10% in de Google Play Store ontwikkeld met React Native. In slechts drie jaar tijd zijn deze percentages gestegen tot respectievelijk 13% en 18%.
- Gebruik van JavaScript/TypeScript: Dankzij het gebruik van zeer populaire programmeertalen is React Native zeer toegankelijk voor ontwikkelaars. Dit resulteert in een overvloed aan beschikbare ontwikkelaars die de applicatie gemakkelijk kunnen onderhouden omdat ze bekend zijn met de gebruikte taal.
- Toegang tot de nieuwste functies: Omdat React Native is gekoppeld aan de OS-componenten, kunnen applicaties die ermee zijn ontwikkeld direct en moeiteloos gebruikmaken van nieuwe functies zodra deze zijn geïntroduceerd. Er is bijvoorbeeld kant-en-klare ondersteuning voor een vernieuwingsfrequentie van 120 Hz. Daarnaast is het ook mogelijk om native componenten te schrijven en te integreren voor gebruik binnen React Native.
Conclusie
In het licht van de stopzetting van Xamarin en de complexe uitdagingen die gepaard gaan met de migratie naar .NET MAUI of .NET for Mobile, komt het herschrijven van Xamarin apps in React Native of Flutter naar voren als een strategisch en kosteneffectief alternatief. Beide frameworks bieden betrouwbare oplossingen met ondersteuning voor de lange termijn en zorgen voor eenvoudig onderhoud en schaalbaarheid.
ACA Group staat klaar om uw bedrijf te helpen weloverwogen beslissingen te nemen. Laten we samen de toekomst van uw applicaties vormgeven!
Wilt u het succes van uw mobiele Xamarin-applicaties op de lange termijn garanderen?
What others have also read


In deze technische blogpost wil ik het hebben over hoe je eenvoudige en flexibele ETL-gebaseerde anonimisering kunt opzetten. Waarom? Wel, ik had onlangs de gelegenheid om een klein proof of concept uit te voeren voor een klant. De klant wilde weten welke opties beschikbaar waren om interne gegevens te nemen, alle persoonlijk identificeerbare informatie (PII) te verwijderen of anonimiseren en deze op een eenvoudige manier en vorm beschikbaar te maken voor externe partijen. Na het verzamelen van verdere vereisten werd de context voor dit proof of concept als volgt gedefinieerd: Welke oplossing dan ook, het moet in staat zijn om gegevens te extraheren uit een on premise Oracle database . Het eindresultaat moet een set CSV-bestanden zijn in een Amazon S3-bucket . Tussen het ophalen van de Oracle-gegevens en het dumpen ervan in CSV-vorm op S3, moet er iets zijn dat PII-gegevens verwijdert/anonimiseert. Indien mogelijk moet de gekozen oplossing cloud native zijn. In deze 3-delige blogreeks leg ik uit hoe je eenvoudige en flexibele ETL-gebaseerde anonimisering opzet: Het onderzoek naar producten die gebruikt zouden kunnen worden om het probleem op te lossen. Controleer ook hoe geschikt ze zijn voor wat de proof of concept moet bereiken. Hoe het gekozen product gebruikt kan worden om een ETL pipeline te maken die aan de eisen voldoet. Daarnaast, hoe je een lokale Oracle database opzet in Docker die gebruikt kan worden als databron voor het data ingestion deel van het proof of concept (gewoon omdat dit zo'n PITA was om te doen). En of dit op een cloud native manier kan worden gedaan. Onderzoek Het onderzoeksdeel van het proof of concept bestaat uit 2 delen: Hoe haal je data uit een Oracle database, anonimiseer je het op de een of andere manier en sla je het op als een stel CSV bestanden in een S3 bucket aka het ETL gedeelte. Uitzoeken wat de beste manier is om de anonimisering uit te voeren. De gegevens extraheren, transformeren en opslaan Het probleem van de klant klonk meteen al opmerkelijk als iets dat je zou kunnen oplossen met een ETL-product: Extract Transform Load . Het onderzoeksgedeelte voor dit deel van het proof of concept zou zich dus concentreren op dit type product. Ik kreeg ook wat input van iemand in mijn team om eens te kijken naar singer.io , omdat dat iets was dat ze in het verleden met succes hadden gebruikt voor dit soort problemen. Als je naar de homepage van Singer kijkt, vallen een aantal dingen meteen op: Singer maakt gegevensextractie en -consolidatie mogelijk voor alle tools van je organisatie. De open-source standaard voor het schrijven van scripts die gegevens verplaatsen. Unix-geïnspireerd: Singer taps en targets zijn eenvoudige applicaties samengesteld met pipes. JSON-gebaseerd: Singer-toepassingen communiceren met JSON, waardoor ze eenvoudig te gebruiken en te implementeren zijn in elke programmeertaal. Singer is dus gewoon een specificatie, zij het geen officiële. Het is een eenvoudig, op JSON gebaseerd dataformaat en je kunt iets in dit formaat produceren (een tap in Singer terminologie) of het formaat consumeren (een target ). Je kunt deze taps en targets aan elkaar koppelen om gegevens van de ene locatie te halen en op een andere locatie op te slaan. Singer wordt standaard geleverd met een heleboel taps (meer dan 100) en targets (10). Deze taps en targets zijn geschreven in Python. Omdat het centrale punt van het systeem slechts een gegevensformaat is, is het vrij eenvoudig om er zelf een te schrijven of een bestaand formaat aan te passen. Bij het controleren van de taps zou de standaard Oracle-tap het Extract-gedeelte van ons proof of concept moeten dekken. Hetzelfde lijkt echter niet het geval te zijn voor het Load gedeelte als we kijken naar de standaard targets. Er is een CSV target , maar deze slaat de resultaten lokaal op, niet in een S3 bucket. Er is een optie om gewoon dit doel te gebruiken en de S3 upload zelf te doen nadat de ETL pijplijn is voltooid. Een andere optie zou zijn om het bestaande CSV target aan te passen en de bestandsopslag te veranderen naar S3. Even Googelen levert een door de gemeenschap gemaakt S3 CSV Singer doel op. Volgens de documentatie zou dit target precies moeten doen wat we willen. Oeps, Singer transformeert niet Met de Extract en Load delen gedekt, blijft alleen het Transform deel van de ETL pijplijn over om uit te zoeken... en dit is waar het een beetje vreemd wordt. Ook al is Singer geclassificeerd als een ETL tool, het lijkt geen ondersteuning te hebben voor het transformatie gedeelte? Toen ik hier verder naar keek, kwam ik deze onheilspellend getitelde post tegen: Why our ETL tool does not do transformations . Als ik dit lees, lijkt het erop dat ze hun JSON specificatie/gegevensformaat beschouwen als het transformatiegedeelte. Dus ze ondersteunen transformatie naar ruwe gegevens en het opslaan ervan, maar ondersteunen geen andere soorten transformaties. Dat deel mag je zelf doen nadat het ergens is opgeslagen door een Singer-doel. Het blijkt dus dat Singer meer lijkt op het EL deel van een ELT product dan op een "old school" ETL product . Op dit punt zou Singer in ieder geval voldoende moeten zijn om de gegevens uit een Oracle database te halen en in CSV-formaat in een S3 bucket te zetten. En omdat Singer vrij eenvoudig, open en uitbreidbaar is, laat ik het hier voorlopig bij. Laten we verder kijken naar de anonimiseringsopties die in deze Singer-context zouden kunnen passen. Gegevens anonimiseren Net als bij het ETL-gedeelte, kreeg ik ook voor dit gedeelte wat input die me wees op Microsoft Presidio . Op de homepage kunnen we het volgende lezen: Het biedt snelle identificatie- en anonimiseringsmodules voor privé-entiteiten in tekst en afbeeldingen , zoals creditcardnummers, namen en meer. Het faciliteert zowel volledig geautomatiseerde als semi-geautomatiseerde PII de-identificatiestromen op meerdere platforms. Aanpasbaarheid in PII-identificatie en -anonimisering. Er staan dus veel veelbelovende dingen in die me zouden kunnen helpen bij het oplossen van mijn anonimiseringsbehoeften. Bij nader onderzoek lijkt het erop dat ik dit product evalueer tijdens een grote transformatie (snap je? 😉 ) van V1 naar V2. V1 bevatte wat ETL-achtige dingen zoals het ophalen van gegevens uit bronnen (hoewel Oracle-ondersteuning in de roadmap nooit lijkt te zijn gerealiseerd ) en het opslaan van geanonimiseerde resultaten in een aantal vormen/locaties. V2 heeft deze aanpak echter volledig losgelaten en concentreert zich puur op het detecteren en vervangen van PII-gegevens. In de kern is Presidio V2 een op Python gebaseerd systeem dat bovenop een AI-model is gebouwd. Dit stelt het in staat om automatisch PII-gegevens te ontdekken in tekst en afbeeldingen en deze te vervangen volgens de regels die je definieert. Ik heb wat tests gedaan met behulp van hun online testtool en het werkt min of meer, maar voor onze specifieke context moet het zeker worden aangepast. Als we kijken naar de meegeleverde testgegevens, lijkt het erop dat het vooral eenvoudige en korte gegevens zijn, maar geen grote tekstblokken of afbeeldingen. Dit roept de vraag op: zelfs als we Presidio kunnen configureren om te doen wat we willen, slaan we misschien kleine spijkers met een grote hamer? Is Presidio te veel? Laten we hier nog eens over nadenken. Als we gemakkelijk kunnen weten en definiëren welke eenvoudige kolommen in welke tabellen moeten worden geanonimiseerd en wanneer gewoon nulling of hashing van de kolomwaarden voldoende is, dan hebben we het autodetectie deel van Presidio niet nodig. We hebben ook geen Presidio-ondersteuning nodig voor volledige tekst of afbeeldingen en we hebben ook geen fancy substitutie-ondersteuning nodig. Presidio zou een krachtige bibliotheek kunnen zijn om een automatische anonimiseringsstap te maken voor onze Singer-gebaseerde pijplijn. Het helpt ook dat Presidio gebaseerd is op Python. Maar mijn gevoel zegt dat ik misschien eerst moet proberen om een iets eenvoudigere oplossing te vinden. Ik begon te zoeken naar iets dat een eenvoudige PII-vervanging kan doen en dat werkt in een Singer tap/target context. Ik vond deze Github repository: pipelinewise-transform-field . In de documentatie staat "Transformatiecomponent tussen Singer taps en targets". Klinkt verdacht veel als het " T " deel dat Singer als een ETL miste! Verderop in de configuratiesectie lezen we zelfs: "Je moet definiëren welke kolommen door welke methode moeten worden getransformeerd en in welke conditie de transformatie moet worden toegepast." en de mogelijke transformatietypes zijn: SET-NULL : transformeert elke invoer naar NULL HASH : transformeert stringinvoer naar hash HASH-SKIP-FIRST-n : Transformeert stringinvoer naar hash waarbij de eerste n tekens worden overgeslagen, bijv. HASH-SKIP-FIRST-2 MASK-DATE : Vervangt de maand- en dagdelen van datumkolommen door 1 jan. MASK-NUMBER : Zet elke numerieke waarde om in nul. MASK-HIDDEN : verandert een willekeurige tekenreeks in 'verborgen'. Dit lijkt volledig te voldoen aan onze eenvoudige anonimiseringseisen! We kunnen zelfs zien hoe we het moeten gebruiken in de context van Singer: some-singer-tap | transform-field --config [config.json] | some-singer-target Standaard Conclusie We hebben nu alle stukjes van de puzzel voor het opzetten van eenvoudige en flexibele ETL-gebaseerde anonimisering. In de volgende blogpost laten we zien hoe ze in elkaar passen en of ze de resultaten opleveren die de klant zoekt.
Lees verder

We zijn als ACA Group officieel ISO 27001 compliant! Onze Information Security Manager Simon Vercruysse legt uit wat die certificatie precies inhoudt en wat de voordelen zijn voor jouw (toekomstige) project.
Lees verder

CloudBrew is altijd een hoogtepunt op onze kalender geweest, maar de editie van 2025 voelde anders. Misschien lag het aan de timing. Slechts een maand eerder, in november 2025, opende de Azure Belgium Central-regio eindelijk haar deuren. ACA opereert al altijd vanuit het hart van Europa, dus het live gaan van deze grote nationale mijlpaal net voor de conferentie zorgde voor een extra dosis enthousiasme.
Lees verderWant to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

.png)
