mardi 9 juin 2026

Low Code mon amour (sarcasme)

Explique moi ce qu'est le DataVerse dans le monde de PowerApps, une simple BD?, une BD objet, c'est un peu abstrait pour moi...

Dataverse est souvent présenté comme une base de données, mais ce n'est pas tout à fait une base relationnelle classique comme SQL Server ou PostgreSQL. C'est plutôt une plateforme de données métier (business data platform) construite par Microsoft pour l'écosystème Power Platform (Power Apps, Power Automate, Power BI, Dynamics 365).

L'analogie la plus simple

Imagine trois niveaux :

NiveauExemple
Base de données classiqueSQL Server, PostgreSQL
ORM / Modèle objetEntity Framework
Application métierCRM, ERP

Dataverse combine un peu les trois.


Comment Dataverse stocke les données ?

Dans Dataverse, on ne parle pas de :

  • Tables SQL
  • Colonnes SQL
  • Clés étrangères

Même si techniquement c'est ce qui existe derrière.

On parle plutôt de :

  • Tables (anciennement Entités)
  • Colonnes
  • Relations
  • Lignes (Rows)

Exemple :

Table Client

NomCourrielTéléphone
Jeanjean@test.com514-1234

Table Projet

Nom ProjetBudget
Portail RH50 000$

Relation

Un client peut avoir plusieurs projets.

C'est exactement le même concept qu'une base relationnelle.


Pourquoi ça semble abstrait ?

Parce que Dataverse ajoute une couche métier au-dessus de la BD.

Quand tu crées une table "Client", tu obtiens automatiquement :

Métadonnées

  • Description
  • Types de données
  • Étiquettes multilingues
  • Validation

Sécurité

  • Qui peut lire ?
  • Qui peut modifier ?
  • Qui peut supprimer ?

API

Automatiquement exposée en :

  • REST API
  • OData
  • Connecteurs Power Platform

Interface utilisateur

Power Apps peut immédiatement utiliser la table sans coder.


Ce n'est pas une BD objet

C'est probablement ce qui te mélange.

Dataverse ressemble à un modèle objet :

Client
├─ Nom
├─ Courriel
└─ Projets

mais en réalité, c'est toujours relationnel.

Par exemple :

Client
1 ---- n Projet

est stocké comme une relation classique.

Donc :

❌ Ce n'est pas une base orientée objet (comme db4o ou ObjectDB)

❌ Ce n'est pas une base NoSQL

✅ C'est une base relationnelle enrichie de métadonnées métier


Une comparaison avec Entity Framework

Si tu connais EF :

public class Client
{
public Guid Id { get; set; }
public string Nom { get; set; }

public List<Projet> Projets { get; set; }
}

Dans Dataverse, tu définis essentiellement ce modèle :

Table Client
Table Projet
Relation Client-Projet

et Microsoft génère pour toi :

  • le schéma physique
  • les API
  • la sécurité
  • les formulaires
  • les connecteurs Power Platform

Ce qui différencie Dataverse d'une simple BD SQL

Avec SQL Server tu dois gérer :

CREATE TABLE
CREATE INDEX
API REST
Authentification
Permissions
Audits
Historique

Avec Dataverse :

Créer une table
Créer les colonnes
Créer les relations

et le reste est déjà fourni.


Dans l'univers Power Apps

Le rôle de Dataverse est comparable à celui-ci :

Power Apps
|
Power Automate
|
Power BI
|
-------------------
|
Dataverse
|
-------------------
|
Azure SQL (caché)

Tu pourrais voir Dataverse comme :

"Un SQL Server métier géré par Microsoft, enrichi de métadonnées, de sécurité, d'API et d'intégration native avec Power Platform."


Une analogie pour un architecte logiciel

Si SQL Server est :

Le moteur de la voiture

Dataverse est :

Le moteur
+
La transmission
+
Le tableau de bord
+
Les ceintures de sécurité
+
L'ordinateur de bord

