Bonjour,
Je me jette enfin dans un projet qui me tiens à coeur et aurais besoin d'un petit coup de main pour vérifier que je ne m'oriente pas dans une mauvaise direction (je suis assez novice en .Net !)
Je prépare une application qui fais beaucoup de traitement sur des données loadées à partir de fichiers et qui doit pouvoir afficher les résultats ou les données elles-mêmes sur un client.
Pour l'instant, mon client est une application console, mais va ensuite etre une WinForm pour afficher des courbes...
Je prévois de valider la plupart du projet par des tests avec utilisation de Mocks.
Je parle beaucoup en mode client/serveur du fait de mes antécédants en entreprises, mais mon "moteur de traitement" n'aura toujours qu'un "client" à la fois, il aura par contre parfois beaucoup de traitement à faire (à priori, par la lib C++ BOOST), potentiellement longs et donc asynchrones.
Ma vue de la chose:
* Un moteur de traitement dans une assembly (en dll)
- Un thread principal (lancé par le client) qui gère les autres
- Un thread de load des données (à partir des fichiers) dans les DataSets
- Un thread de validation des données des DataSet (au fil de l'eau, après les loads)
- Un thread de gestion des travaux de traitement
- Un ensemble de threads de traitement des données par appel à Boost (C++)
* Les clients (console ou WinForm) en EXE avec une ref sur le moteur
La communication se ferait par Requetes du client au Serveur pour la majorité mais aussi avec des Events pour les fins de traitement asynchrones...
D'après ce que j'ai pu voir (toujours en entreprise), les tests (en particulier avec des Mocks) sont largement facilités par l'utilisation d'interfaces pour les types de données qui passent entre les différentes couches.
J'en viens donc à penser à "normaliser" mes types de données de communication entre le moteur de data et le client (du type IRequest/Ireply).
N'ayant jamais fais de projet de ce type, je me demande s'il est répandu d'avoir des types spéciaux de données pour les échanges DLL/EXE et surtout si cela ne va pas allourdir inutilement le tout...
Avez-vous des expériences sur ce type d'architecture ? Si oui, avez-vous des recommandations ? Est-ce que je parts dans la bonne direction ou est-ce que je devrait repenser certains morceaux ?
Merci d'avance de votre aide et de votre retour d'experience !
--
ElTchoupi
Partager