Asp.Net Web.API, SignalR et UX : le futur

67
Asp.Net Web API, SignalR, UX: Futur Rui Carvalho Développeur ArtOfNet @rhwy Code / Développement Thomas Jaskula Développeur Compose IT @tjaskula

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.

Transcript of Asp.Net Web.API, SignalR et UX : le futur

Page 1: Asp.Net Web.API, SignalR et UX : le futur

Asp.Net Web API,

SignalR, UX: Futur

Rui Carvalho

Développeur

ArtOfNet

@rhwy

Code / Développement

Thomas Jaskula

Développeur

Compose IT

@tjaskula

Page 2: Asp.Net Web.API, SignalR et UX : le futur

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

Page 3: Asp.Net Web.API, SignalR et UX : le futur

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

Page 4: Asp.Net Web.API, SignalR et UX : le futur

API, REAL TIME & UX

Page 5: Asp.Net Web.API, SignalR et UX : le futur

DISCLAIMER

à propos de cette session

Page 6: Asp.Net Web.API, SignalR et UX : le futur

USER EXPERIENCE

Page 7: Asp.Net Web.API, SignalR et UX : le futur

(re)Evolutions

Page 8: Asp.Net Web.API, SignalR et UX : le futur

Evolutions des réseaux

Page 9: Asp.Net Web.API, SignalR et UX : le futur

Un monde connecté

Page 10: Asp.Net Web.API, SignalR et UX : le futur

Evolution des usages

Page 11: Asp.Net Web.API, SignalR et UX : le futur

Toute l’information, tout de suite

Page 12: Asp.Net Web.API, SignalR et UX : le futur

Comment répondre à ces évolutions?

Page 13: Asp.Net Web.API, SignalR et UX : le futur

S’adapter aux usages

Page 14: Asp.Net Web.API, SignalR et UX : le futur

Mettre en place des API

Standardisées

Simples, autonomes

Au coeur de l’application

Page 15: Asp.Net Web.API, SignalR et UX : le futur

Communication temps réel

Fournir de l’information < 1s

Travailler ses écrans comme de vrais applications

Frameworks spécialisés

Page 17: Asp.Net Web.API, SignalR et UX : le futur

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 ».

Page 18: Asp.Net Web.API, SignalR et UX : le futur

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

Page 19: Asp.Net Web.API, SignalR et UX : le futur

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

Page 20: Asp.Net Web.API, SignalR et UX : le futur

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

Page 21: Asp.Net Web.API, SignalR et UX : le futur

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

Page 22: Asp.Net Web.API, SignalR et UX : le futur

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

Page 23: Asp.Net Web.API, SignalR et UX : le futur

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 !

Page 24: Asp.Net Web.API, SignalR et UX : le futur

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

Page 25: Asp.Net Web.API, SignalR et UX : le futur

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

Page 26: Asp.Net Web.API, SignalR et UX : le futur

Code / Développement

• Introduction au Framework

ASP.NET Web Api

Principales caractéristiques :

- Support complet HTTP

- Content-negotiation

- Tests unitaire

- Indépendance de hosting

Page 27: Asp.Net Web.API, SignalR et UX : le futur

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

Page 28: Asp.Net Web.API, SignalR et UX : le futur

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

Page 29: Asp.Net Web.API, SignalR et UX : le futur

Code / Développement

• Hypérmedias– Pourquoi construire les applications hypermédias ?

– Media types

• XML / JSON

• XHTML / ATOM

• HAL

ASP.NET Web Api

Page 30: Asp.Net Web.API, SignalR et UX : le futur

Code / Développement

• Résumé– Support technologique

– Performances, extensibilité et monté en charge

– Faible couplage

– Workflow métier

ASP.NET Web Api

Page 31: Asp.Net Web.API, SignalR et UX : le futur
Page 32: Asp.Net Web.API, SignalR et UX : le futur

ASP.NET SIGNALR

Page 33: Asp.Net Web.API, SignalR et UX : le futur

Runtime temps réelpour .Net

SignalR?

Page 34: Asp.Net Web.API, SignalR et UX : le futur

FrameworkClient(s)Serveur

SignalR?

Page 35: Asp.Net Web.API, SignalR et UX : le futur

LE WEB TEMPS RÉEL?

De quoi parle-t-on…

Page 36: Asp.Net Web.API, SignalR et UX : le futur

Le web temps réel

Push Serveur

WebSockets

