SlideShare une entreprise Scribd logo
1  sur  14
Fonctionnalités communes
dans les WebApi d’ASP.NET
Core 2.1
Anthony Giretti
Consultant chez Nexio
http://anthonygiretti.com
Historique
 Créé en 2012, 3 ans après ASP.NET MVC
 Supplante WCF Data Services (ou ADO.NET Data Services),et aujourd’hui
presque complètement WCF
 Proche d’ASP.NET MVC, bien que distinct de se dernier
 Unifiés dans ASP.NET Core
 Popularité en constante augmentation, surtout depuis l’arrivée des frameworks
SPA
Le but de cette présentation
 Présenter les différentes fonctionnalités pertinentes que l’on retrouve dans une
Web Api
 Proposer un modèle de Web Api fonctionnel et prêt a l’emploi
 Avec des exemples d’implémentation simples et facilement réutilisables et
extensibles
Ce que cette présentation n’a pas pour but
 D’être la vérité absolue dans les choix techniques proposés (choix des librairies
tierces par exemple)
 D’entrer dans le détail et toutes les possibilités de chaque fonctionnalité
Authentification et autorisation
La nécessité de restreindre l’accès à des données personnalisées et/ou sensibles
nous contraint à sécuriser une Web Api.
 Cookies
 JWT Bearer tokens
Validation
Lorsqu'un client envoie des données à une Web Api, on souhaite généralement
valider les données et gérer les erreurs de validation.
 ModelState et DataAnnotations built-in
 FluentValidation, framework de validation
Gestion des erreurs
Quand une erreur critique arrive dans une Web Api, on souhaite généralement
gérer l’erreur et contrôler la réponse au client de manière appropriées avec une
réponse HTTP formatée
 Filtre d’actions MVC
 Middleware ASP.NET Core
Journaliser les erreurs et autres infos
Souvent négligée, la journalisation des erreurs et d’autres informations en cas de
bug dans le programme est une fonctionnalité essentielle dans une Web Api.
 Log4Net
 Nlog
 Logger built-In de .NET Core
 Application Insights
 Serilog
Tests unitaires et d’intégration
Encore fois souvent négligés, les tests unitaires permettent de vérifier qu’une
implémentation reste conforme à la règle de fonctionnement attendue, prévenant
des régressions en cas d’évolution du programme.
Les tests d’intégration eux, servent à vérifier ce que les tests unitaires ne peuvent
faire: tester le fonctionnement de chaque couche logicielles entre elles.
 MSTest, NUnit, Rhino.Mocks, Moq
 FluentValidation, XUnit, Nsubstitute, TestServer
Documenter
Fournir la liste des services qui sont offerts, avec pour chacun, comment les
appeler et la structure de la réponse qui est retournée est également une
fonctionnalité essentielle pour une Web Api.
 Swagger avec NSwag
 Swagger avec Swashbuckle
Rappel: Le framework Swagger pour ASP.NET Core est une implémentation open
source qui repose sur la spécification OpenAPI née en 2010.
Profiler et cacher
Il est probable que l’on s’intérroge sur les performances d’une Web Api.
Pour se faire on peut profiler l’exécution de cette dernière et mettre si nécessaire
des données en cache (redondante et/ou longue a obtenir)
 Miniprofiler pour ASP.NET Core
 Cache de mémoire et cache de réponse HTTP
Démo!
Conclusion
Tous les sujets n’ont pas été abordé.
 Routing
 Compression
 Etc…..
 Surveiller le repository, il sera mis régulièrement a jour.
Code source et références
 GitHub
 https://github.com/AnthonyGiretti/commonfeatures-webapi-aspnetcore
 Références
 https://miniprofiler.com
 https://github.com/domaindrivendev/Swashbuckle
 https://fluentvalidation.net/
 https://fluentassertions.com/
 https://xunit.github.io/
 https://serilog.net/
 http://nsubstitute.github.io/

Contenu connexe

Tendances

M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4
CERTyou Formation
 

Tendances (18)

7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires
 
Présentation de l'Appcelerator Platform au Meetup Titanium Paris
Présentation de l'Appcelerator Platform au Meetup Titanium ParisPrésentation de l'Appcelerator Platform au Meetup Titanium Paris
Présentation de l'Appcelerator Platform au Meetup Titanium Paris
 
MVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejMVVM par Karim PIerre Maalej
MVVM par Karim PIerre Maalej
 
Starter Kits
Starter KitsStarter Kits
Starter Kits
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoring
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1
 
Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4
 
M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4
 
20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon
 
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetConférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java script
 
ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marche
 
Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework Introduction
 
20091008 Tests Interaces Web Riches Selenium
20091008   Tests Interaces Web Riches Selenium20091008   Tests Interaces Web Riches Selenium
20091008 Tests Interaces Web Riches Selenium
 
Test flight
Test flightTest flight
Test flight
 
Tests ihm automatises avec selenium
Tests ihm automatises avec seleniumTests ihm automatises avec selenium
Tests ihm automatises avec selenium
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity Framework
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 

Similaire à Common features in webapi aspnetcore

Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
Madridal
 

Similaire à Common features in webapi aspnetcore (20)

Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introduction
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
 
Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et Xamarin
 
Cours spring
Cours springCours spring
Cours spring
 
Spring
SpringSpring
Spring
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010
 
