J'ai écrit mon application Win32 pour tester et déboguer. J'ai créé un module de données avec toutes les fonctionnalités nécessaires pour exécuter les sockets TCP et les composants IBDatabase. Après avoir testé avec succès le Datamodule dans l'environnement de l'application Win32, j'essaie de connecter le Datamodule à un modèle d'Application de Service que j'ai créé. Je n'arrive pas à le faire fonctionner. Est-ce que quelqu'un pourrait indiquer si cette stratégie d'utilisation d'une fonctionnalité Datamodule avec Component encapsulant les fonctions de service primaires est réalisable et donner un exemple de modèle simple de comment l'accrocher si c'est ??Utiliser un Datamodule dans une application de service
Répondre
Vous devez créer et initialiser votre module de données dans l'événement de démarrage du service. Veillez à ce que le datamodule n'ouvre pas les boîtes de dialogue ou autres, sinon il attendra une entrée qui ne pourrait jamais arriver (il existe des moyens pour qu'un service communique avec le bureau de l'utilisateur, mais un bon service devrait les éviter). Mais sans regarder votre code, il est difficile de dire ce qui ne va pas.
Oui, un DataModule peut fonctionner dans une application de service.
C'est exactement ce que nous avons pour nos serveurs d'applications de niveau intermédiaire.
Comme d'autres l'ont mentionné, oui, c'est certainement possible. Pour ma mise en œuvre, je ne fais que créer automatiquement mon module de données dans les options du projet. Alors mon code de service est très léger et se résume à ceci:
procedure TMyService.ServiceStart(Sender: TService; var Started: Boolean);
begin
Started := myDataModule.Startup;
end;
procedure TMyService.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
myDataModule.Cleanup;
Stopped := True;
end;
Et puis-je mettre un serveur de sockets dessus? –
Bien sûr que vous le pouvez. Vous pouvez mettre n'importe quel composant non-visuel dessus. Voir la réponse de @ ldsandon. –
Nous créons les sockets à travers le code ... –