vendredi 26 septembre 2025

BFF



🏗️ BFF = Backend For Frontend

🔑 Définition

Le BFF est une couche backend intermédiaire créée spécifiquement pour un type de client (par exemple : application mobile, application web, dashboard interne, etc.).

👉 Chaque frontend (Web, Mobile, SPA Angular/React, etc.) peut avoir son BFF dédié, qui :

  • centralise les appels aux microservices ou API internes,

  • adapte les données au format attendu par le frontend,

  • gère la sécurité (authentification/autorisation, tokens, cookies),

  • réduit la complexité côté client.


📊 Exemple concret

Imaginons une architecture microservices :

[ Mobile App ] --> [ BFF Mobile ] ---> [ Microservice Produits ]
                                        [ Microservice Commandes ]
                                        [ Microservice Paiements ]

[ Web App ] -----> [ BFF Web ] ------> [ mêmes microservices ]
  • Le BFF Mobile renvoie des données allégées, adaptées aux contraintes mobiles.

  • Le BFF Web renvoie plus de détails (rapports, analytics).


⚙️ En C# / .NET

On implémente un BFF typiquement avec ASP.NET Core Web API :

  • Création d’un projet API qui sert d’orchestrateur.

  • Utilisation de HttpClient ou Refit pour communiquer avec d’autres microservices.

  • Ajout de middlewares (sécurité, cache, transformation des données).

Exemple ultra simplifié :

[ApiController]
[Route("api/[controller]")]
public class OrdersBffController : ControllerBase
{
    private readonly HttpClient _http;

    public OrdersBffController(HttpClient http)
    {
        _http = http;
    }

    [HttpGet("{userId}")]
    public async Task<IActionResult> GetUserOrders(string userId)
    {
        // Appel microservice "Orders"
        var orders = await _http.GetFromJsonAsync<List<Order>>(
            $"https://orders-api/api/orders/{userId}");

        // Transformation adaptée au frontend
        var result = orders.Select(o => new {
            o.Id,
            o.Total,
            Date = o.Date.ToString("dd/MM/yyyy")
        });

        return Ok(result);
    }
}

✅ Avantages du BFF

  • Découplage complet entre frontend et backend interne.

  • Simplifie le frontend (moins de logique côté client).

  • Permet d’adapter les données selon le type de client.

  • Meilleure sécurité (on évite d’exposer tous les microservices directement).


👉 Donc en résumé :
En C#, un BFF (Backend For Frontend) est une API ASP.NET Core conçue sur mesure pour un frontend donné, servant de passerelle optimisée entre le frontend et les microservices.



Aucun commentaire:

Enregistrer un commentaire

BFF Lượt xem: