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

Post on 02-Jul-2015

1.000 views 1 download

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

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

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?

@RHWY + @TJASKULA

Keep contact: