Giter VIP home page Giter VIP logo

bushandlerwindowsservice's Introduction

BusHandlerWindowsService

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).

Les objectifs

  • 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)

image

  • 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

Worflow visé

Messaging Workflow - from command to business library  (1)

Découpage

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

image

Test en Debug

Pour tester, rien de plus simple, faire simplement un lancement multiple :

image

NServiceBus va s'appuyer sur le mode LearningTransport (pas besoin de RabbitMQ ici)

Déploiement ou Test en Release

RabbitMQ

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.

Service Windows

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)

bushandlerwindowsservice's People

Contributors

acoudene avatar anthony-technidata avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.