Post-mortem d’une application
métier

30/01/2014
Votre interlocuteur
Matthieu DUFOURNEAUD
Référent Technique - Exakis
matthieudu@exakis.com
+33 6 65 93 41 05
Ordre du
jour

Présentation
Ordre du
jour

Présentation
Conception d’une application métier
Ordre du
jour

Présentation
Conception d’une application métier

Bilan des choix techniques
Ordre du
jour

Présentation
Conception d’une application métier

Bilan des choix techniques
Discussion et question
Ordre du
jour

Présentation

Conception d’une application métier
Bilan des choix techniques
Discussion et question
Présentation
Exakis
Exakis, première Entreprise de Services
du Numérique Microsoft
Notre métier
Intégration
de solutions
pour l'entreprise
basée sur
la plateforme
Microsoft

Notre
positionnement
Partenaire
pure-player
de Microsoft
leader en France
Notre objectif
Vous apporter
des solutions
technologiques
qui vous
permettront
d’améliorer
vos performances
Une couverture large et cohérente des
besoins de nos clients
Innovation
et solutions
logicielles
Environnement
utilisateur et
mobilité

Social
et
collaboration

Datacenter
et cloud

Communications
unifiées

Sécurité et
gestion des
identités
Présentation
MUG Lyon
Un objectif
Microsoft User Group lyonnais pour partager et débattre
autour de technologies passionnantes et innovantes :)
Un collectif










Clément BOUILLIER / DevLyon / @clem_bouillier
Matthieu DUFOURNEAUD / Exakis / @mdufourneaud
Grégory OTT / Tekigo / @gregory_ott
Emilien PECOUL / DevLyon / @Ouarzy
Florent PELLET / DevLyon / @florentpellet
Yannick RINGAPIN / MCNEXT / @BlackBeard486
Vincent THAVONEKHAM / Objet Direct / @vThavo
Benjamin WISNIEWSKI / Apollo SSC / @_b3w
Vous ? (cotisation 5€)
Des évènements
 Chaque dernier jeudi du mois
 Idées de sessions
 Speakers
Nous contacter





muglyon.github.io
Twitter @MUGLyon
Facebook / www.facebook.com/groups/118200884904279
LinkedIn / www.linkedin.com/groups/MUG-Lyon-4302523
Ordre du
jour

Présentation
Conception d’une application metier
Quel type d’application ?
Quel type de services Web ?
Quel ORM ?
Quel parser d’expression ?
Comment concilier génération de code et polymorphisme ?
Comment simplifier l’utilisation cliente d’un service Web REST ?
Comment conjuguer les contraintes de consultation et d’édition ?

Bilan des choix techniques
Discussion et Questions
Conception
d’une
application
métier
Besoin métier
 Refonte d’une application de calculs de ristournes
 Prévoir possibilité simulations de calculs
 Simulations réalisées chez le client en déconnecté
Quel type d’application ?
 Web
 Native
Quel type d’application ?
 Web



Client / HTML/CSS/JS
Services / C#

 Native
Quel type d’application ?
 Web
 Native



Client / XAML/C#
Services / C#
Quel type d’application ?
 Web
 Native


Permet de partager le moteur de calculs des services avec le
client
Quel type de services Web ?
 TCP
 HTTP SOAP
 HTTP REST
Quel type de services Web ?
 TCP






Simplicité
Débuggabilité
Intéropérabilité
Cache
Performance

 HTTP SOAP
 HTTP REST
Quel type de services Web ?
 TCP
 HTTP SOAP






Simplicité
Débuggabilité
Intéropérabilité
Cache
Performance

 HTTP REST
Quel type de services Web ?
 TCP
 HTTP SOAP
 HTTP REST






Simplicité
Débuggabilité
Intéropérabilité
Cache
Performance
Quel type de services Web ?
 TCP
 HTTP SOAP
 HTTP REST



Meilleur débuggabilité
Cache HTTP natif disponible
Quel ORM ?
 Entity Framework
 NHibernate
Quel ORM ?
 Entity Framework