Tu perds un peu de contrôle bas niveau, mais tu gagnes énormément en rapidité pour construire des applications métier.

C'est pour cette raison que les solutions Dynamics 365 (CRM, Service, Sales, etc.) sont aujourd'hui essentiellement des applications construites sur Dataverse. C'est beaucoup plus qu'une base de données : c'est la couche de données métier standard de tout l'écosystème Microsoft Power Platform.

Au niveau performance par contre, ça ne peut surement pas battre un vrai système c'est tellement générique...

Tu as raison... et tort en même temps. 😊

La réponse d'architecte est : ça dépend de ce qu'on mesure.

Si on parle de performance brute

Un système développé sur mesure avec :

  • PostgreSQL
  • SQL Server
  • API .NET optimisées
  • Caching Redis
  • Requêtes SQL écrites à la main

va presque toujours battre Dataverse.

Par exemple :

OpérationSQL optimiséDataverse
SELECT simpleTrès rapideRapide
Requête complexe multi-joinsTrès rapidePlus lent
Traitement de masseTrès rapideMoyen
Millions de transactions/jourExcellentLimité
Contrôle des indexTotalTrès limité

Microsoft cache toute la couche physique.

Tu ne peux pas :

CREATE INDEX ...

ni

OPTION(RECOMPILE)

ni optimiser un plan d'exécution.

Pour quelqu'un comme toi qui a travaillé avec SQL Server, PostgreSQL, Kubernetes et l'optimisation d'applications .NET, ça peut donner l'impression d'avoir les mains attachées.


Mais ce n'est pas le problème que Dataverse cherche à résoudre

Microsoft ne vend pas Dataverse comme :

"Le système le plus performant."

Ils le vendent comme :

"Le système le plus rapide à construire et maintenir."

Prenons un exemple.

Application de gestion des demandes

En mode traditionnel :

PostgreSQL
+
API .NET
+
React
+
Authentification
+
Gestion des rôles
+
Audit
+
Historique
+
Recherche
+
Notifications

6 mois de développement.


Même besoin avec Dataverse

Dataverse
+
Power Apps
+
Power Automate

3 semaines.

Les utilisateurs sont contents.

La charge :

500 employés
20 000 dossiers

Dataverse est largement suffisant.


Là où ça commence à souffrir

J'ai vu plusieurs projets Power Platform frapper des murs quand ils arrivent à :

Très gros volumes

50 millions
100 millions
500 millions d'enregistrements

Requêtes analytiques complexes

Exemple :

15 tables
8 joins
agrégations
window functions

Dataverse n'est pas conçu pour ça.


Intégration temps réel haute fréquence

Exemple :

IoT
Télémétrie
Transactions financières
Logs applicatifs

Là on est complètement hors cible.


L'erreur fréquente des architectes

Les architectes logiciels expérimentés regardent Dataverse et pensent :

"C'est un mauvais SQL Server."

Alors que Microsoft le positionne comme :

"Un excellent Dynamics/CRM platform."

C'est comme comparer :

SAP
Salesforce
Dynamics

avec

PostgreSQL

Ce ne sont pas les mêmes catégories.


L'endroit où Dataverse est étonnamment bon

La sécurité.

Si demain tu dois construire un système gouvernemental avec :

  • RBAC
  • sécurité par équipe
  • sécurité par rôle
  • sécurité par enregistrement
  • audit complet
  • historique

En .NET classique, ça représente facilement :

30 à 40 % du développement

Dans Dataverse :

Configuration

Le moteur est déjà là.


Une règle que j'utilise

Dataverse est excellent pour :

  • CRM
  • Gestion de dossiers
  • Workflow administratif
  • Applications RH
  • Processus gouvernementaux
  • Gestion documentaire légère
  • Applications low-code

Dataverse est mauvais pour :

  • OLTP intensif
  • ERP manufacturier lourd
  • Temps réel
  • Big Data
  • Analytique complexe
  • Charges massives

