News

Double victoire pour Apriko: l’or et l’argent lors des Best of Swiss Software Awards 2024

Le 19 novembre 2024, les meilleures solutions logicielles de Suisse ont été récompensées au Kongresshaus de Zurich. Particulièrement rayonnante : la start-up Apriko, qui a doublement convaincu en remportant l’or dans la catégorie Business Solutions et l’argent dans la catégorie Cloud Native Solutions.

En savoir plus
Blog

Qu’est-ce que le payroll?

Vous êtes-vous déjà demandé en quoi consistait le payrolling ou la paie ? Connaissez-vous Try & Hire ? La réponse n’est pas simple, car le terme « payrolling » est utilisé pour 2 services différents.

En savoir plus

Parvenir au but plus rapidement et mieux : avec une génération de code automatisée

Engineering
avril 15, 2024

Le niveau de complexité est élevé dans le développement logiciel moderne, notamment dans les architectures de microservices. Mais que faire pour éviter les erreurs dans les tâches simples et répétitives ? Chez Apriko, nous misons sur la génération automatisée de codes pour éliminer précisément ces obstacles. Notre approche ? Une approche déclarative qui permet au développeur de se concentrer sur les tâches réellement essentielles et complexes.

Les attributs permettent d’enregistrer toutes les définitions et configurations nécessaires sur les entités techniques pertinentes sans devoir écrire soi-même un code. Toutes les fonctions standard d’une application moderne sont automatiquement générées par un algorithme spécialement développé. Il s’agit de :

  • Opérations CRUD (Create, Read, Update, Delete)
  • Data Transfer Objects (DTOs)
  • Enregistrements pour l’injection de dépendance (DI)
  • Contrôleur avec configuration des itinéraires
  • Compléments au Data Definition Language (DDL)

La génération de code constitue la base de notre API REST et nous permet de mettre en œuvre de nouvelles exigences sans erreur et en quelques minutes. Dans cet article, nous nous concentrerons sur la génération automatique pour l’entité Order et montrons comment des fonctionnalités étendues peuvent être implémentées à l’aide de Commands.

1. Le fondement : L’entité Order

Cette définition montre comment l’entité Order est structurée :

  • EntityCodeGeneration-Attribut: Cet attribut est le point d’entrée pour notre générateur de code et contient les informations nécessaires pour la structure physique de l’entité Order et DI-Registry.
  • MutableState-Attribut: Définit l’état dans lequel l’entité peut être modifiée via des opérations CRUD.
  • StrictRequired-Attribut: Les champs OrderNumber, OrderDate et TotalAmount sont obligatoires et doivent toujours être renseignés.
  • UniqueKey-Attribut: Le champ OrderNumber doit être unique.
  • NotSettableProperty-Attribut: L’état de la commande (State) est une propriété en lecture seule qui ne peut être modifiée que par une logique spécifique, p. ex. Commands.

2. Génération automatique d’opérations CRUD

Les opérations CRUD correspondantes sont générées automatiquement sur la base de l’entité Order définie ci-dessus. Cela inclut la création, la lecture, la mise à jour et la suppression de commandes dans la base de données. En outre, les DTO (Data Transfer Objects) et les itinéraires-contrôleurs associés sont créés, ce qui permet d’intégrer directement l’entité dans le microservice.
La génération automatique de code garantit que les opérations CRUD sont mises en œuvre de manière cohérente et selon les meilleures pratiques, sans que les développeurs ne perdent du temps à créer manuellement ces fonctionnalités standard.

3. Développement au moyen de Commands : Logique métier au-delà de CRUD

Alors que les opérations CRUD (Create, Read, Update, Delete) sont au cœur de nombreuses applications de microservices, il existe souvent des exigences qui vont au-delà de ces opérations simples. De tels cas d’application complexes peuvent être représentés avec le concept Commands. Les Commands sont des instructions spécifiques mettons en œuvre une logique métier plus complexe qui font beaucoup plus que simplement gérer des données dans une base de données. Les instructions Commands sont particulièrement utiles lorsque certaines règles métier ou conditions doivent être remplies avant qu’une opération puisse être exécutée. L’automatisation de la génération de ces commandes réduit non seulement les efforts de développement, mais garantit également une implémentation cohérente et sans erreur. La génération d’itinéraires supplémentaires dans le contrôleur et les entrées dans le registre Dependency Injection (DI) sont automatiques.
Prenons un exemple simple de Command confirmant une commande :

