Apriko: eine durchgängig KI-agentenfähige Plattform
Apriko nutzt seine modellgetriebene Architektur, damit KI-Agenten Daten sicher lesen, prüfen und verarbeiten können.
Apriko nutzt seine modellgetriebene Architektur, damit KI-Agenten Daten sicher lesen, prüfen und verarbeiten können.
Im Kongresshaus Zürich wurden am 19. November 2024 die besten Softwarelösungen der Schweiz ausgezeichnet. Besonders strahlend: Das Start-up Apriko, das mit Gold in der Kategorie Business Solutions und Silber in der Kategorie Cloud Native Solutions gleich doppelt überzeugte.

In der modernen Softwareentwicklung, insbesondere in Microservices-Architekturen, ist die Komplexität hoch. Aber was tun, damit bei einfachen und repetitiven Aufgaben keine Fehler entstehen? Bei Apriko setzen wir auf automatisierte Codegenerierung, um genau diese Stolpersteine aus dem Weg zu räumen. Unsere Herangehensweise? Ein deklarativer Ansatz, der es den Entwickler ermöglicht, sich auf die wirklich wesentlichen und komplexen Aufgaben zu konzentrieren.
Auf fachlich relevanten Entitäten können mit Attributen alle notwendigen Definitionen und Konfigurationen hinterlegt werden, ohne dafür selbst Code schreiben zu müssen. Alle Standard-Funktionen einer modernen Applikation werden dadurch automatisch durch einen eigens entwickelten Algorithmus generiert. Dazu gehören:
Die Codegenerierung bildet die Basis unseres REST-API und ermöglicht uns fehlerfrei und innerhalb von Minuten neue Anforderungen umzusetzen. In diesem Artikel fokussieren wir uns auf die automatische Generierung für die Entität Order und zeigen, wie erweiterte Funktionalitäten durch Commands implementiert werden können.
Diese Definition zeigt, wie die Entität Order strukturiert ist:
Basierend auf der oben definierten Entität Order werden die entsprechenden CRUD-Operationen automatisch generiert. Dies umfasst das Erstellen, Lesen, Aktualisieren und Löschen von Bestellungen in der Datenbank. Zusätzlich werden die dazugehörigen DTOs (Data Transfer Objects) und Controller-Routen erstellt, die es ermöglichen, die Entität direkt in den Microservice zu integrieren.
Die automatische Codegenerierung stellt sicher, dass die CRUD-Operationen konsistent und nach den besten Praktiken implementiert werden, ohne dass Entwickler Zeit mit der manuellen Erstellung dieser Standardfunktionen verbringen müssen.
Während CRUD-Operationen (Create, Read, Update, Delete) den Kern vieler Microservices-Anwendungen ausmachen, gibt es oft Anforderungen, die über diese einfachen Operationen hinausgehen. Solche komplexen Anwendungsfälle können mit dem Konzept der Commands abgebildet werden. Commands sind spezifische Anweisungen, die komplexere Geschäftslogik implementieren und dabei mehr tun, als nur Daten in einer Datenbank zu verwalten. Commands sind besonders nützlich, wenn bestimmte Geschäftsregeln oder Bedingungen erfüllt sein müssen, bevor eine Operation ausgeführt werden kann. Die Automatisierung der Generierung solcher Commands reduziert nicht nur den Entwicklungsaufwand, sondern stellt auch sicher, dass die Implementierung konsistent und fehlerfrei erfolgt. Die Generierung der zusätzlichen Routen im Controller und der Einträge in der Dependency Injection (DI) Registry erfolgen automatisch.
Nehmen wir ein einfaches Beispiel für einen Command, der eine Bestellung bestätigt:
Der OrderConfirmCommand ist ein einfaches Beispiel für die Erweiterung der Geschäftslogik:
Die Generierung von Commands erweitert die Funktionalität der Entität und ermöglicht die Implementierung spezifischer Geschäftslogik. Gleichzeitig werden die notwendigen Routen im Controller und die Einträge in der DI-Registry automatisch hinzugefügt. Dadurch wird sichergestellt, dass neue Funktionen nahtlos in die bestehende Architektur integriert werden können.
Die Kombination aus der automatisierten Generierung von CRUD-Operationen für Entitäten und der Erweiterung durch Commands bietet eine robuste Lösung für die Entwicklung von Microservices in .NET. Diese Ansätze ermöglichen es uns, sowohl einfache als auch komplexe Geschäftslogik effizient und skalierbar zu implementieren, wodurch Entwickler sich stärker auf die Kernlogik ihrer Anwendung konzentrieren können. Die so gewonnene Zeit und Konsistenz trägt massgeblich zu einer höheren Qualität und Wartbarkeit der gesamten Codebasis bei.
