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/

Common features in webapi aspnetcore

  • 1.
    Fonctionnalités communes dans lesWebApi d’ASP.NET Core 2.1 Anthony Giretti Consultant chez Nexio http://anthonygiretti.com
  • 2.
    Historique  Créé en2012, 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 decette 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 cettepré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 Lané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 envoiedes 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 Quandune 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 erreurset 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 etd’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 listedes 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 Ilest 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
  • 12.
  • 13.
    Conclusion Tous les sujetsn’ont pas été abordé.  Routing  Compression  Etc…..  Surveiller le repository, il sera mis régulièrement a jour.
  • 14.
    Code source etré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/