4. Explication de l’exemple Command

OrderConfirmCommand est un exemple simple d’extension de la logique métier :

  • CommandCodeGeneration-Attribut: Cet attribut définit Command Confirm appelée via l’itinéraire {id}/confirm. Il définit également le type de base de l’entité cible (Order) et le modèle associé (OrderConfirmModel).
  • StatePrecondition-Attribut: Cette Instruction Command ne peut être exécutée que si la commande est à l’état Pending.
  • TargetState-Attribut: L’état cible après l’exécution de l’instruction Command est Confirmed.
  • CheckPreconditions-Methode: On vérifie ici si la commande a un TotalAmount valide avant de la confirmer.
  • ExecuteAsync-Methode: Cette méthode permet de définir le statut de la commande sur Confirmed.

5. Intégration dans l’architecture des microservices

La génération d’instructions Commands étend la fonctionnalité de l’entité et permet la mise en œuvre d’une logique métier spécifique. Simultanément, les itinéraires nécessaires sont ajoutés automatiquement dans le contrôleur et les entrées dans le DI-Registry. Cela permet de s’assurer que les nouvelles fonctionnalités s’intègrent parfaitement à l’architecture existante.

6. Avantages de l’utilisation combinée des entités et des instructions Commands

  • Efficacité et cohérence : La génération automatique permet de gagner du temps et garantit des implémentations cohérentes.
  • Evolutivité : Une nouvelle logique métier peut facilement être intégrée en ajoutant des instructions Commands.
  • Meilleure maintenabilité : La séparation claire des opérations CRUD standard et des instructions spécifiques Commands facilite la maintenance et le développement de l’application.

7. Conclusion

La combinaison de la génération automatisée d’opérations CRUD pour les entités et de l’extension au moyen d’instructions Commands offre une solution robuste pour le développement de microservices dans .NET. Ces approches nous permettent de mettre en œuvre une logique métier simple et complexe de manière efficace et évolutive, ce qui permet aux développeurs de se concentrer davantage sur la logique centrale de leur application. Le temps ainsi gagné et la cohérence contribuent considérablement à améliorer la qualité et la maintenabilité de l’ensemble de la base de code.

As-tu des questions ? Écris-nous – nous sommes impatients !

Michael Vogler
Software Architect

Encore plus de bonnes raisons de choisir Apriko

Engineering

DevOps chez Apriko

avril 15, 2024

Le développement de logiciels modernes nécessite des méthodes agiles afin de pouvoir réagir rapidement aux changements du marché tout en garantissant la qualité. DevOps offre ici la solution idéale grâce au lien étroit entre développement et exploitation.

Engineering

Génération automatique de l’interface utilisateur graphique (IU)

avril 15, 2024

Un principe central de conception de l’architecture logicielle d’Apriko est de générer automatiquement autant de code boilerplate que possible ou d’en déduire une logique.

Engineering

Plateforme pour les applications d’entreprise modernes

avril 15, 2024

Apriko a été développé en tant qu’application de microservice pour répondre aux exigences croissantes des applications d’entreprise modernes.

Engineering

Behavior Driven Development

avril 15, 2024

Chez Apriko, nous visons un degré élevé d’automatisation des processus clients, une mise sur le marché rapide et une amélioration continue de nos logiciels.

Durée: 6 minutes
Intervenants: Michael Vogler

Les cookies sont utilisés sur ce site web afin d’analyser et d’améliorer son utilisation. Tu peux désactiver les cookies dans les paramètres de ton navigateur, mais cela peut affecter la fonctionnalité du site.

EYEBROW

Share Options

Copy text, max 150 characters, omnitat volor recestiosam faccusa pidundisquam re sitati faccusa nullaboris aut. Ecest, omnitat pidundisquam re sitati.