LINQ
Génération automatique des entités
Mapping automatique des entités
« Boîte noire »

 NHibernate
Quel ORM ?
 Entity Framework
 NHibernate






LINQ
Logs
Filtres
Pas de génération automatique des entités
Pas de mapping automatique des entités
Quel ORM ?
 Entity Framework


Génération automatique des entités






LINQ
Logs
Filtres
Mapping automatique par convention

 NHibernate
Quel parser d’expression ?
 Irony
 ANTLR
 GOLD Parsing System
Quel parser d’expression ?
 Irony




Grammaire
Débuggabilité
Communauté

 ANTLR
 GOLD Parsing System
Quel parser d’expression ?
 Irony
 ANTLR




Grammaire
Débuggabilité
Communauté

 GOLD Parsing System
Quel parser d’expression ?
 Irony
 ANTLR
 GOLD Parsing System




Grammaire
Débuggabilité
Communauté
Quel parser d’expression ?
 Irony


Grammaire en C#

 ANTLR
 GOLD Parsing System
Comment concilier génération de code et
polymorphisme ?

Impossible de
surcharger les
propriétés générées
Comment concilier génération de code et
polymorphisme ?
Comment simplifier l’utilisation cliente
d’un service Web REST ?

 Pas de découvrabilité
 URLs en chaînes de caractères rendent difficile le
refactoring
Comment simplifier l’utilisation cliente
d’un service Web REST ?

 Utilisation d’objets messages partagés entre le client et les


services
Construction automatique des URLs via convention basée
sur le type du message
Comment conjuguer les contraintes de
consultation et d’édition ?

 Consultation






Beaucoup d’écrans de consultation
Modifications fréquentes
Accès aux données spécifique à l’écran
Pas de modification des données
Dé-normalisation utile





Accès aux données commun aux écrans
Modification des données
Normalisation nécessaire

 Edition
Comment conjuguer les contraintes de
consultation et d’édition ?

 CQRS (Command Query Responsibility Segregation)
Comment conjuguer les contraintes de
consultation et d’édition ?

 CQRS-spirit
Ordre du
jour

Présentation
Conception d’une application métier

Bilan des choix techniques
Quel type d’application ?
Quel type de services Web ?
Quel ORM ?
Quel parser d’expression ?
Comment concilier génération de code et polymorphisme ?
Comment simplifier l’utilisation cliente d’un service Web REST ?
Comment conjuguer les contraintes de consultation et d’édition ?

Discussion et Questions
Bilan des
choix
techniques
Quel type d’application ?
 Simulation pas encore implémentée, ni planifiée
Quel type de services Web ?
 Débuggage facilité
 Pas de problème de latence rencontré
 Cache pas encore utilisé
Quel ORM ?





Logs essentiels aux débuggage et à l’optimisation
Utilisation transparente des filtres
Nécessité de corriger l’EDMX après sa génération
Mauvaise gestion du mapping des booléens Oracle par le
designer d’EDMX
Quel parser d’expression ?
 Grammaire codée en moins de 30 lignes de C#
Comment concilier génération de code et
polymorphisme ?

 Ça fonctionne
Comment simplifier l’utilisation cliente
d’un service Web REST ?

 Développement simplifié
 Débuggage facilité
 Organisation des messages à optimiser






Comment conjuguer les contraintes de
consultation et d’édition ?
Développement simplifié
Maintenabilité augmentée
Pas de mesure du gain en performance
Trop tôt pour mesurer le gain en évolutivité
Refactoring nécessaire pour mettre en place des bases
génériques
Ordre du
jour

Présentation
Conception d’une application métier

Bilan des choix techniques
Discussion et Questions
Discussion et Questions
Prochains évènements





Forum des communautés IT lyonnaises / mardi 4 février
Coding Dojo DDD / jeudi 20 février
MUG Lyon / Injection de dépendances / jeudi 27 février
Global Windows Azure Bootcamp: le premier GWAB à
Lyon !!! / samedi 29 mars
20140130   mug lyon - post-mortem d'une application métier

20140130 mug lyon - post-mortem d'une application métier