Le module Web
Remonter à Création d'applications serveur Web avec WebBroker
Le module Web (Web.HTTPApp.TWebModule) est un descendant de System.Classes.TDataModule ; il s'utilise de la même façon pour offrir un contrôle centralisé pour les règles de gestion et les composants non visuels dans l'application Web.
Ajoutez tout générateur de contenu que votre application utilise pour générer les messages de réponse. Il peut s'agir de générateurs de contenu intégrés, tels que Web.HTTPProd.TPageProducer, Web.DSProd.TDataSetPageProducer, Web.DBWeb.TDataSetTableProducer, Bde.DBBdeWeb.TQueryTableProducer et MidProd.TInetXPageProducer ou de descendants de Web.HTTPApp.TCustomContentProducer que vous avez créés vous-même. Si votre application génère des messages de réponse incluant des données extraites d'une base de données, vous pouvez ajouter des composants d'accès aux données ou des composants spéciaux pour écrire un serveur Web faisant office de client dans une application de base de données multiniveau.
Le module Web ne se contente pas de stocker les composants non visuels et des règles de gestion : il fait aussi office de répartiteur Web en associant les messages de requête HTTP reçus aux éléments d'action qui génèrent les réponses à ces requêtes.
Vous avez peut-être déjà un module de données paramétré avec les composants non visuels et les règles de gestion que vous souhaitez utiliser dans votre application Web. Vous pouvez alors remplacer le module Web par ce module de données : Il suffit de supprimer le module Web généré automatiquement et de le remplacer par votre module de données. Ajoutez ensuite un composant Web.HTTPApp.TWebDispatcher à votre module de données pour qu'il puisse répartir les messages de requête vers les éléments d'action, comme le ferait un module Web. Si vous voulez modifier la façon dont les éléments d'action sont choisis pour répondre aux messages de requête HTTP reçus, dérivez un nouveau composant répartiteur de Web.HTTPApp.TCustomWebDispatcher et ajoutez-le au module de données.
Votre projet ne peut contenir qu'un répartiteur. Il peut s'agir soit du module Web qui est automatiquement généré lorsque vous créez le projet, soit du composant TWebDispatcher que vous ajoutez au module de données qui remplace le module Web. Si un second module de données contenant un répartiteur est créé lors de l'exécution, l'application serveur Web générera une erreur.
Remarque : Le module Web que vous paramétrez en phase de conception est en fait un modèle. Dans les applications ISAPI et NSAPI, chaque message de requête crée un thread distinct. Une instance du module Web et de son contenu est créée dynamiquement pour chaque thread.
Avertissement : Le module Web d'une application serveur Web à base de DLL est mis en mémoire cache pour une utilisation ultérieure afin d'améliorer les temps de réponse. L'état du répartiteur et sa liste d'actions ne sont pas réinitialisés entre deux requêtes. Si vous activez ou désactivez des éléments d'action en cours d'exécution, vous obtiendrez des résultats imprévisibles lorsque ce module sera utilisé pour les requêtes client suivantes.