Donc ton intuition est bonne :

Un architecte qui construit une solution .NET/PostgreSQL optimisée va presque toujours obtenir de meilleures performances et une meilleure maîtrise qu'avec Dataverse.

Mais la vraie question est souvent :

« Est-ce que j'ai besoin de 10 ms de temps de réponse ou est-ce que j'ai besoin de livrer l'application dans 2 mois plutôt que dans 12 ? »

C'est là que Dataverse gagne souvent la bataille, même lorsqu'il perd la comparaison technique pure.

Par contre si je comprends bien, il faut être prêt à s'attacher à un vendeur et sortir notre argent pour s'en servir...

Oui. Et c'est probablement la principale critique architecturale qu'on peut faire à Dataverse.

Quand tu adoptes Dataverse, tu n'adoptes pas seulement une technologie, tu adoptes pratiquement tout l'écosystème Microsoft Power Platform :

  • Dataverse
  • Power Apps
  • Power Automate
  • Dynamics 365
  • Azure AD / Entra ID
  • Connecteurs Microsoft

C'est du vendor lock-in assumé.


Avec PostgreSQL

Tu possèdes essentiellement tes données :

PostgreSQL
|
+--> .NET
+--> Java
+--> Python
+--> React
+--> Angular
+--> Power BI
+--> Tableau

Si demain tu veux migrer :

  • AWS
  • Azure
  • On-prem
  • Kubernetes

ça reste faisable.


Avec Dataverse

Tu es plutôt dans :

Power Apps
|
Power Automate
|
Dataverse
|
Microsoft Cloud

Le jour où tu veux sortir de là :

  • récupérer les données est possible ;
  • récupérer les règles métier est difficile ;
  • récupérer les workflows est pénible ;
  • récupérer les formulaires est souvent une réécriture complète.

Les données sont exportables.

L'application, beaucoup moins.


Le piège financier

Au début :

« On va faire ça en low-code et sauver beaucoup d'argent. »

Et souvent c'est vrai.

Mais après quelques années :

500 utilisateurs
Power Apps Premium
Dataverse
Power Automate Premium
Connecteurs Premium

La facture devient significative.

Tu échanges :

CAPEX de développement

contre

OPEX de licences

Là où Microsoft est intelligent

Ils ont compris que :

Pour beaucoup d'organisations, notamment gouvernementales ou grandes entreprises :

10 développeurs pendant 2 ans

coûtent beaucoup plus cher que :

Licences Power Platform

Donc le modèle économique fonctionne.


Comme architecte d'entreprise

Je vois souvent trois catégories :

1. Application stratégique

Exemple :

  • système cœur métier
  • propriété intellectuelle
  • avantage concurrentiel

Je préfère :

.NET
PostgreSQL
Kubernetes

ou équivalent.

Je garde le contrôle.


2. Application administrative

Exemple :

  • demandes RH
  • gestion des équipements
  • approbations
  • formulaires internes

Là Dataverse est souvent un excellent choix.


3. Application temporaire

Exemple :

  • projet de 2 ans
  • programme gouvernemental
  • besoin rapide

Dataverse devient très intéressant.


La vraie question

Pour moi, Dataverse n'est pas tant un problème de performance qu'un problème de souveraineté technologique.

Quand tu bâtis sur PostgreSQL :

Tu loues de l'infrastructure.

Quand tu bâtis sur Dataverse :

Tu loues une partie de ton architecture.

Certaines organisations acceptent très bien ce compromis. D'autres, particulièrement celles qui ont une forte culture d'ingénierie ou des exigences de contrôle à long terme, le vivent beaucoup moins bien.

Vu ton profil d'architecte et ton expérience avec les stacks ouvertes (.NET, PostgreSQL, Kubernetes, DevSecOps), il est normal que ton premier réflexe soit de te demander : « Combien de liberté est-ce que je perds en échange de cette rapidité de développement ? » C'est généralement la première question que se posent les architectes expérimentés devant la Power Platform.

Alors c'est low code, mais actuellement la demande est forte pour les ressources qui maitrisent cet environnement, et ces dernières ont tendance à coûter plus cher... moi je croyais que l'objectif entre autre était de pousser ces développement dans la cours des gens affaire.

Tu touches à un point très intéressant, parce que c'est exactement le discours que Microsoft tenait il y a 8-10 ans :

« Les gens d'affaires vont pouvoir construire leurs propres applications sans dépendre de l'informatique. »

Dans la pratique, ce n'est arrivé que partiellement.


La promesse du "citizen developer"

L'idée était :

Utilisateur RH
|
+--> crée un formulaire
+--> ajoute un workflow
+--> publie une application

sans :

  • développeur
  • architecte
  • DBA
  • DevOps

Pour des besoins simples, ça fonctionne réellement.

Par exemple :

  • formulaire de demande de vacances
  • approbation d'achats
  • inventaire d'équipement
  • gestion de formation

Un analyste d'affaires motivé peut effectivement construire ça.


Ce qui s'est passé dans les grandes organisations

Après quelques années, les applications sont devenues :

Power Apps
+
Dataverse
+
Power Automate
+
SAP
+
ServiceNow
+
Dynamics
+
API REST
+
Sécurité complexe
+
Conformité

Et soudainement :

  • gestion des environnements
  • pipelines CI/CD
  • ALM
  • gouvernance
  • sécurité
  • licences
  • performance
  • intégration

sont devenues des sujets importants.

À ce moment-là, le "citizen developer" disparaît progressivement et on voit apparaître une nouvelle spécialité :

Développeur Power Platform


C'est le même phénomène qu'avec SharePoint

J'ai vécu ça plusieurs fois.

Le discours initial :

« Les utilisateurs vont faire leurs propres sites. »

10 ans plus tard :

Architecte SharePoint
Développeur SharePoint
Administrateur SharePoint
Expert SharePoint

Power Platform suit un peu la même trajectoire.


Pourquoi les experts Power Platform coûtent cher

Parce qu'ils se situent dans une drôle de zone.

Ils doivent comprendre :

Le monde affaire

  • processus
  • workflows
  • UX

Le monde Microsoft

  • Dataverse
  • Power Apps
  • Power Automate
  • Entra ID

Le monde TI

  • API
  • OAuth
  • Azure
  • ALM
  • DevOps

Ce n'est plus vraiment du low-code.

C'est devenu une expertise spécialisée.


Un paradoxe amusant

Plus une organisation adopte Power Platform sérieusement, plus elle finit par recréer les rôles qu'elle voulait éliminer.

On voit apparaître :

Centre d'excellence (CoE)
Architecte Power Platform
Développeur Power Platform Senior
Administrateur Dataverse
Spécialiste Gouvernance

alors que le discours de départ était :

« Les utilisateurs vont le faire eux-mêmes. »


Ce qui est quand même vrai

Là où Microsoft a gagné son pari, c'est sur la productivité.

Un développeur Power Platform compétent peut souvent livrer une application métier en :

2 à 6 semaines

alors qu'une équipe traditionnelle aurait peut-être besoin de :

3 à 6 mois

Donc même si la ressource coûte plus cher à l'heure :

150$/h

au lieu de :

100$/h

le coût total du projet peut rester inférieur.


À mon avis, la vision du citizen developer a surtout servi d'argument marketing pour ouvrir les portes des organisations. Aujourd'hui, dans les grandes entreprises et les ministères, Power Platform est davantage une plateforme de développement spécialisée à haute productivité qu'un véritable outil destiné aux utilisateurs d'affaires autonomes.

Quand je regarde les offres d'emploi actuelles, je vois rarement des postes de "citizen developer". Je vois plutôt :

  • Architecte Power Platform
  • Développeur Power Apps Senior
  • Consultant Dataverse
  • Spécialiste ALM Power Platform

Ce qui est assez révélateur de l'évolution réelle du marché.

Soyons un peu plus technique et concret: Interfaces avec éléments sur mesure (fetch xml, JavaScript, tables liées, Liquid code

Ah, Liquid est un des concepts qui surprend souvent les développeurs traditionnels lorsqu'ils arrivent dans Power Pages.

La réponse courte :

Liquid est un moteur de templates (template engine) qui permet d'injecter dynamiquement des données Dataverse dans les pages Web Power Pages.


Une analogie pour un développeur .NET

Si tu viens du monde ASP.NET :

Razor

<h1>@Model.Nom</h1>

Liquid

<h1>{{ user.fullname }}</h1>

Liquid joue un rôle similaire à Razor :

  • mélange HTML et données
  • génère le contenu à l'exécution
  • permet des conditions et des boucles

D'où ça vient ?

Liquid a été créé à l'origine par Shopify.

Microsoft l'a adopté dans :

  • Power Pages
  • Dynamics Portals (anciennement Adxstudio)

et l'a enrichi avec des objets spécifiques à Dataverse.


Exemple simple

Imaginons que l'utilisateur connecté est :

François Pouliot

Dans Power Pages :

Bonjour {{ user.fullname }}

génère :

Bonjour François Pouliot

Boucler sur des données Dataverse

Supposons une table :

Projet

avec :

Nom
Portail RH
Gestion Inventaire
CRM

Liquid :

{% fetchxml projets %}
<fetch>
<entity name="cr1_projet">
<attribute name="cr1_nom"/>
</entity>
</fetch>
{% endfetchxml %}

<ul>
{% for projet in projets.results.entities %}
<li>{{ projet.cr1_nom }}</li>
{% endfor %}
</ul>

Produit :

<ul>
<li>Portail RH</li>
<li>Gestion Inventaire</li>
<li>CRM</li>
</ul>

Le fameux FetchXML

Et c'est là qu'on découvre souvent la réalité de Power Pages...

Tu pourrais croire que tout est low-code.

Mais très rapidement tu vois apparaître :

{% fetchxml %}

qui contient :

<fetch>
...
</fetch>

appelé FetchXML.

FetchXML est essentiellement :

le langage de requêtes Dataverse.

Un peu comme :

SELECT *
FROM Projet

mais version Microsoft.


Pourquoi les développeurs Power Pages deviennent rares

Quand ton portail devient sérieux, tu dois connaître :

Frontend

  • HTML
  • CSS
  • JavaScript

Power Platform

  • Dataverse
  • Tables
  • Sécurité

Power Pages

  • Liquid
  • FetchXML

Authentification

  • Entra ID
  • Contacts
  • Web Roles

À ce moment-là, tu n'es plus vraiment dans le low-code.


Ce que Liquid permet

Conditions

{% if user %}
Bienvenue {{ user.fullname }}
{% endif %}

Boucles

{% for projet in projets %}
...
{% endfor %}

Variables

{% assign nom = user.fullname %}

Appels Dataverse

{% fetchxml %}

Contrôle de sécurité

{% if user.webroles %}

Les limites

Liquid n'est pas un vrai langage de programmation.

Tu ne peux pas facilement faire :

  • logique complexe
  • algorithmes
  • traitements massifs
  • appels API avancés

Pour ça on finit souvent avec :

Liquid
+
JavaScript
+
Web API Dataverse

voire

Power Pages
+
Azure Function
+
API .NET

La vision d'architecte

Personnellement, je décris souvent Power Pages comme :

WordPress
+
Dataverse
+
Dynamics

et Liquid comme :

Razor Lite

ou

JSP des années 2000 modernisé

Son rôle principal est :

prendre des données Dataverse et les injecter dans des pages HTML dynamiques.

C'est d'ailleurs souvent le moment où les développeurs découvrent que derrière le marketing low-code, Power Pages est en réalité une plateforme assez technique. Dès que les besoins dépassent les formulaires et listes standard, on se retrouve rapidement à écrire du Liquid, du FetchXML et du JavaScript, ce qui ressemble beaucoup plus à du développement web traditionnel qu'à du low-code.

Ark, encore des patantes à mêler dans le HTML

😂 Oui, c'est souvent la réaction des développeurs qui arrivent dans Power Pages après avoir travaillé avec Razor, React ou Angular.

Tu regardes un fichier et tu vois :

<div class="container">
{% if user %}
<h1>{{ user.fullname }}</h1>
{% endif %}
</div>

Et ton cerveau te dit :

« Ah non... pas encore du code caché dans le markup... »


L'histoire du développement web est d'ailleurs une succession de tentatives pour sortir la logique du HTML :

ASP Classic      <% ... %>
PHP <?php ... ?>
JSP <% ... %>
ASP.NET WebForms <%# ... %>
Razor @...
Liquid {{ ... }}
React JSX { ... }
Angular *ngFor
Vue {{ ... }}

À chaque génération, on promet :

« Cette fois-ci, la séparation des responsabilités sera parfaite. »

Puis on finit toujours par remettre un peu de logique dans les vues parce que c'est pratique.


Ce qui risque particulièrement de t'irriter dans Power Pages, c'est le combo :

{% fetchxml %}
...
{% endfetchxml %}

Autrement dit :

+ HTML
+ Template
+ Requête Dataverse

dans le même fichier.

Pour un architecte habitué à :

Controller

Service

Repository

SQL

ça donne parfois une impression de retour en arrière.


Le côté amusant, c'est que Microsoft vend souvent Power Pages comme du low-code.

Puis tu ouvres un vrai portail de production et tu trouves :

HTML
CSS
Bootstrap
JavaScript
Liquid
FetchXML
Dataverse Security
Web Roles
Web API

et tu te dis :

« Les développeurs ont juste été remplacés par des développeurs Power Platform. »


C'est d'ailleurs une des raisons pour lesquelles les ressources Power Pages expérimentées sont recherchées. Les projets simples restent low-code, mais dès qu'un client demande :

  • une expérience utilisateur personnalisée ;
  • des règles d'affichage complexes ;
  • des intégrations externes ;
  • des performances acceptables sur de gros volumes ;

on se retrouve à faire du développement web assez traditionnel, simplement avec un ensemble d'outils Microsoft différent.

En tant que développeur .NET, tu vas probablement avoir le même réflexe que beaucoup de gens :

« Si je dois écrire du HTML, du JavaScript, des templates, des requêtes et gérer la sécurité... pourquoi ne pas faire un vrai frontend React/Blazor et appeler une API ? »

Et c'est exactement la question qui déclenche la plupart des débats d'architecture autour de Power Platform. 😄

Est-ce que Power Pages brise les standards HTML autant que SharePoint le faisait dans sont temps (les vieilles version OnPrem), Je me rappelle, que sur cela, c'était pas mal de la M...

Je vais vérifier la doc Microsoft récente pour te répondre sans te raconter des choses dépassées, puis je te fais la comparaison avec l’ancien SharePoint.

Oui — mais pas de la même façon que les vieilles versions SharePoint OnPrem.

Avec Power Pages, Microsoft documente clairement que tu peux créer des mises en page personnalisées avec HTML, Liquid, JavaScript et CSS; Liquid est traité côté serveur et le résultat envoyé au navigateur est du HTML brut. Donc, sur le plan du navigateur, ce n’est pas un moteur qui “invente” son propre rendu propriétaire: il génère du HTML standard.

Là où ça devient moins “pur”, c’est que la logique métier et le markup sont souvent mélangés dans les web templates et les pages, et Microsoft indique même que les web templates servent à construire des page layouts complets, des headers et footers personnalisés, et qu’on y met du Liquid pour le contenu dynamique.

Donc, mon jugement d’architecte serait :

  • Power Pages : globalement plus propre côté standards web, parce que ça reste du HTML/CSS/JS rendu par le navigateur, avec un moteur de template connu.
  • Mais : ça peut vite devenir “du code dans du code”, avec du Liquid partout, donc la lisibilité et la maintenabilité peuvent se dégrader si on abuse des templates.
  • SharePoint classique OnPrem : l’expérience historique était souvent plus lourde et plus propriétaire dans la pratique; Microsoft a d’ailleurs séparé les anciennes pages “classic” des pages “modern” et les pages classiques utilisent une autre logique de modèle.

Donc, pour te répondre franchement : Power Pages brise moins les standards HTML que l’ancien SharePoint classique, mais ça peut quand même donner la même sensation de “patentes mêlées dans le HTML” dès qu’on sort des cas simples.

Si tu veux, je peux te faire un comparatif très concret Power Pages vs SharePoint classique vs React/ASP.NET en mode “ce que tu gagnes / ce que tu perds”.

Dans le vieux SharePoint, on voyait vraiment le ASPX

Ah oui, là tu réveilles des souvenirs... 😄

Dans les vieux SharePoint 2007 / 2010 / 2013 OnPrem, on était souvent dans un mélange assez étrange de :

<asp:Content>
<SharePoint:SPWebPartManager>
<WebPartPages:WebPartZone>
<SharePoint:ProjectProperty>

avec :

Feature.xml
Elements.xml
Master Pages
Page Layouts

et parfois même :

Code Behind

attaché à la page.

Quand tu inspectais le HTML généré, tu voyais souvent des choses comme :

<input id="ctl00_PlaceHolderMain_g_123456..." />

ou

<div id="MSO_ContentTable">

et d'autres IDs complètement générés par ASP.NET.


Le problème fondamental était que SharePoint était construit sur :

ASP.NET Web Forms

Donc tu héritais de tous les défauts de Web Forms :

  • ViewState gigantesque
  • Contrôles serveur
  • IDs dynamiques
  • HTML parfois étrange
  • Difficulté à contrôler le markup final

Quand tu voulais faire quelque chose de simple en JavaScript :

document.getElementById(...)

tu passais parfois une heure à trouver l'ID final généré. 😂


Power Pages est très différent à cet égard.

Quand tu écris :

<h1>{{ user.fullname }}</h1>

le navigateur reçoit simplement :

<h1>François Pouliot</h1>

Pas de :

__VIEWSTATE

Pas de :

ctl00$PlaceHolderMain$...

Pas de :

SPGridView

Pas de :

WebPartZone

Pour un développeur web moderne, Power Pages ressemble davantage à :

HTML
+
Template Engine (Liquid)
+
Bootstrap
+
JavaScript

qu'à :

ASP.NET Web Forms
+
SharePoint
+
Contrôles serveur

Donc si ta crainte est :

« Est-ce que je vais revoir des pages ASPX avec des balises SharePoint partout et du HTML généré incompréhensible ? »

La réponse est :

Non. Heureusement, Microsoft a beaucoup appris depuis l'époque SharePoint Web Forms.

Par contre, tu vas découvrir d'autres plaisirs :

{% fetchxml %}

dans le HTML,

des permissions Dataverse qui font disparaître des données sans avertissement,

et des comportements parfois mystérieux liés au cache du portail. 😄

Bref, ce n'est plus le cauchemar ASPX/Web Forms de SharePoint 2010, mais ce n'est pas non plus l'élégance architecturale d'un frontend React qui consomme une API .NET bien conçue. C'est un compromis orienté productivité, avec ses propres irritants.

Et est-ce que Power Apps dans son écosystème peut faciliter au moins le développement du BackEnd (généré des API), au moins ceci serait intéressant si au final il faut encore faire du HTML

Oui, et c'est probablement là que se trouve la valeur la plus sous-estimée de la plateforme pour quelqu'un comme toi.

Quand on présente Power Platform, on parle toujours de :

  • formulaires
  • écrans
  • low-code
  • citizen developers

Mais pour un architecte, le vrai sujet intéressant est souvent :

Dataverse comme Backend-as-a-Service (BaaS).


Ce que Dataverse te donne automatiquement

Imaginons que tu crées :

Client
Projet
Facture

avec leurs relations.

Dataverse génère automatiquement :

API REST

Tu obtiens essentiellement :

GET /api/data/v9.2/accounts
GET /api/data/v9.2/accounts(<id>)
POST /api/data/v9.2/accounts
PATCH /api/data/v9.2/accounts(<id>)

sans écrire une ligne de .NET.


Métadonnées

Tu peux même découvrir le modèle :

/api/data/v9.2/$metadata

comme un service OData.


Sécurité

Le gros morceau.

Quand tu exposes une API .NET :

Controller
+
JWT
+
RBAC
+
Claims
+
Policies

Dans Dataverse :

Role
+
Team
+
Business Unit
+
Table Permission

L'API respecte automatiquement les permissions.


Là où ça devient intéressant

Tu pourrais théoriquement faire :

React
|
Dataverse Web API

sans backend .NET.

C'est un pattern que l'on voit parfois.


Mais attention...

Très rapidement tu frappes certaines limites.

Par exemple :

Cas simple

Client
Projet
Facture

Dataverse est excellent.


Cas complexe

Calcul actuariel
Moteur de tarification
Optimisation
Workflow complexe

Là, ça devient douloureux.


La réponse Microsoft

Pour la logique serveur, Microsoft pousse :

Power Automate

Pour :

CRUD
Notifications
Approbations

Plugins Dataverse

Développés en C#.

Oui, du vrai C#.

public class AccountPlugin : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
...
}
}