CV REBAI Hamida
CV REBAI HamidaCV REBAI Hamida
CV REBAI Hamida
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 

Plus de MSDEVMTL

Plus de MSDEVMTL (20)

Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.net
 
Grpc and asp.net partie 2
Grpc and asp.net partie 2Grpc and asp.net partie 2
Grpc and asp.net partie 2
 
Property based testing
Property based testingProperty based testing
Property based testing
 
Improve cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureImprove cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft Azure
 
Return on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataReturn on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & Data
 
C sharp 8.0 new features
C sharp 8.0 new featuresC sharp 8.0 new features
C sharp 8.0 new features
 
Asp.net core 3
Asp.net core 3Asp.net core 3
Asp.net core 3
 
MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL Informations 2019
MSDEVMTL Informations 2019
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
Groupe Excel et Power BI  - Rencontre du 25 septembre 2018Groupe Excel et Power BI  - Rencontre du 25 septembre 2018
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
 
Api gateway
Api gatewayApi gateway
Api gateway
 
Stephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsStephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environments
 
Eric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureEric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts Azure
 
Data science presentation
Data science presentationData science presentation
Data science presentation
 
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
 
Open id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreOpen id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api core
 
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsYoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
 
CAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageCAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling Average
 
CAE: etude de cas
CAE: etude de casCAE: etude de cas
CAE: etude de cas
 
Dan Edwards : Data visualization best practices with Power BI
Dan Edwards : Data visualization best practices with Power BIDan Edwards : Data visualization best practices with Power BI
Dan Edwards : Data visualization best practices with Power BI
 

Common features in webapi aspnetcore

  • 1. Fonctionnalités communes dans les WebApi d’ASP.NET Core 2.1 Anthony Giretti Consultant chez Nexio http://anthonygiretti.com
  • 2. Historique  Créé en 2012, 3 ans après ASP.NET MVC  Supplante WCF Data Services (ou ADO.NET Data Services),et aujourd’hui presque complètement WCF  Proche d’ASP.NET MVC, bien que distinct de se dernier  Unifiés dans ASP.NET Core  Popularité en constante augmentation, surtout depuis l’arrivée des frameworks SPA
  • 3. Le but de cette présentation  Présenter les différentes fonctionnalités pertinentes que l’on retrouve dans une Web Api  Proposer un modèle de Web Api fonctionnel et prêt a l’emploi  Avec des exemples d’implémentation simples et facilement réutilisables et extensibles
  • 4. Ce que cette présentation n’a pas pour but  D’être la vérité absolue dans les choix techniques proposés (choix des librairies tierces par exemple)  D’entrer dans le détail et toutes les possibilités de chaque fonctionnalité
  • 5. Authentification et autorisation La nécessité de restreindre l’accès à des données personnalisées et/ou sensibles nous contraint à sécuriser une Web Api.  Cookies  JWT Bearer tokens
  • 6. Validation Lorsqu'un client envoie des données à une Web Api, on souhaite généralement valider les données et gérer les erreurs de validation.  ModelState et DataAnnotations built-in  FluentValidation, framework de validation
  • 7. Gestion des erreurs Quand une erreur critique arrive dans une Web Api, on souhaite généralement gérer l’erreur et contrôler la réponse au client de manière appropriées avec une réponse HTTP formatée  Filtre d’actions MVC  Middleware ASP.NET Core
  • 8. Journaliser les erreurs et autres infos Souvent négligée, la journalisation des erreurs et d’autres informations en cas de bug dans le programme est une fonctionnalité essentielle dans une Web Api.  Log4Net  Nlog  Logger built-In de .NET Core  Application Insights  Serilog
  • 9. Tests unitaires et d’intégration Encore fois souvent négligés, les tests unitaires permettent de vérifier qu’une implémentation reste conforme à la règle de fonctionnement attendue, prévenant des régressions en cas d’évolution du programme. Les tests d’intégration eux, servent à vérifier ce que les tests unitaires ne peuvent faire: tester le fonctionnement de chaque couche logicielles entre elles.  MSTest, NUnit, Rhino.Mocks, Moq  FluentValidation, XUnit, Nsubstitute, TestServer
  • 10. Documenter Fournir la liste des services qui sont offerts, avec pour chacun, comment les appeler et la structure de la réponse qui est retournée est également une fonctionnalité essentielle pour une Web Api.  Swagger avec NSwag  Swagger avec Swashbuckle Rappel: Le framework Swagger pour ASP.NET Core est une implémentation open source qui repose sur la spécification OpenAPI née en 2010.
  • 11. Profiler et cacher Il est probable que l’on s’intérroge sur les performances d’une Web Api. Pour se faire on peut profiler l’exécution de cette dernière et mettre si nécessaire des données en cache (redondante et/ou longue a obtenir)  Miniprofiler pour ASP.NET Core  Cache de mémoire et cache de réponse HTTP
  • 13. Conclusion Tous les sujets n’ont pas été abordé.  Routing  Compression  Etc…..  Surveiller le repository, il sera mis régulièrement a jour.
  • 14. Code source et références  GitHub  https://github.com/AnthonyGiretti/commonfeatures-webapi-aspnetcore  Références  https://miniprofiler.com  https://github.com/domaindrivendev/Swashbuckle  https://fluentvalidation.net/  https://fluentassertions.com/  https://xunit.github.io/  https://serilog.net/  http://nsubstitute.github.io/