HTTP Streaming/Comet

Page 37: Asp.Net Web.API, SignalR et UX : le futur

QUEL EST LE PROBLÈME?

L’information tout de suite, oui mais…

Page 38: Asp.Net Web.API, SignalR et UX : le futur

Un seul canal universel !

HTTP

Page 39: Asp.Net Web.API, SignalR et UX : le futur

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

Page 40: Asp.Net Web.API, SignalR et UX : le futur

Les fondamentaux HTTP

Le web est stateless

Uniquement Requêtes/Réponses

Page 41: Asp.Net Web.API, SignalR et UX : le futur

HTML5 WebSockets ?

Extension de HTTP

Canaux binaires bi-directionels

Supporte les proxies

Page 42: Asp.Net Web.API, SignalR et UX : le futur

HTML5 WebSockets ?

Spécification instable

Protocole applicatif à écrire!

Support Serveur/Navigateur aléatoire

Page 43: Asp.Net Web.API, SignalR et UX : le futur

Quelles Alternatives aujourd’hui?

Short polling

Forever frame

Long polling

Page 44: Asp.Net Web.API, SignalR et UX : le futur

Short polling

Event

Page 45: Asp.Net Web.API, SignalR et UX : le futur

Long polling

Event

Page 46: Asp.Net Web.API, SignalR et UX : le futur

Forever frame

Event

HTTP/1.1 200 OK

Event

2 31

1

<script>eval(“{id:’1’}”)</script>

2

<script>eval(“{id:’2’}”)</script>

3

[ . . .]

Page 47: Asp.Net Web.API, SignalR et UX : le futur

Que choisir?

Aucun n’est particulièrement meilleur

Avantages différents en fonction du navigateur

Tous

Page 48: Asp.Net Web.API, SignalR et UX : le futur

SignalR !

Il prend en compte toutes ces techniques

Et du serveur automatiquement

S’adapte en fonction du navigateur

Abstraction de programmation

Page 49: Asp.Net Web.API, SignalR et UX : le futur

SIGNALR

One to rule them all

Page 50: Asp.Net Web.API, SignalR et UX : le futur

SignalR

Connection suivant le meilleur transport disponible

Modèle de programmation unique

Abstraction simple

Page 51: Asp.Net Web.API, SignalR et UX : le futur

SignalR

Librairie OSS éprouvée

Clients toutes plateforme (JS, .Net, WinRT, iOS,…)

Microsoft.AspNet.SignalR (nov 2012)

Server + WebSockets IIS8

Page 52: Asp.Net Web.API, SignalR et UX : le futur

SignalR Server

Fonctionne dans toute application ASP.NET

Selft Host

Azure

Mono

Page 53: Asp.Net Web.API, SignalR et UX : le futur

SignalR API

Persistent Connections

Hubs

Page 54: Asp.Net Web.API, SignalR et UX : le futur

SignalR Persistent Connections

API bas niveau

Programmation connection unique

IHttpHandler + route

Limité aux messages

Le protocole doit être défini

Page 55: Asp.Net Web.API, SignalR et UX : le futur

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

Page 56: Asp.Net Web.API, SignalR et UX : le futur

PERFORMANCES

ça marche vraiment?

Page 57: Asp.Net Web.API, SignalR et UX : le futur

SignalR Performances

Très rapide, x18 pour la v1.0

Sur 1 serveur:

250k-500k messages /s

70k connections simultannées

Page 58: Asp.Net Web.API, SignalR et UX : le futur

SignalR Performances

les performances dépendent du type de transport

Ralentis requêtes html sur le même serveur

Attention au traitement (Cpu)

Page 59: Asp.Net Web.API, SignalR et UX : le futur

CODE

As simple as

Page 60: Asp.Net Web.API, SignalR et UX : le futur

SignalR Code : Install

Partie Serveur

Serveur Web + Clients JS

Client .Net

Page 61: Asp.Net Web.API, SignalR et UX : le futur

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

Page 62: Asp.Net Web.API, SignalR et UX : le futur
Page 63: Asp.Net Web.API, SignalR et UX : le futur

SIGNALR

Page 64: Asp.Net Web.API, SignalR et UX : le futur

• 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é

Page 65: Asp.Net Web.API, SignalR et UX : le futur

QUESTIONS?

Page 67: Asp.Net Web.API, SignalR et UX : le futur

@RHWY + @TJASKULA

Keep contact: