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

Del furia signalr-to-the-max

Embed Size (px)

Citation preview

Page 1: Del furia   signalr-to-the-max

Template designed by

SignalR To-The-MaxStefano Del [email protected]

Page 2: Del furia   signalr-to-the-max

Slide con sponsor che arriva a qualche giorno dalla conferenza

sponsor

Page 3: Del furia   signalr-to-the-max

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 scolasticiArcheologia informatica (ELEA 9003, primo calcolatore a transistors al mondo funzionante !!!)

chi sono

Page 4: Del furia   signalr-to-the-max

Panoramica su SignalR«Problemi»Case-Study

agenda

Page 5: Del furia   signalr-to-the-max

Semplifica il processo di aggiunta di funzionalità di comunicazione real-time (web e non solo) alle applicazioniConsente di creare applicazioni che richiedono frequenti aggiornamenti da parte di un serverGestisce 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: Del furia   signalr-to-the-max

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: Del furia   signalr-to-the-max

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

Page 8: Del furia   signalr-to-the-max

Due modelli di comunicazione tra clients e server: Persistent Connections and HubsUna 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: Del furia   signalr-to-the-max

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

Page 10: Del furia   signalr-to-the-max

dem

o SignalR Chat

Page 11: Del furia   signalr-to-the-max

TraceingError-handlingLoggingAuthenticationStrong-typed Server e Client (Interfaces & DTO)IoC …

Problematiche

Page 12: Del furia   signalr-to-the-max

Patterns of Enterprise Application Architecture (Martin Fowler)• http://martinfowler.com/books/eaa.htmlProgramming wcf services books (Juval Lowy)• http://www.oreilly.com/pub/au/741SignalR Blog (Damien Bod)• https://damienbod.wordpress.com/category/signalr/)

Spunti di interesse

Page 13: Del furia   signalr-to-the-max

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: Del furia   signalr-to-the-max

dem

o SignalR DemoTraceing

Page 15: Del furia   signalr-to-the-max

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: Del furia   signalr-to-the-max

dem

o SignalR DemoLogging & Error-Handling

Page 17: Del furia   signalr-to-the-max

AuthorizeAttributeSi 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: Del furia   signalr-to-the-max

dem

o SignalR DemoAuthorization

Page 19: Del furia   signalr-to-the-max

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: Del furia   signalr-to-the-max

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: Del furia   signalr-to-the-max

Strong-Typed Server & Client

Page 22: Del furia   signalr-to-the-max

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: Del furia   signalr-to-the-max

Strong-Typed Server & Client

Page 24: Del furia   signalr-to-the-max

Strong-Typed Server & Client

Page 25: Del furia   signalr-to-the-max

dem

o SignalR DemoStrong-Type Host e Client

Page 26: Del furia   signalr-to-the-max

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: Del furia   signalr-to-the-max

Unity è un dependency injection containerSendHubHost (singleton ContainerControlledLifetimeManager)oggetto che consente di invocare i metodi dell’hub come se fossimo un clientHubHost (per istanza TransientLifetimeManager)Viene creato un oggetto per ogni client connesso

IoC con Unity

Page 28: Del furia   signalr-to-the-max

dem

o SignalR DemoStartUp, Configuration & IoC

Page 29: Del furia   signalr-to-the-max

Grazie a tutti per la partecipazioneRiceverete il link per il download a slide e demo via email nei prossimi giorniPer contattarmi

[email protected]@gmail.com

Grazie