Show Service Bus Handler (NServiceBus) hosted in a windows service and executable in .Net 7, which then, call business MFC C++ dlls. Message management will be ensured by RabbitMQ (inside Docker container).
- Démontrer qu’on peut se brancher sur une version de NServiceBus sous licence perpétuelle (version : 7.1.6). Note : on ne peut pas prendre les versions récentes sans payer en locatif désormais et suivant le nombre de endpoints.
- Démontrer qu’on peut créer un service NT via .Net 7
- Montrer que l’exécutable fourni n’a pas besoin d’installer quoi que ce soit sur la cible, j’ai choisi de produire un exécutable unique incluant toutes les dlls nécessaires dont celles de .Net 7 (Mode de publication avec les options : Produce single file + Self-contained)
- Montrer qu'on peut continuer à faire de l'interop vers du C++ MFC via .Net 7 et un wrapper C++/CLI
- Appliquer RabbitMQ en dessous NServiceBus
La solution du prototype est découpée en 7 projets :
- 1 projet (exécutable) qui émet une commande CreateOrder : PublisherApp
- 1 projet (exécutable) qui reçoit la commande CreateOrder et émet en ensuite un évènement OrderCreated : SubscriberApp
- 1 projet (exécutable ou Service Windows) qui reçoit l’évènement OrderCreated : WindowsService
- 1 projet de messages à échanger entre les différents exécutables : Messages
- 1 projet qui prend en charge tous les handles de récupération des messages : BusHandler
- 1 projet de librairie MFC C++ qui fait du pur métier : MFCBusinessLibrary
- 1 projet de wrapper d'interop C++/CLI entre la librairie MFC C++ et .Net : WrapperBusinessLibrary
Pour tester, rien de plus simple, faire simplement un lancement multiple :
NServiceBus va s'appuyer sur le mode LearningTransport (pas besoin de RabbitMQ ici)
Faire tourner RabbitMQ via Docker.
docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management
Faire en sorte d'avoir une chaîne de connexion RabbitMQ
- virtual host :
vhost-bhws
- user =
user-bhws
ayant accès au virtual host - password =
p@ssw0rd
host=localhost:5672;username=user-bhws;password=p@ssw0rd;virtualhost=vhost-bhws
Note : des explications pour réaliser ce paramétrage pourront être ajoutées à ce document.
Pour installer le service windows sur votre machine, rien de plus simple faire dans un terminal :
- WindowsService /Install
- Puis faire Run dans la console services.msc
Pour désinstaller le service windows, faire :
- WindowsService /Uninstall
- Attention, j’ai pas corrigé mais il faut que le service soit démarré pour que la suppression se fasse correctement (je fais d’abord un équivalent de sc stop puis d’un sc delete)