Mittelstand Radar : Signaux d'achat du Mittelstand allemand — réservez dès maintenant votre première édition du rapport.Rejoindre la liste d'attente
Un parcours à travers l'évolution de .NET mettant en avant ASP.NET Core moderne et une architecture CQRS
Retour au blog
.NETASP.NET CoreCQRS

Développement .NET moderne : construire des solutions évolutives

Sven HennessenDéveloppement

De .NET 1.0 à Semantic Kernel, vensas est votre équipe de développement logiciel et partenaire de mise en œuvre pour des applications .NET robustes.

Chez vensas, nous concevons des solutions logicielles fiables et évolutives. En tant que partenaire de mise en œuvre et équipe de développement logiciel pour nos clients, nous apportons des décennies d'expérience pratique à chaque projet, avec un fort accent sur la qualité et une architecture durable.

Notre parcours avec .NET a commencé avec la version 1.0. Au fil des années, nous avons accompagné la plateforme à travers ses différentes étapes d'évolution, en tirant des enseignements de chaque changement de paradigme et en adaptant nos approches architecturales.

Un parcours à travers l'évolution de .NET

Notre expertise est enracinée dans le développement de logiciels commerciaux à travers tout l'écosystème .NET. Même si nous ne construisons plus de nouvelles applications avec des technologies historiques comme le .NET Compact Framework (Windows Mobile) ou WCF (.NET Framework), cette solide expérience historique nous donne une compréhension profonde des systèmes distribués et de la modernisation efficace des applications existantes. De plus, notre vaste expérience avec Xamarin nous permet de migrer et moderniser sans friction d'anciennes applications mobiles multiplateformes vers le framework moderne .NET MAUI.

Aujourd'hui, nous concevons et livrons avec succès des systèmes modernes qui s'appuient sur :

  • ASP.NET Core et .NET Core : développement de services web haute performance et multiplateformes, ainsi que d'applications web dynamiques.
  • Entity Framework et ASP.NET Identity : gestion de l'accès aux données et sécurisation des applications.
  • Semantic Kernel : intégration de capacités d'IA modernes dans les logiciels d'entreprise.
  • .NET MAUI : livraison d'interfaces natives multiplateformes pour iOS, Android, Windows et macOS à partir d'une seule base de code.

Notre standard d'architecture : Clean Architecture et CQRS

Lorsqu'on nous confie la conception de la stack technologique d'un nouveau projet, notre architecture standard est centrée sur des APIs ASP.NET Core utilisant Clean Architecture et le pattern CQRS (Command Query Responsibility Segregation).

La Clean Architecture garantit que notre logique métier centrale reste indépendante de l'UI, des bases de données ou des frameworks externes. En la combinant avec CQRS, nous séparons strictement les opérations de lecture (Queries) des opérations d'écriture (Commands).

Architecture CQRS avec pipeline MediatR

Cette séparation nous permet de modéliser les processus métier avec plus de précision. Nos endpoints minimal API restent extrêmement fins et délèguent le véritable travail à des handlers dédiés.

// 1. Define the Command
public record CreateOrderCommand(Guid CustomerId, List<OrderItem> Items) : IRequest<Guid>;

// 2. Implement the Handler
public class CreateOrderCommandHandler : IRequestHandler<CreateOrderCommand, Guid>
{
    private readonly ApplicationDbContext _dbContext;

    public CreateOrderCommandHandler(ApplicationDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    public async Task<Guid> Handle(CreateOrderCommand request, CancellationToken cancellationToken)
    {
        var order = new Order(request.CustomerId, request.Items);
        _dbContext.Orders.Add(order);
        await _dbContext.SaveChangesAsync(cancellationToken);
        
        return order.Id;
    }
}

// 3. Thin API Endpoint
app.MapPost("/api/orders", async (CreateOrderCommand command, IMediator mediator) => 
{
    var orderId = await mediator.Send(command);
    return Results.Created($"/api/orders/{orderId}", orderId);
});

Résoudre des problèmes d'entreprise complexes

En nous appuyant sur notre portefeuille de projets, nous avons établi un ensemble d'approches éprouvées pour résoudre des défis fréquents en entreprise :

  • Intégrations résilientes avec Polly : les intégrations avec des systèmes externes peuvent échouer. Nous nous appuyons sur IHttpClientFactory combiné à des politiques Polly. Au lieu de simples retries, nous implémentons un exponential backoff avec jitter et des circuit breakers. Cela empêche nos systèmes de surcharger des APIs externes en cours de récupération et garantit que notre application reste réactive même en cas de panne partielle.
  • Intégration IA via Semantic Kernel : nous utilisons Semantic Kernel de Microsoft pour orchestrer les interactions LLM directement dans nos backends .NET. Dans des projets récents, nous avons mis en œuvre des agents conversationnels qui traitent des documents métier non structurés et invoquent de manière autonome des plugins C# natifs pour déclencher des workflows backend, créant un pont sûr entre langage naturel et processus métier structurés.
  • Pipelines de données asynchrones : pour les projets nécessitant la synchronisation de volumes élevés de données logistiques ou de planification entre systèmes, nous utilisons du traitement de jobs en arrière-plan avec Hangfire couplé aux capacités de base documentaire de MartenDB sur PostgreSQL. Cela nous permet de construire des pipelines de transfert de données fiables, pilotés par événements et exécutés de manière asynchrone sans bloquer les workflows utilisateurs.
  • Génération avancée de documents : dans les scénarios de service client et de gestion des réclamations, il est souvent nécessaire de générer des PDF dynamiques et fortement brandés. Nous utilisons QuestPDF pour concevoir et générer de façon programmatique des documents PDF complexes directement depuis notre backend avec une API C# fluide et déclarative, en évitant le coût de maintenance de convertisseurs HTML-vers-PDF fragiles.
  • Optimisation des performances et de la mémoire : nous adoptons continuellement les dernières capacités du runtime. En mettant à niveau nos services vers .NET 9 et en préparant .NET 10, nous réduisons activement l'empreinte mémoire et les temps de démarrage de nos applications. Cela améliore l'expérience utilisateur et réduit sensiblement les coûts d'hébergement cloud.

Besoin d'aide ?

Vous recherchez un partenaire de mise en œuvre expérimenté pour concrétiser votre vision .NET, ou vous avez besoin d'aide pour relever des défis architecturaux dans votre système actuel ? Nous pouvons vous aider. Contactez-nous via notre page de contact et discutons de la manière dont nous pouvons soutenir votre projet.