Schlagwörter
Skills
In den letzten 8 Jahren habe ich eine Vielzahl von Projekten von der Konzeption der Architektur bis hin zum Deployment begleitet, sei es in der nativen App-Entwicklung, der Frontend-Entwicklung mit ECMAScript/Typescript, der Implementierung von Datenbank-Engines oder skalierbaren Synchronisations-Protokollen in C/C++ und der Test-Automatisierung.
Projekthistorie
Projektbeschreibung und Aufgaben
Für die native App einer datenintensiven ERP-Anwendung sollte eine effiziente und zuverlässige Echtzeit-Synchronisation zwischen App und Backend realisiert werden.
Über ein in C# neu entwickeltes WebSocket-basiertes Protokoll können für mobile Apps sehr große Datenmengen (über 1 Million Datensätze in über 120 Tabellen) effizient und ohne Nutzerinteraktion synchron gehalten werden.
Die ständig aufrechterhaltene WebSocket-Verbindung ermöglicht im Fall der Änderung einzelner Datensätze ein serverseitiges Pushen der Daten auf alle Geräte innerhalb von wenigen Sekunden.
Das Protokoll ermöglicht außerdem das Ausführen von C#-Skripten auf den Geräten für Fernwartungs- und Diagnose-Zwecke sowie eine Überwachung der Geräteparameter wie z.B. die Version des Betriebssystems, Speicherplatzauslastung oder vorgefallene Fehler auf den Geräten.
Umgesetzt wurde es mit einem Backend auf Basis von ASP.NET Core (.NET Core 3.1, später .NET 6) und einer Client-Library zur Integration in Xamarin-Apps sowie WPF-basierte Desktopanwendungen.
Technologien / Sprachen
C#, ASP.Net Core, WebSocket, Xamarin, MySQL
Projektbeschreibung und Aufgaben
Der Kunde benötigte auf verschiedenen technischen Plattformen und Formfaktoren jeweils Ticket- und Bestellsysteme mit identischer Businesslogik.
Für ein Ticketsystem-Framework sollte daher ein System konzipiert und entwickelt werden, mit dem die Business Logik möglichst deklarativ und sprachunabhängig beschrieben werden kann.
Die Datenquellen der Felder, der Formulare sowie die Events, die bei Zustandswechseln der Vorgänge ausgelöst werden, wurden mit einer Lisp-artigen Scripting-Sprache beschrieben.
Sowohl für das Web (serverseitig über PHP/Laravel) als auch für innerhalb nativer Apps (mittels C#/C++/Xamarin) wurden Interpreter entwickelt, um die Skriptsprache auf der jeweiligen Plattform auszuführen.
Technologien / Sprachen
Xamarin Forms C#, Mono, C++, Android, iOS, PHP 7, Zend Framework, Laravel, JQuery
Projektbeschreibung und Aufgaben
Um gemeinsame BDD- / Integrations-Tests für sowohl eine Xamarin-App als auch für Web-basierte Backend-Anwendungen erstellen zu können, wurde ein Skia-basiertes Backend für Xamarin Forms erstellt, das über eine ähnliche API wie Selenium angesprochen werden kann. Da somit keine echten Smartphones für die Tests benötigt werden, konnten die Tests auf einem Linux-Server einfacher und zuverlässiger ausgeführt werden.
Das Xamarin-Forms-Backend rendert in einen Framebuffer, um Video- / Screenshot-Erstellung während der Tests (besonders im Fehlerfall) zu ermöglichen.
Aus PHP / Behat heraus lassen sich so BDD-Tests in Gherkin- / Cucumber-Syntax ausführen, bei denen jede Test-Anweisung je nach Kontext entweder im Browser oder in der Xamarin-App ausgeführt wird.
Technologien / Sprachen
Skia, Framebuffer-Rendering, Gherkin, BDD, Selenium, Puppeteer, Layout-Engine, UI-Tests, Integration-Tests