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

Transcript
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: