Architecture Technique

Architecture de BWEB

Vue d'ensemble

"Vous connaissez 4D ? Vous connaissez BWEB."

BWEB est un composant 4D qui permet de construire des applications web completes (sites publics, back-offices, portails clients) entièrement depuis une base 4D, sans ecrire de HTML/CSS/JS manuellement.

Les pages sont stockees comme données structurees dans les tables 4D. Le framework lit ces données, généré du HTML + Tailwind CSS à la volee, et le sert au navigateur.

Les 4 piliers

PilierDescription
Composant 4DTables, méthodes, classes. S'ajoute a tout projet 4D existant.
Tailwind CSSCSS utility-first. Design moderne et responsive out of the box.
Editeur WYSIWYGDrag and drop. Aperçu instantane. Le Dev Panel.
ORDA natifConnexion directe aux DataClasses. Pas de REST, pas d'API intermediaire.

Architecture technique

Le serveur 4D généré le HTML complet. Le navigateur recoit une page prete à l'emploi. Les interactions passent par POST + WebSocket.

Navigateur (Client)Serveur 4D
HTML + Tailwind CSSWebSocket
HTTP
POST
BSPK_WEB_ON_CONNECTION (routeur principal)
bweb.js (framework JS)Tables : BSPK_WEB_DOMAIN, BSPK_WEB_DOMAIN_MENU, BSPK_WEB_CONTENT
Bootstrap IconsMoteur : WebFormController, Generateur CSS Tailwind, BSPK_Translate (i18n)

Rendu serveur vs client

BWEB a fait le choix du rendu serveur (SSR) plutot que du rendu client (React/Vue). Pourquoi ?

CaracteristiqueReactBWEB
Competences requises4D + React + TypeScript4D uniquement
Licence4D REST requise4D Web suffisant
SécuritéLe client decideLe serveur decide
Blocs protegesCaches en CSSAbsents du HTML
EtatClient (Redux/Zustand)Serveur (variables process)
Temps reelA coder soi-memeWebSocket intégré
Dependances frontendnode_modules (200KB+)Aucune
"Pas autorise a voir un bouton ? Le HTML du bouton n'existe pas."

Structure des tables

NiveauTableDescription
1BSPK_WEB_DOMAIN1 domaine = 1 site web
2BSPK_WEB_DOMAIN_MENUN pages et composants par domaine
3BSPK_WEB_CONTENTN blocs par page (arbre UI via parentUuid)

Tables de support

TableRole
BSPK_WEB_DOMAIN_MENU_PARAMETERURLs dynamiques ({supplierId}...)
BSPK_WEB_REDIRECTRedirections 301/302
BSPK_WEB_DOMAIN_LANGLangues par domaine
BSPK_WEB_LIST / LIST_ITEMListes deroulantes
BSPK_WEB_COOKIE_CONSENTConsentement RGPD
BSPK_USER / GROUP / RIGHTUtilisateurs et permissions
BSPK_FILEFichiers et medias
BSPK_HISTORYAudit et historique

Cycle de vie d'une requête

EtapeActionDetail
1HTTPS forceSi cert.pem present, redirection automatique HTTP vers HTTPS
2Licence + SessionVerification du composant et de la session utilisateur
3Resolution URLDomaine, puis Page, puis Paramètres dynamiques
4Hook base hoteBSPH_WEB_ON_CONNECTION peut intercepter/rediriger
5Controle de sécuritéDroits d'accès, validation, filtrage POST
6RenduChargement des blocs, generation HTML + Tailwind, envoi au navigateur
7WebSocketEtablissement de la connexion temps reel pour les interactions

Avantages business

  • Pas de licence REST : POST/WebSocket = serveur web 4D standard. 300K utilisateurs = difference de cout massive.
  • Zero dépendances frontend : Pas de React, Angular, Vue. Pas de bundle 200KB+. Pas de breaking changes.
  • Entity serveur : Source unique de verite. Pas de copie client. STAMP gere nativement par ORDA.
  • Node.js = outil serveur : Tailwind CLI, Puppeteer (PDF). Le navigateur ne recoit que HTML + Tailwind + vanilla JS.