Entwicklung einer Xamarin App mit Server Backend zum Sperren von Bankkarten

Entwicklung einer Xamarin App mit Server Backend zum Sperren von Bankkarten

Die Idee für mein Independent Coursework Projekt entspringt aus einer persönlichen Erfahrung: Meinem Vater wird im Urlaub das Portemonnaie samt Bankkarten geklaut und er möchte natürlich möglichst schnell die Bankkarten sperren, wozu ihm aber sowohl die Kartennummern als auch die Telefonnummern für die entsprechenden Sperrhotlines fehlen. Damit kam die Idee auf, genau an diesem Punkt anzusetzen und in Form einer mobilen App Hilfe zu schaffen. Für das Independent Coursework habe ich mir daher überlegt eine mobile App als Benutzeroberfläche sowie ein Backend Server System zu entwickeln, welches es ermöglicht die gespeicherten Daten verschlüsselt zu synchronisieren. Vor dem Hintergrund der Verteilung der Marktanteile zwischen Android und iOS erscheint es sinnvoll ein plattformübergreifendes Framework zu nutzen. Xamarin ist ein solches Framework, es ermöglicht die Entwicklung für Android, iOS sowie verschiedene weitere Plattformen mithilfe der .NET Programmiersprachen C# und F# über ein vollständiges Mapping der plattformspezifischen Schnittstellen. Mit Blick auf den Umfang des Independent Coursework wurde die App grundlegend plattformübergreifend entwickelt, der Fokus insbesondere auch bei User Interface lag jedoch auf Android.

Im ersten Schritt habe ich in Adobe XD die benötigten Screens erstellt, welche als Vorlage für die Benutzeroberfläche dienten. Um auch die Benutzeroberfläche über die Plattformen hinweg zu teilen, bietet Xamarin mit Xamarin.Forms ein entsprechendes Werkzeug, welches es ermöglicht die Benutzeroberfläche über XAML Markup zu definieren. Die einzelnen Steuerelemente werden dabei auf native Steuerelemente gemappt. Das App-Design für das Projekt wurde erst einmal für Android ausgelegt, lässt sich aber durch wenige Anpassungen auch unter iOS nutzen.

     

Für das Server Backend kommt ASP.NET Core zum Einsatz, damit fand die Entwicklung von Front- und Backend einheitlich in C# statt. Die REST API verfügt über Ressourcen für Karten, Nutzer und die Konfiguration mit Endpunkten für die verschiedenen Operationen. Im Code werden die Endpunkte mit den Rückgabewerten und Parametern über Annotationen die Methodensignatur festgelegt. Mit Swashbuckle wird aus dem Code automatisiert eine Swagger Datei erstellt, welche das Testen und Verwalten der Endpunkte erleichtert. Aus der Swagger Datei lässt sich mit Autorest wiederum automatisiert ein API Client für die Xamarin App erzeugen, welcher die REST API konsumiert. Für die Datenhaltung kommt sowohl in Front- als auch im Backend Entity Framework (EF) Core als ORM Framework zum Einsatz. EF Core bietet umfangreiche Möglichkeiten um strukturierte Daten vom Datenbanksystem abstrahiert abzuspeichern und abzufragen, im Backend werden dabei die Daten in einer SQLite Datenbank abgelegt, im Frontend dagegen in einer Azure SQL Database.

Um die Sicherheit der Kartendaten zu gewährleisten werden diese symmetrisch AES (256bit) verschlüsselt mit einem per PBKDF2 (Password-Based Key Derivation Function 2) aus dem Nutzer Passwort generierten Schlüssel. Kartendaten werden ausschließlich verschlüsselt übertragen, eine Entschlüsselung ist damit nur für den Nutzer mit Passwort möglich, der Betreiber kann die hinterlegten Daten nicht entschlüsseln.

Aus meinem Independent Coursework habe ich mitgenommen, dass Automatisierung (Swashbuckle, Autorest, EF Core Migrations) für enorme Zeiteinsparung sorgen kann, insbesondere bei agilen Arbeitsweisen ergibt sich ein großes Einsparpotenzial. Mit Dependency Injection ist es zudem besonders unkompliziert möglich eine lose Kopplung der einzelnen Komponenten zu erreichen. Die gewählten Technologien waren zudem sehr gut auf den Anwendungszweck zugeschnitten.