42 lines
2.8 KiB
Markdown
42 lines
2.8 KiB
Markdown
|
# Architecture de principe
|
|||
|
|
|||
|
Fainsin Laurent - 2SN M2 \
|
|||
|
Guillotin Damien - 2SN M2
|
|||
|
|
|||
|
## Consignes
|
|||
|
|
|||
|
- On peut raisonnablement attendre que vous ayez au minimum une première version centralisée (sans eventRegister) qui fonctionne, avec un plan de test complet pour cette version et les suivantes
|
|||
|
- Il serait plutôt normal que vous ayez une version centralisée complète (avec EventRegister) qui soit opérationnelle sur des scénarios/tests de base.
|
|||
|
- Il est envisageable d'avoir une ébauche/une réflexion un peu avancée sur la version client-serveur
|
|||
|
- Un rapport provisoire succinct (environ 2 pages) présentant l’architecture, les algorithmes des opérations essentielles, une explication claire des points délicats et de leur résolution envisagée (ou des blocages rencontrés)
|
|||
|
- Le code complet de la partie réalisée.
|
|||
|
|
|||
|
|
|||
|
## Plan de travail inital
|
|||
|
|
|||
|
### Version en mémoire partagée
|
|||
|
|
|||
|
Création de l'espace partagé de données typées Linda centralisé.
|
|||
|
Il faut dans un premier temps implémenter un jeu de primitives spécifiques (les méthodes de l'interface).
|
|||
|
L'ensemble des primitives `write`, `take`, `tryTake` et `takeAll`, `read`, `tryRead` et `readAll` et `eventRegister` ont été réalisées.
|
|||
|
Nous n'avons écrits que quelques tests dans les `.java`, nous avons pour l'instant effectué la pluspart d'entre eux "en live" dans un ~REPL que Damien à écrit.
|
|||
|
|
|||
|
### Version client / mono-serveur
|
|||
|
|
|||
|
Cette version ne diffère pas beaucoup de la précédente, la seule différence se situe dans l'implémentation de l'interface RMI.
|
|||
|
Ainsi nous avons créé l'interface `LindaRemote`, reprenant les méthodes de `Linda`.
|
|||
|
De même nous avons créé la classe `LindaServer` implémentant `LindaRemote` et dont le but est de publier dans un registre RMI une instance `CentralizedLinda`. `LindaClient` vient simplement chercher une instance `Linda` dans le registre RMI et passe l'ensemble de ses actions à cette instance.
|
|||
|
|
|||
|
### Application Eratosthène
|
|||
|
|
|||
|
Cette application est constituée d'un serveur responsable de distribuer les tuples à tester, et de clients responsables d'effectuer des calculs sur ces tuples.
|
|||
|
Ainsi `Server` instancie un `LindaServer` de la partie précédente et initialise le tuple space avec des tuples d'entiers dont l'on souhaite tester la primalité. Chaque `Client` se contente simplement de se connecter au serveur et de vérifier la primalité d'un tuple, une fois son calcul terminé, il place le résultat dans le tuple-space. Cette dynamique persiste tant qu'il existe encore un entier non testé dans le tuple-space.
|
|||
|
|
|||
|
|
|||
|
### Application Levenshtein
|
|||
|
|
|||
|
Cette application fonctionne directement grâce au code `Server` et `Client` écrit précédemment, mais aucune des améliorations demandés dans le sujets n'ont encore été rédigées.
|
|||
|
|
|||
|
### Application Whiteboard
|
|||
|
|
|||
|
Nous n'avons pas encore avancé sur cette partie.
|