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

55
Post-mortem d’une application métier 30/01/2014

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

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

Post-mortem d’une application métier

30/01/2014

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

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

PrésentationOrdre du jour

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

PrésentationOrdre du jour Conception d’une application

métier

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

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

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

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

Présentation Exakis

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

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

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

Présentation MUG Lyon

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

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

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

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

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

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

Conception d’une application métier

Page 18: 20140130   mug lyon - post-mortem 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é

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

Quel type d’application ?

Web Native

ClientMVVM

Services

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

Quel type d’application ?

Web Client / HTML/CSS/JS Services / C#

Native

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

Quel type d’application ?

Web Native

Client / XAML/C# Services / C#

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

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

Quel type de services Web ?

TCP HTTP SOAP HTTP REST

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

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

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

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

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

Quel ORM ?

Entity Framework NHibernate

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

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

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

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

Quel parser d’expression ?

Irony ANTLR GOLD Parsing System

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

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

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

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

Quel parser d’expression ?

Irony Grammaire en C#

ANTLR GOLD Parsing System

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

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

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

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

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

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

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

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

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

Bilan des choix techniques

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

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

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

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

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

Comment concilier génération de code et polymorphisme ?

Ça fonctionne

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

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

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

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

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