Bibliothèque / SDK
HashLoad/horse avatar
HashLoad/horse

Horse : un framework web inspiré d'Express pour Delphi et Lazarus

Aperçu du projet : Framework Web rapide, opiniâtre et minimaliste pour Delphi. Horse est un framework Web inspiré d'Express pour Delphi et Lazarus.

1 376 étoiles247 forksPascalMIT
GitHub

En bref

De quoi s’agit-il ?
Horse est un framework web pour Delphi et Lazarus, inspiré d'Express, minimaliste et opiné, avec des providers de transport interchangeables selon le type de déploiement.
À qui s’adresse-t-il ?
Horse découple les gestionnaires de routes du transport HTTP sous-jacent grâce à une sélection de provider à la compilation. Le README ne contient ni benchmarks de performance ni statistiques d'utilisation ; ces affirmations restent à vérifier.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement Pascal, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 18 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Un framework inspiré d'Express pour Delphi et Lazarus

Horse est un framework web pour Delphi et Lazarus, conçu d'après Express. La description du dépôt le qualifie de rapide, opiné et minimaliste. Le README illustre l'idée centrale avec un court exemple : THorse.Get enregistre une route, le rappel envoie une réponse avec Res.Send, et THorse.Listen démarre le serveur. L'installation passe par le gestionnaire de paquets Boss avec la commande boss install horse, et un Horse Wizard optionnel assure l'intégration à l'IDE.

Enregistrement des routes et traitement des requêtes

En Delphi, les gestionnaires de routes peuvent être écrits comme des procédures anonymes. L'exemple Lazarus utilise une procédure nommée : GetPing(Req: THorseRequest; Res: THorseResponse) est enregistrée pour /ping et renvoie la chaîne 'pong'. Les deux exemples démarrent le serveur avec THorse.Listen(9000). Les détails comme les paramètres de route, les chaînes de requête et les groupes de routes sont traités dans une section de documentation séparée, et non dans le README lui-même.

Providers de transport interchangeables

Horse sépare le transport HTTP en providers. Pour les applications auto-hébergées, le provider par défaut est Indy sur Delphi et fphttpserver sur FPC. Les autres providers incluent CrossSocket, mORMot2, ICS, HttpSys, epoll et IOCP, sélectionnés par des définitions de compilation. Le README insiste sur le fait que le même code de gestionnaire fonctionne sur n'importe quel provider. CrossSocket et mORMot2 apportent des E/S asynchrones, ICS fournit le support OpenSSL 3.x/4.x, et HttpSys utilise la pile http.sys en mode noyau de Windows.

Types d'applications auto-hébergées et hébergées par le serveur

Le déploiement se divise en deux catégories. Les applications auto-hébergées s'exécutent sous le provider choisi et comprennent Console, VCL, Daemon (service Windows ou daemon systemd Linux), LCL et HTTPApplication (FPC). Les types hébergés par le serveur confient la socket à un serveur web externe : module Apache, ISAPI, CGI et FastCGI, chacun activé par sa propre définition. Le README présente un tableau de prise en charge Delphi et Lazarus pour chaque type.

Middleware officiels et communautaires

Les middleware officiels sont maintenus dans des dépôts séparés : JSON, Basic Auth, CORS, octet-stream, JWT, gestion des exceptions, journalisation et compression. Le README liste également une grande collection de middleware communautaires, dont ETag, pagination, limitation de débit, upload, healthcheck, fichiers statiques, RBAC et OpenTelemetry. Chacun est distribué via son propre dépôt GitHub, avec compatibilité Delphi et Lazarus indiquée dans le tableau.

Capacités intégrées documentées

Le README renvoie à une documentation couvrant le support WebSocket (RFC 6455), les Web Streams et SSE, l'enregistrement de middleware avec la procédure Next, les hooks de cycle de vie (onRequest, preParsing, preValidation, onSend, onResponse), l'arrêt gracieux, les serveurs multi-instances et un pool de buffers thread-safe. Des guides séparés traitent de l'écriture de middleware personnalisé, du choix des providers et d'aides-mémoire de déploiement.

Support des compilateurs et licence

Le README liste une prise en charge officielle de Delphi de XE7 à Delphi 13 Florence, ainsi que FPC. Le projet est distribué sous licence MIT, qui autorise l'utilisation, la copie, la modification, la fusion, la publication, la distribution, la sous-licence et la vente des copies, à condition d'inclure l'avis de droit d'auteur et de licence. La licence précise que le logiciel est fourni « tel quel », sans garantie d'aucune sorte.

Ce que le dépôt permet de vérifier · hashload horse

Pour une première vérification, installez Horse avec boss install horse, compilez l'exemple /ping sous Delphi ou Lazarus, puis comparez le comportement du provider par défaut avec celui sélectionné par définition HORSE_CROSSSOCKET ou HORSE_PROVIDER_MORMOT. Observez le code du gestionnaire THorse.Get et la réponse Res.Send avant de conclure sur la portabilité. Les fichiers doc/providers.md, doc/deployment.md et doc/graceful-shutdown.md donnent les points de contrôle propres au projet. La licence MIT convient à une intégration commerciale si les avis requis restent présents, mais elle ne fournit aucune garantie de fonctionnement ni de support.

Conclusion éditoriale

Horse découple les gestionnaires de routes du transport HTTP sous-jacent grâce à une sélection de provider à la compilation. Le README ne contient ni benchmarks de performance ni statistiques d'utilisation ; ces affirmations restent à vérifier.

Sources officielles

  1. Official README
  2. Project repository
  3. Release notes
Notes de la communauté

Notes de la communauté