Services RESTful et SPA
Speaker
http://blog.cellenza.com/author/rboyer
Rémy Boyer
Consultant .NET
ASP.NET Web API
Un petit historique
Historique
• Créé en 2012, 3 ans après ASP.NET MVC
• Remplace WCF Data Services (ou ADO.NET Data Services)
• Introduit des concepts fondamentaux proches d’ASP.NET MVC
Couche HTTP
moderne
Routage
Négociation de
contenu
Filtres
IoC Self-Hosting System.Web.dll
Middlewares &
Owin
Limitations
• Des dépendances distinctes de MVC
• Impossible de mixer du MVC et du Web API dans un même
contrôleur
• Du code utilitaire dupliqué
• Mvc :
• Web Api :
• Self-host, un vœu pieux
• Microsoft.AspNet.WebApi.WebHost héberge Web API sur IIS avec
System.Web.dll
this.Request.Headers["User-Agent"]
this.Request.Headers.TryGetValues(
"User-Agent", out userAgentValues)
Le futur !
Web API et SignalR posent les bases de l’asp.net de
demain
Web API est maintenant intégré à ASP.NET MVC Core !
Services RESTful
Routes, requêtes et réponses
Démo
Routage
Démo
Réponses et
contenu
ASP.NET Javascript Services
ASP.NET et les SPA
Les SPA
Les SPA ont gagné en popularité ces dernières années
• De nouveaux frameworks apparaissent constamment
• Elles intéressent de nombreux développeurs
Elles exploitent davantage les capacités des navigateurs
• Elles sont très interactives
• Elles allègent le travail du serveur
• Elles diminuent les appels réseaux
• Il y a beaucoup plus de code client, front : du Javascript
Outillage
De l’outillage adapté s’est développé
• Runtime Javascript autonome (NodeJs)
• Repository de packages (npm)
• Task runners (Grunt, Gulp, Webpack)
• De nouveaux langages (Typescript, …)
• Transpileurs et compilateurs (tsc, Babel)
Outillage
Visual Studio 2015 intègre partiellement ces technologies
Javascript Services vise à combler ces manques
Contenu ASP.NET Javascript Services
Une collection de packages Nuget et npm
• Invocation de code Javascript dans Node.js depuis .NET Core
• Middleware Webpack pendant le développement
• Hot Module Replacement
• Rendu côté serveur du code Javascript
• Routing & Validation, côté client et côté serveur
Un modèle Yeoman pour démarrer les applications
Démo
Intérop
.NET Core
Node.JS
Webpack dev middleware
Webpack peut en faire beaucoup
• Compilation
• Bundling (concaténation, minification, uglification)
• Module Loader
• …
Le Hot Module Reload permet de remplacer le rafraichissement
automatique en rechargement incrémental à la volée
• Nécessite webpack-dev-server et l’utilisation de l’hôte NodeJS
Webpack dev middleware
Javascript Services peut intercepter les requêtes de fichiers JS et les
compiler à la volée
Browser
<script src="file.js">
ASP.NET Core
Webpack dev
Middleware
Node.JS
Compilation
Webpack
Démo
Webpack dev
Middleware

03 - [ASP.NET Core] Services RESTful et SPA

  • 1.
  • 2.
  • 3.
    ASP.NET Web API Unpetit historique
  • 4.
    Historique • Créé en2012, 3 ans après ASP.NET MVC • Remplace WCF Data Services (ou ADO.NET Data Services) • Introduit des concepts fondamentaux proches d’ASP.NET MVC Couche HTTP moderne Routage Négociation de contenu Filtres IoC Self-Hosting System.Web.dll Middlewares & Owin
  • 5.
    Limitations • Des dépendancesdistinctes de MVC • Impossible de mixer du MVC et du Web API dans un même contrôleur • Du code utilitaire dupliqué • Mvc : • Web Api : • Self-host, un vœu pieux • Microsoft.AspNet.WebApi.WebHost héberge Web API sur IIS avec System.Web.dll this.Request.Headers["User-Agent"] this.Request.Headers.TryGetValues( "User-Agent", out userAgentValues)
  • 6.
    Le futur ! WebAPI et SignalR posent les bases de l’asp.net de demain Web API est maintenant intégré à ASP.NET MVC Core !
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
    Les SPA Les SPAont gagné en popularité ces dernières années • De nouveaux frameworks apparaissent constamment • Elles intéressent de nombreux développeurs Elles exploitent davantage les capacités des navigateurs • Elles sont très interactives • Elles allègent le travail du serveur • Elles diminuent les appels réseaux • Il y a beaucoup plus de code client, front : du Javascript
  • 12.
    Outillage De l’outillage adaptés’est développé • Runtime Javascript autonome (NodeJs) • Repository de packages (npm) • Task runners (Grunt, Gulp, Webpack) • De nouveaux langages (Typescript, …) • Transpileurs et compilateurs (tsc, Babel)
  • 13.
    Outillage Visual Studio 2015intègre partiellement ces technologies Javascript Services vise à combler ces manques
  • 14.
    Contenu ASP.NET JavascriptServices Une collection de packages Nuget et npm • Invocation de code Javascript dans Node.js depuis .NET Core • Middleware Webpack pendant le développement • Hot Module Replacement • Rendu côté serveur du code Javascript • Routing & Validation, côté client et côté serveur Un modèle Yeoman pour démarrer les applications
  • 15.
  • 16.
    Webpack dev middleware Webpackpeut en faire beaucoup • Compilation • Bundling (concaténation, minification, uglification) • Module Loader • … Le Hot Module Reload permet de remplacer le rafraichissement automatique en rechargement incrémental à la volée • Nécessite webpack-dev-server et l’utilisation de l’hôte NodeJS
  • 17.
    Webpack dev middleware JavascriptServices peut intercepter les requêtes de fichiers JS et les compiler à la volée Browser <script src="file.js"> ASP.NET Core Webpack dev Middleware Node.JS Compilation Webpack
  • 18.

Notes de l'éditeur

  • #6 Différents noms de classes, de méthodes Noms de classe différents
  • #9 Création d’un nouveau projet dans VS 2017 .NET Core, services REST Parcours des différentes méthodes et routes du contrôleur par défaut Ajout d’une nouvelle signature : [HttpPost("do-something/{arg}")] public void DoSomething(string arg) { }
  • #10 CamlCase par défaut ! // GET api/values/5 [HttpGet("{id}")] public IActionResult Get(int id) { if (Get() == null) return NotFound(); if (id < 0) return BadRequest(); return Content("value"); return new ObjectResult("value"); }
  • #19 Créer un nouveau projet avec yo aspnetcore-spa Choisir React + Redux, VS 2017 Montrer comment le middleware est configuré Montrer les packages nuget et les packages npm, la config webpack Lancer l’appli Faire une modif à chaud du compteur et voir les résultats