Des applications .NET qui suivent vos règles de gestion et évoluent avec votre activité
API, logique métier et migrations en ASP.NET Core. Code testé, relu et documenté, qui vous appartient.
Requête : POST/factures/148/emettre
Réponse : 201 Created38 ms
API
Vérifie la requête
ASP.NET Core
Application
Charge la facture 148
IssueInvoice
Domaine
Applique les règles de facturation
invoice.Issue()
Base de données
Enregistre la facture émise
SQL Server ou PostgreSQL
Ce que vous obtenez
Ce que la prestation vous apporte, et la façon dont c’est construit.
Vos applications, vos partenaires et vos outils connectés à vos données
Pour votre équipe technique : API REST documentées en ASP.NET Core
Vos règles de gestion écrites à un seul endroit, faciles à faire évoluer
Pour votre équipe technique : Logique métier isolée dans une couche dédiée, indépendante de la base de données et de l’interface
Des données bien structurées, dont chaque évolution est tracée
Pour votre équipe technique : Entity Framework sur SQL Server ou PostgreSQL, schéma versionné par des migrations
Une architecture à la taille de votre projet
Pour votre équipe technique : Microservices, CQRS ou DDD quand le projet le justifie, pas par principe
Chaque modification vérifiée avant de vous être livrée
Pour votre équipe technique : Tests unitaires et d’intégration relancés à chaque modification, avant toute fusion
Passer de .NET Framework à .NET 10
Le même point d’entrée, avant et après la migration. Ce que fait l’application ne change pas, la façon de l’écrire et de l’héberger, si.
InvoicesController.cs
public class InvoicesController : ApiController{ [HttpPost, Route("api/factures/{id:int}/emettre")] public IHttpActionResult Issue(int id) { var settings = ConfigurationManager.AppSettings; var paymentTermDays = int.Parse(settings["PaymentTermDays"]); var connectionString = ConfigurationManager .ConnectionStrings["Billing"].ConnectionString; using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand( "UPDATE Invoices SET Status = 'Issued', " + "DueOn = DATEADD(day, @term, GETDATE()) WHERE Id = @id", connection)) { command.Parameters.AddWithValue("@id", id); command.Parameters.AddWithValue("@term", paymentTermDays); connection.Open(); if (command.ExecuteNonQuery() == 0) return NotFound(); } return Created($"api/factures/{id}", new { Id = id }); }}web.config
<connectionStrings> <add name="Billing" connectionString="Server=db01;Database=Billing;Trusted_Connection=True" /></connectionStrings><appSettings> <add key="PaymentTermDays" value="30" /></appSettings>InvoicesController.cs
[ApiController][Route("api/factures")]public class InvoicesController( BillingDbContext db, IOptions<BillingOptions> options) : ControllerBase{ [HttpPost("{id:int}/emettre")] public async Task<IActionResult> Issue(int id, CancellationToken ct) { var invoice = await db.Invoices.FindAsync([id], ct); if (invoice is null) return NotFound(); invoice.Issue(options.Value.PaymentTermDays); await db.SaveChangesAsync(ct); return Created($"/api/factures/{id}", new { invoice.Id }); }}Program.cs
builder.Services.AddDbContext<BillingDbContext>(options => options .UseSqlServer(builder.Configuration.GetConnectionString("Billing")));builder.Services.Configure<BillingOptions>( builder.Configuration.GetSection("Billing"));appsettings.json
{ "ConnectionStrings": { "Billing": "Server=db01;Database=Billing;User Id=billing_api" }, "Billing": { "PaymentTermDays": 30 }}Hébergement Linux ou conteneur
.NET 10 tourne sur Linux et dans des conteneurs Docker. Plus besoin d’un serveur Windows avec IIS pour héberger l’application.
Support Microsoft actif
Une version de .NET sort chaque année et chaque version à support long (LTS) est maintenue trois ans. .NET Framework 4.8 ne reçoit plus que des correctifs.
Performances
Le code asynchrone libère le serveur pendant qu’il attend la base de données, et chaque version de .NET apporte ses propres optimisations.
Stack technique
- .NET
- C#
- SQL Server
- PostgreSQL
- Azure
- Docker
ASP.NET Core · Entity Framework · SOLID · Clean architecture · CQRS / DDD · Microservices
Questions fréquentes
Prix, reprise d’une application existante, propriété du code et travail avec votre équipe.
Combien coûte un développement .NET sur-mesure ?
Entre 4 800 et 24 000 € HT selon le périmètre. Comptez de 4 800 à 9 600 € HT pour une API qui complète une application existante, de 8 000 à 18 000 € HT pour migrer une application .NET Framework selon sa taille, et de 12 000 à 24 000 € HT pour le backend complet d’un outil métier. Le devis précis suit la première analyse, gratuite.
Pouvez-vous reprendre une application .NET existante, même ancienne ?
Oui, y compris une application .NET Framework. Nous lisons d’abord le code et ses dépendances pour faire un état des lieux, puis nous proposons de la faire évoluer par étapes ou de la migrer vers .NET 10. Vous décidez sur la base de ce constat.
Le code m’appartient-il ?
Oui. Le code vous appartient et il est documenté, sans boîte noire. Vous récupérez le dépôt complet : code, migrations de base de données et documentation.
Comment démarre un projet ?
Par un message : décrivez votre besoin dans le formulaire ou par e-mail. Nous répondons sous 24 h ouvrées avec une première analyse gratuite, puis nous fixons un échange pour cadrer le périmètre.
Travaillez-vous avec l’équipe technique en place ?
Oui. Le code arrive par pull request, relu et testé, dans les conventions de votre équipe. Vos développeurs peuvent le relire et le commenter comme le reste de leur code avant de le fusionner.
Comment nous travaillons
Le même chemin pour chaque livraison, avec une relecture humaine avant toute mise en production.
- 01Cadrage
- 02Réalisation assistée
- 03Revue humaine
- 04Tests et recette
- 05Production supervisée
Parlons de votre projet
Décrivez votre besoin en quelques lignes.