Upload
microsoft
View
1.000
Download
1
Embed Size (px)
DESCRIPTION
Dans cette session nous allons voir le futur du développement web au sein de l'écosystème ASP.NET, ce que cela change dans les échanges avec le client, y compris au sein des applications Windows 8 consommant des services. Fournir des web services en plus d'une application est devenu une pratique courante depuis des années, mais travailler avec des APIs en est une autre, et, les fournir dans un mode adapté au Http, comme REST, encore une autre. Il est primordial aujourd'hui d'intégrer ces API proches d'HTTP dans nos applications et c'est là le rôle du framework WEB.API dans la plateforme ASP.NET, que nous allons vous présenter en détail dans cette session. Une autre facette importante des applications web qui a émergé ces dernières années, c'est la contrainte du temps réel. C'est une contrainte qu'il faut prendre en compte dès aujourd'hui. Non pas que tout le monde a besoin d'afficher des flux de données en temps réel, mais surtout parce cela change l'expérience utilisateur! Nous allons voir dans ce cadre là SignalR, une librairie open source, supportée officiellement depuis peu par Microsoft.
Citation preview
Asp.Net Web API,
SignalR, UX: Futur
Rui Carvalho
Développeur
ArtOfNet
@rhwy
Code / Développement
Thomas Jaskula
Développeur
Compose IT
@tjaskula
About
A r t O f N e t
Work
Blog
@rhwy@tjaskula
Talk
codedistillers.frskill-track.fr
Formations
En> www.codedistillers.comFr > www.rui.fr
Communautés
Paris Software Craftsmanship
Community
Prochaines rencontres:
13/02 : Agile.Net beer21/02 : Alt.Net Frameworks .Net oss26/02 : Vue d’ensemble du DDD27/02 : Alt.Net Coding breakfast
xx/05 : Web.Net conf Paris !
www.meetup.com/ALTNETFR/DDD-Paris/paris-software-craftsmanship/AGILE-NET-FRANCE
API, REAL TIME & UX
DISCLAIMER
à propos de cette session
USER EXPERIENCE
(re)Evolutions
Evolutions des réseaux
Un monde connecté
Evolution des usages
Toute l’information, tout de suite
Comment répondre à ces évolutions?
S’adapter aux usages
Mettre en place des API
Standardisées
Simples, autonomes
Au coeur de l’application
Communication temps réel
Fournir de l’information < 1s
Travailler ses écrans comme de vrais applications
Frameworks spécialisés
ASP.NET WEB API
http://techdays.servicebus.windows.net/demo/test/
Code / Développement
• Qu’est-ce qu’une API Web ?
ASP.NET Web Api
« Une API Web est une interface programmable d’un système exposé sur HTTP et accessible par des méthodes HTTP standard ».
Code / Développement
• Origines des API web
ASP.NET Web Api
0
2000
4000
6000
8000
100002000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
*source : http://www.programmableweb.com
8571 !07/02/2013
Code / Développement
• Origines des API web
ASP.NET Web Api / Introduction REST
69%
24%
5% 2%
Usage des protocoles par API
REST
SOAP
JavaScript
XML-RPC
*source : http://www.programmableweb.com07/02/2013
Code / Développement
• Architectures, protocoles & styles des API
Web– RPC API
– Message API
– Ressource API
ASP.NET Web Api
CORBA DCOMWSDL
POX
RESTATOM
XML-RPC
SOAP
Code / Développement
• Architecture Web– Pensez « Ressources »
ASP.NET Web Api
Ressource
http://api.demo/order/1234
http://api.demo/order/1234.js
p
urn:api.demo:order:1234
ftp://demo/order/1234.txt
Représentation XHTMLContent-Type : application/xhtml+xml
Représentation JSONContent-Type : application/json
Représentation PDFContent-Type : application/pdf
Représentation TEXTContent-Type : text/plain
URI
Code / Développement
• D’une architecture web vers un style
d’architecture…
ASP.NET Web Api
REST = Décrit le web comme une application hypermédia distribuée dans
laquelle les ressources liées communiquent en échangent les
représentations de ressources.
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
Code / Développement
Contrainte Bénéfice
Client - Server- Portabilité UI
- Serveur simplifié
Stateless- Serveur simplifié
- Extensibilité
- Fiabilité
Optional non-shared caching- Latence réduite
- Efficacité
- Extensibilité
Uniform interface- Visibilité
- Evolution Indépendante
- Implémentation découplée
Layered system- Cache partage
- Clients simplifiés
- Load balancing et extensibilité
Code-on-demand- Clients simplifiés
- Extensibilité
• Contraintes du style architectural REST
ASP.NET Web Api
REST
Sous-contraintes:
- identification des ressources
- Manipulation via représentations
- Messages auto-descriptifs
- Hypermédias
Vous obtenez ces
bénéfices si vous
utilisés HTTP
comme protocole
de votre
application
Si vous ne faites
pas ça…
Vous n’adhérez pas
à ça… Et vous n’aurez pas
ça !
Code / Développement
• Convivialité du Web / Modèle de maturité
ASP.NET Web Api
Leonard Richardson http://www.crummy.com/writing/speaking/2008-QCon/
Niveau 0
URI Niveau 1
HTTP Niveau 2
Hypermédias Niveau 3
Code / Développement
• Introduction au Framework• Pourquoi utiliser ASP.NET Web Api ?
• ASP.NET Web Api vs. ASP.NET MVC
• Et le WCF dans tout ça ?
ASP.NET Web Api
Code / Développement
• Introduction au Framework
ASP.NET Web Api
Principales caractéristiques :
- Support complet HTTP
- Content-negotiation
- Tests unitaire
- Indépendance de hosting
Code / Développement
• Hosting– Adaptateurs disponibles (indépendant du Framework)
• WebHost (IIS)
• SelfHost (Process Windows)
– Adaptateurs personnalisés
• Azure
• In-Memory
• OWIN
ASP.NET Web Api
Code / Développement
• Adaptateur Azure Service Bus Relay
ASP.NET Web Api
Windows Azure
Client APIAPI Host
NAT Firewall
Service Bus
Relay
IP PrivéPas de nom DNS
IP PublicNom DNS Public
Code / Développement
• Hypérmedias– Pourquoi construire les applications hypermédias ?
– Media types
• XML / JSON
• XHTML / ATOM
• HAL
ASP.NET Web Api
Code / Développement
• Résumé– Support technologique
– Performances, extensibilité et monté en charge
– Faible couplage
– Workflow métier
ASP.NET Web Api
ASP.NET SIGNALR
Runtime temps réelpour .Net
SignalR?
FrameworkClient(s)Serveur
SignalR?
LE WEB TEMPS RÉEL?
De quoi parle-t-on…
Le web temps réel
Push Serveur
WebSockets
HTTP Streaming/Comet
QUEL EST LE PROBLÈME?
L’information tout de suite, oui mais…
Un seul canal universel !
HTTP
HTTP n’est Pas adapté
Le procole est agé
Prévu pour fournir des documents liés
Il n’a jamais été prévu pour ça
Les fondamentaux HTTP
Le web est stateless
Uniquement Requêtes/Réponses
HTML5 WebSockets ?
Extension de HTTP
Canaux binaires bi-directionels
Supporte les proxies
HTML5 WebSockets ?
Spécification instable
Protocole applicatif à écrire!
Support Serveur/Navigateur aléatoire
Quelles Alternatives aujourd’hui?
Short polling
Forever frame
Long polling
Short polling
Event
Long polling
Event
Forever frame
Event
HTTP/1.1 200 OK
Event
2 31
1
<script>eval(“{id:’1’}”)</script>
2
<script>eval(“{id:’2’}”)</script>
3
[ . . .]
Que choisir?
Aucun n’est particulièrement meilleur
Avantages différents en fonction du navigateur
Tous
SignalR !
Il prend en compte toutes ces techniques
Et du serveur automatiquement
S’adapte en fonction du navigateur
Abstraction de programmation
SIGNALR
One to rule them all
SignalR
Connection suivant le meilleur transport disponible
Modèle de programmation unique
Abstraction simple
SignalR
Librairie OSS éprouvée
Clients toutes plateforme (JS, .Net, WinRT, iOS,…)
Microsoft.AspNet.SignalR (nov 2012)
Server + WebSockets IIS8
SignalR Server
Fonctionne dans toute application ASP.NET
Selft Host
Azure
Mono
SignalR API
Persistent Connections
Hubs
SignalR Persistent Connections
API bas niveau
Programmation connection unique
IHttpHandler + route
Limité aux messages
Le protocole doit être défini
SignalR Hubs
API de haut niveau
Abstraction au dessus des PersistentConnections
Proxies auto générés dynamiques (JS ou .NET)
Routes automatiques (/signalr/hubs)
Tout types d’échanges, riches
PERFORMANCES
ça marche vraiment?
SignalR Performances
Très rapide, x18 pour la v1.0
Sur 1 serveur:
250k-500k messages /s
70k connections simultannées
SignalR Performances
les performances dépendent du type de transport
Ralentis requêtes html sur le même serveur
Attention au traitement (Cpu)
CODE
As simple as
SignalR Code : Install
Partie Serveur
Serveur Web + Clients JS
Client .Net
SignalR Code : Hub
Partie Cliente
[HubName(“Notifier”)]
public class MyHub : Hub
{
public void Notify(string message)
{
Clients.Others.notified(message);
}
}
RouteTable.Routes.MapHubs();
var hub = $.connection.Notifier;
$.connection.hub.start().done(function () {
$('#btn').on('click',function(){
hub.server.notify(
$('#messageInput').val());
})
});
hub.client.notified = function (message) {
alert(message.Content);
};
Client Server
1
2
3
SIGNALR
• SignalR, framework/Runtime temps réel
.Net web
• Modele simple et unifié de programmation
avec les Hub
• Abstraction du transport
• Tous types de clients
Résumé
QUESTIONS?
SOURCES
https://github.com/codedistillers/talks-td2013
https://github.com/tjaskula/ASP.NETWebAPI-Techdays2013
@RHWY + @TJASKULA
Keep contact: