SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

29
Template designed by SignalR To-The-Max Stefano Del Furia [email protected] www.edudotnet.it

Transcript of SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Page 1: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Template designed by

SignalR To-The-Max

Stefano Del [email protected]

Page 2: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Slide con sponsor che arriva a qualche giorno dalla conferenza

sponsor

Page 3: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

CTO @ StoaSoftwareSenior Software Design Architect

Sistemi di automazione industriale

EduDotNet.ITCommunity di utenti educational (scuole))

Docente Laboratorio di Informatica

Varie ed eventualiAutore di testi tecnici e scolastici

Archeologia informatica (ELEA 9003, primo calcolatore a transistors al mondo funzionante !!!)

chi sono

Page 4: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Panoramica su SignalR

«Problemi»

Case-Study

agenda

Page 5: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Semplifica il processo di aggiunta di funzionalità di comunicazione real-time (web e non solo) alle applicazioni

Consente di creare applicazioni che richiedono frequenti aggiornamenti da parte di un server

Gestisce le connessioni in modo automatico e consente di inviare “messaggi” a tutti i client (broadcast) oppure a client specifici

SignalR http://www.asp.net/signalr

Page 6: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Supporta funzionalità “push” dove il server può invocare codice lato client utilizzando Remote Procedure Calls (RPC)

Le applicazioni possono scalare fino a migliaia di client utilizzando Service Bus, SQL Server o Redis

È open-source (a da poco lo è anche WCF)

SignalR http://www.asp.net/signalr

Page 7: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

SignalR http://www.asp.net/signalr

Page 8: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Due modelli di comunicazione tra clients e server: Persistent Connections and Hubs

Una Connection rappresenta un endpoint per inviare messaggi a client singoli, gruppi oppure a tutti

• Da allo sviluppatore l’accesso diretto al protocollo di basso livello

• Familiare ai sviluppatori che utilizzano API come WCF

Un Hub è una pipeline a più alto livello realizzata “sopra” le Connection API che consente ai client ed ai server di invocare reciprocamente dei metodi

• Gestisce la distribuzione di messaggi al di fuori della macchina consentendo ai client di chiamare i metodi nel server e viceversa con estrema facilità

• Familiare agli sviluppatori che utilizza(va)no .NET Remoting

• Consente di passare parametri tipizzati ai metodi e supporta il binding

SignalR http://www.asp.net/signalr

Page 9: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

SignalR http://www.asp.net/signalr

Page 10: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

dem

o SignalR Chat

Page 11: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Traceing

Error-handling

Logging

Authentication

Strong-typed Server e Client (Interfaces & DTO)

IoC …

Problematiche

Page 12: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Patterns of Enterprise Application Architecture (Martin Fowler)

• http://martinfowler.com/books/eaa.html

Programming wcf services books (Juval Lowy)

• http://www.oreilly.com/pub/au/741

SignalR Blog (Damien Bod)

• https://damienbod.wordpress.com/category/signalr/)

Spunti di interesse

Page 13: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

TextWriterTraceListenerInvia il tracing o il debug ad un TextWriter o ad un Stream (es. FileStream)

Traceing

<sharedListeners> <add name="SignalR-Transports" type="SD.SignalR.HubHost.TraceListener, SD.SignalR" initializeData="LogAlways" /></sharedListeners>

<system.diagnostics><switches> <add name="SignalRSwitch" value="Verbose" /> <!--> valori possibili: Off, Error, Warning, Info, Verbose--></switches><sources> <source name="SignalR.Transports.WebSocketTransport"><listeners> <add name="SignalR-Transports" /></listeners></source>……

Page 14: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

dem

o SignalR Demo

Traceing

Page 15: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

HubPipelineModule

Classe base che semplifica l’implementazione dell’interfaccia IHubPipelineModules.

Un modulo può intercettare gli eventi a vari livelli (connessione, disconnessione, invocazione di metodi remoti lato client e server, autorizzazione, unione a gruppi, etc)

Ogni modulo può essere attivato, e combinato con altri moduli

Error-Handling e Logging

Page 16: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

dem

o SignalR Demo

Logging & Error-

Handling

Page 17: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

AuthorizeAttribute

Si applica agli Hub ed ai suoi metodi per autorizzare le connessioni e l’invocazione degli stessi.

Authorization

_hubConnection.Headers.Add("AuthenticationCredential", "delfo");

var credentials = request.Headers["AuthenticationCredential"];

var methodName = hubIncomingInvokerContext.MethodDescriptor.Name;

Page 18: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

dem

o SignalR Demo

Authorization

Page 19: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Host• Implementazione nativa dalla versione 2.0+ (solo per .net 4.5+)

• È possibile invocare i metodi dall’interno e dall’esterno dell’Hub

• Ereditarietà delle interfacce dalla versione 2.2

Client• Nessuna implementazione nativa

• SignalRNetClientProxyMapper (Nuget package)

Strong-Typed Server & Client

Page 20: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Host• Host riceve le richieste dai Clients

• Host invoca i metodi del Client

Client• Client invoca i metodi dell’Host

• Clients riceve le notifiche dall’Host

• UI riceve le notifiche dal Client

Strong-Typed Server & Client

Page 21: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Strong-Typed Server & Client

Page 22: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

HubHostHubHostBase<IHubSendClientBase>, IClientSendHubBaseSendHubBase<HubHost,IHubSendClientBase>,IClientSendHubBase• Host invoca i metodi del Client (IHubSendClientBase)

• Host riceve le richieste dai Clients (IClientSendHubBase)

HubClientHubClientBase<IClientHub*>, IClientReceiveHubEventBase• Client invoca i metodi dell’Host (IClientSendHubBase)

• Clients riceve le notifiche dall’Host (IClientReceiveHubProxyBase)

• UI riceve le notifiche dal Client (IClientReceiveHubEventBase)

*public interface IClientHub : IClientReceiveHubProxyBase, IClientSendHubBase

Strong-Typed Server & Client

Page 23: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Strong-Typed Server & Client

Page 24: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Strong-Typed Server & Client

Page 25: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

dem

o SignalR Demo

Strong-Type Host e

Client

Page 26: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Avvia l’Host (con i parametri di configurazione) restituendo una istanza in grado di invocare i metodi lato client

La configurazione consente diimpostare:

• i parametri di comunicazione (timeout)

• i moduli della pipeline

• il traceing

StartUp & Configuration

var hub = HubStartup.Start(config) as SendHubHost;

Page 27: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Unity è un dependency injection container

SendHubHost (singleton ContainerControlledLifetimeManager)oggetto che consente di invocare i metodi dell’hub come se fossimo un client

HubHost (per istanza TransientLifetimeManager)Viene creato un oggetto per ogni client connesso

IoC con Unity

Page 28: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

dem

o SignalR Demo

StartUp, Configuration &

IoC

Page 29: SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!

Grazie a tutti per la partecipazione

Riceverete il link per il download a slide e demo via email nei prossimi giorni

Per contattarmi

[email protected]@gmail.com

Grazie