C'est souvent une surprise pour les gens.

Quand les besoins deviennent sérieux :

On finit par écrire du .NET quand même.


Le pattern que je trouve le plus intéressant

Pour une équipe expérimentée :

Dataverse
|
+--> Tables
+--> Sécurité
+--> API
+--> Audit
|
Azure Functions / API .NET
|
React / Power Apps / Power Pages

Tu utilises Dataverse pour éviter de réinventer :

  • CRUD
  • permissions
  • audit
  • stockage

et tu gardes le code métier complexe dans du vrai code.


Le piège

Beaucoup d'équipes tombent dans :

Dataverse
+
Power Automate
+
50 flows
+
20 règles
+
10 intégrations

et après 3 ans :

personne ne sait vraiment où est la logique métier.

Pour un architecte qui aime les architectures propres, c'est souvent le principal risque.


Mon avis

Si tu me dis :

"Je dois faire du HTML/Liquid dans Power Pages, alors quel est le gain ?"

Je te répondrais :

Le gain n'est pas Power Pages.

Le gain est plutôt :

Dataverse
+
API déjà générées
+
Sécurité déjà gérée
+
Audit déjà géré
+
Administration déjà gérée

Ça peut représenter facilement 30 à 50 % du backend d'une application de gestion.

Donc oui, il y a une vraie valeur backend. Ce n'est simplement pas un backend "propre" au sens où un architecte .NET imaginerait un ensemble de microservices bien séparés. C'est davantage une plateforme qui te fournit un énorme socle applicatif prêt à l'emploi, au prix d'une perte de contrôle et d'un fort couplage à Microsoft.

C'est d'ailleurs pour cette raison que plusieurs architectes finissent par voir Dataverse non pas comme une base de données, mais comme une sorte de Salesforce/Dynamics platform générique : la base de données est presque le détail le moins intéressant de l'ensemble.

Low Code mon amour (sarcasme)

Explique moi ce qu'est le DataVerse dans le monde de PowerApps, une simple BD?, une BD objet, c'est un peu abstrait pour moi... Data...