20140130 mug lyon - post-mortem d'une application métier
TRANSCRIPT
![Page 1: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/1.jpg)
Post-mortem d’une application métier
30/01/2014
![Page 2: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/2.jpg)
Votre interlocuteurMatthieu DUFOURNEAUDRéférent Technique - Exakis
[email protected]+33 6 65 93 41 05
![Page 3: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/3.jpg)
PrésentationOrdre du jour
![Page 4: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/4.jpg)
PrésentationOrdre du jour Conception d’une application
métier
![Page 5: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/5.jpg)
PrésentationOrdre du jour Conception d’une application
métier Bilan des choix techniques
![Page 6: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/6.jpg)
PrésentationOrdre du jour Conception d’une application
métier Bilan des choix techniques
Discussion et question
![Page 7: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/7.jpg)
PrésentationOrdre du jour
Conception d’une application métier Bilan des choix techniques
Discussion et question
Présentation ExakisPrésentation MUG Lyon
![Page 8: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/8.jpg)
Présentation Exakis
![Page 9: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/9.jpg)
Exakis, première Entreprise de Services du Numérique Microsoft
Notre positionnement Partenaire pure-player de Microsoft leader en France
Notre objectif
Vous apporterdes solutions technologiquesqui vous permettront d’améliorer vos performances
Notre métier
Intégration de solutions pour l'entreprise basée surla plateforme Microsoft
![Page 10: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/10.jpg)
Une couverture large et cohérente des besoins de nos clients
Innovation et solutions logicielles
Social et collaboration
Datacenter et cloud
Environnement utilisateur et mobilité
Communications unifiées
Sécurité et gestion des identités
![Page 11: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/11.jpg)
Présentation MUG Lyon
![Page 12: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/12.jpg)
Un objectif
Microsoft User Group lyonnais pour partager et débattre autour de technologies passionnantes et innovantes :)
![Page 13: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/13.jpg)
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€)
![Page 14: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/14.jpg)
Des évènements
Chaque dernier jeudi du mois Idées de sessions Speakers
![Page 15: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/15.jpg)
Nous contacter
muglyon.github.io Twitter @MUGLyon Facebook /
www.facebook.com/groups/118200884904279 LinkedIn / www.linkedin.com/groups/MUG-Lyon-
4302523
![Page 16: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/16.jpg)
PrésentationOrdre du jour Conception d’une application
metierQuel 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
![Page 17: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/17.jpg)
Conception d’une application métier
![Page 18: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/18.jpg)
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é
![Page 19: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/19.jpg)
Quel type d’application ?
Web Native
ClientMVVM
Services
![Page 20: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/20.jpg)
Quel type d’application ?
Web Client / HTML/CSS/JS Services / C#
Native
![Page 21: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/21.jpg)
Quel type d’application ?
Web Native
Client / XAML/C# Services / C#
![Page 22: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/22.jpg)
Quel type d’application ?
Web Native
Permet de partager le moteur de calculs des services avec le client
![Page 23: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/23.jpg)
Quel type de services Web ?
TCP HTTP SOAP HTTP REST
![Page 24: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/24.jpg)
Quel type de services Web ?
TCP Simplicité Débuggabilité Intéropérabilité Cache Performance
HTTP SOAP HTTP REST
![Page 25: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/25.jpg)
Quel type de services Web ?
TCP HTTP SOAP
Simplicité Débuggabilité Intéropérabilité Cache Performance
HTTP REST
![Page 26: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/26.jpg)
Quel type de services Web ?
TCP HTTP SOAP HTTP REST
Simplicité Débuggabilité Intéropérabilité Cache Performance
![Page 27: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/27.jpg)
Quel type de services Web ?
TCP HTTP SOAP HTTP REST
Meilleur débuggabilité Cache HTTP natif disponible
![Page 28: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/28.jpg)
Quel ORM ?
Entity Framework NHibernate
![Page 29: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/29.jpg)
Quel ORM ?
Entity Framework LINQ Génération automatique des entités Mapping automatique des entités « Boîte noire »
NHibernate
![Page 30: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/30.jpg)
Quel ORM ?
Entity Framework NHibernate
LINQ Logs Filtres Pas de génération automatique des entités Pas de mapping automatique des entités
![Page 31: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/31.jpg)
Quel ORM ?
Entity Framework Génération automatique des entités
NHibernate LINQ Logs Filtres Mapping automatique par convention
![Page 32: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/32.jpg)
Quel parser d’expression ?
Irony ANTLR GOLD Parsing System
![Page 33: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/33.jpg)
Quel parser d’expression ?
Irony Grammaire Débuggabilité Communauté
ANTLR GOLD Parsing System
![Page 34: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/34.jpg)
Quel parser d’expression ?
Irony ANTLR
Grammaire Débuggabilité Communauté
GOLD Parsing System
![Page 35: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/35.jpg)
Quel parser d’expression ?
Irony ANTLR GOLD Parsing System
Grammaire Débuggabilité Communauté
![Page 36: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/36.jpg)
Quel parser d’expression ?
Irony Grammaire en C#
ANTLR GOLD Parsing System
![Page 37: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/37.jpg)
Comment concilier génération de code et polymorphisme ?
Entity.generated.cs
partial class Entity{ AProperty { get; set; } AnotherProperty { get; set; } …}
Entity.cs
partial class Entity{}
Impossible de surcharger les
propriétés générées
![Page 38: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/38.jpg)
Comment concilier génération de code et polymorphisme ?
EntityBase.generated.cs
class EntityBase{ AProperty { get; set; } AnotherProperty { get; set; } …}
Entity.generated.cs
partial class Entity : EntityBase{}
Entity.cs
partial class Entity{}
![Page 39: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/39.jpg)
Comment simplifier l’utilisation cliented’un service Web REST ?
Pas de découvrabilité URLs en chaînes de caractères rendent difficile le
refactoring
![Page 40: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/40.jpg)
Comment simplifier l’utilisation cliented’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
![Page 41: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/41.jpg)
Comment conjuguer les contraintes deconsultation 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
Edition Accès aux données commun aux écrans Modification des données Normalisation nécessaire
![Page 42: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/42.jpg)
Comment conjuguer les contraintes deconsultation et d’édition ?
CQRS (Command Query Responsibility Segregation)
![Page 43: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/43.jpg)
Comment conjuguer les contraintes deconsultation et d’édition ?
CQRS-spirit
ReadOnlyRepository
QueryController
CommandController
RepositoryService
![Page 44: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/44.jpg)
PrésentationOrdre du jour Conception d’une application
métier Bilan des choix techniquesQuel 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
![Page 45: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/45.jpg)
Bilan des choix techniques
![Page 46: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/46.jpg)
Quel type d’application ?
Simulation pas encore implémentée, ni planifiée
![Page 47: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/47.jpg)
Quel type de services Web ?
Débuggage facilité Pas de problème de latence rencontré Cache pas encore utilisé
![Page 48: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/48.jpg)
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
![Page 49: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/49.jpg)
Quel parser d’expression ?
Grammaire codée en moins de 30 lignes de C#
![Page 50: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/50.jpg)
Comment concilier génération de code et polymorphisme ?
Ça fonctionne
![Page 51: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/51.jpg)
Comment simplifier l’utilisation cliented’un service Web REST ?
Développement simplifié Débuggage facilité Organisation des messages à optimiser
![Page 52: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/52.jpg)
Comment conjuguer les contraintes deconsultation 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
![Page 53: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/53.jpg)
PrésentationOrdre du jour Conception d’une application
métier Bilan des choix techniques
Discussion et Questions
Discussion et Questions
![Page 54: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/54.jpg)
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
![Page 55: 20140130 mug lyon - post-mortem d'une application métier](https://reader036.vdocuments.us/reader036/viewer/2022062419/558ed2e01a28abff5e8b463c/html5/thumbnails/55.jpg)