SlideShare a Scribd company logo
1 of 29
Template designed by
SignalR To-The-Max
Stefano Del Furia
delfo@edudotnet.it
www.edudotnet.it
Slide con sponsor che arriva a
qualche giorno dalla conferenza
sponsor
CTO @ StoaSoftware
Senior Software Design Architect
Sistemi di automazione industriale
EduDotNet.IT
Community di utenti educational (scuole))
Docente Laboratorio di Informatica
Varie ed eventuali
Autore di testi tecnici e scolastici
Archeologia informatica (ELEA 9003, primo calcolatore a transistors al mondo funzionante !!!)
chi sono
Panoramica su SignalR
«Problemi»
Case-Study
agenda
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
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
SignalR http://www.asp.net/signalr
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
SignalR http://www.asp.net/signalr
demo
SignalR Chat
Traceing
Error-handling
Logging
Authentication
Strong-typed Server e Client (Interfaces & DTO)
IoC …
Problematiche
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
TextWriterTraceListener
Invia 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>
……
demo
SignalR Demo
Traceing
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
demo
SignalR Demo
Logging & Error-Handling
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;
demo
SignalR Demo
Authorization
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
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
Strong-Typed Server & Client
HubHost
HubHostBase<IHubSendClientBase>, IClientSendHubBase
SendHubBase<HubHost,IHubSendClientBase>,IClientSendHubBase
• Host invoca i metodi del Client (IHubSendClientBase)
• Host riceve le richieste dai Clients (IClientSendHubBase)
HubClient
HubClientBase<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
Strong-Typed Server & Client
Strong-Typed Server & Client
demo
SignalR Demo
Strong-Type Host e Client
Avvia l’Host (con i parametri di configurazione) restituendo una istanza in grado di
invocare i metodi lato client
La configurazione consente di
impostare:
• i parametri di comunicazione (timeout)
• i moduli della pipeline
• il traceing
StartUp & Configuration
var hub = HubStartup.Start(config) as SendHubHost;
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
demo
SignalR Demo
StartUp, Configuration & IoC
Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
delfo@edudotnet.it
delfuria@gmail.com
Grazie

More Related Content

Viewers also liked

Gam05 costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
Gam05   costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...Gam05   costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
Gam05 costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...DotNetCampus
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
Sys03 microsoft azure for it pro
Sys03   microsoft azure for it proSys03   microsoft azure for it pro
Sys03 microsoft azure for it proDotNetCampus
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!DotNetCampus
 
Formation "Développer son activité commerciale sur le marché du tourisme d'a...
 Formation "Développer son activité commerciale sur le marché du tourisme d'a... Formation "Développer son activité commerciale sur le marché du tourisme d'a...
Formation "Développer son activité commerciale sur le marché du tourisme d'a...MONA
 
Dcf e marketing 25 juin 2015 besancon v1
Dcf e marketing 25 juin 2015 besancon v1Dcf e marketing 25 juin 2015 besancon v1
Dcf e marketing 25 juin 2015 besancon v1Synapse-O-Coeur
 
Projet Megas - Livrable 3 - Soutenance orale
Projet Megas - Livrable 3 - Soutenance oraleProjet Megas - Livrable 3 - Soutenance orale
Projet Megas - Livrable 3 - Soutenance oralechauchse
 
These pro enass cedric tang 2012
These pro enass cedric tang 2012These pro enass cedric tang 2012
These pro enass cedric tang 2012cedric1975
 
La Création de Contenu dans votre Inbound Stratégie
La Création de Contenu dans votre Inbound StratégieLa Création de Contenu dans votre Inbound Stratégie
La Création de Contenu dans votre Inbound StratégieNoemie Aguettant
 
Droit des cartels et de la concurrence déloyale
Droit des cartels et de la concurrence déloyaleDroit des cartels et de la concurrence déloyale
Droit des cartels et de la concurrence déloyalefredericborel
 
FR-Etude De Nutrition Clinique_Jus de Grenade _ Institut de Recherche_RAMBAM
FR-Etude De Nutrition Clinique_Jus de Grenade _ Institut de Recherche_RAMBAMFR-Etude De Nutrition Clinique_Jus de Grenade _ Institut de Recherche_RAMBAM
FR-Etude De Nutrition Clinique_Jus de Grenade _ Institut de Recherche_RAMBAMSabine FAURE SA Mlle
 
Projet Fin d'année version finale
Projet Fin d'année version finaleProjet Fin d'année version finale
Projet Fin d'année version finaleHoussem AZZOUZ
 

Viewers also liked (16)

Gam05 costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
Gam05   costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...Gam05   costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
Gam05 costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
Sys03 microsoft azure for it pro
Sys03   microsoft azure for it proSys03   microsoft azure for it pro
Sys03 microsoft azure for it pro
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
 
Ateliers commercants acv-ucm-acia #2
Ateliers commercants acv-ucm-acia #2Ateliers commercants acv-ucm-acia #2
Ateliers commercants acv-ucm-acia #2
 
Formation "Développer son activité commerciale sur le marché du tourisme d'a...
 Formation "Développer son activité commerciale sur le marché du tourisme d'a... Formation "Développer son activité commerciale sur le marché du tourisme d'a...
Formation "Développer son activité commerciale sur le marché du tourisme d'a...
 
Dcf e marketing 25 juin 2015 besancon v1
Dcf e marketing 25 juin 2015 besancon v1Dcf e marketing 25 juin 2015 besancon v1
Dcf e marketing 25 juin 2015 besancon v1
 
Projet Megas - Livrable 3 - Soutenance orale
Projet Megas - Livrable 3 - Soutenance oraleProjet Megas - Livrable 3 - Soutenance orale
Projet Megas - Livrable 3 - Soutenance orale
 
These pro enass cedric tang 2012
These pro enass cedric tang 2012These pro enass cedric tang 2012
These pro enass cedric tang 2012
 
Intervention Silvère MERCIER
Intervention Silvère MERCIER Intervention Silvère MERCIER
Intervention Silvère MERCIER
 
La Création de Contenu dans votre Inbound Stratégie
La Création de Contenu dans votre Inbound StratégieLa Création de Contenu dans votre Inbound Stratégie
La Création de Contenu dans votre Inbound Stratégie
 
sdfddfsdfddf
sdfddfsdfddfsdfddfsdfddf
sdfddfsdfddf
 
Droit des cartels et de la concurrence déloyale
Droit des cartels et de la concurrence déloyaleDroit des cartels et de la concurrence déloyale
Droit des cartels et de la concurrence déloyale
 
FR-Etude De Nutrition Clinique_Jus de Grenade _ Institut de Recherche_RAMBAM
FR-Etude De Nutrition Clinique_Jus de Grenade _ Institut de Recherche_RAMBAMFR-Etude De Nutrition Clinique_Jus de Grenade _ Institut de Recherche_RAMBAM
FR-Etude De Nutrition Clinique_Jus de Grenade _ Institut de Recherche_RAMBAM
 
Projet Fin d'année version finale
Projet Fin d'année version finaleProjet Fin d'année version finale
Projet Fin d'année version finale
 

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

Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...Codemotion
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure FunctionLuca Congiu
 
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?fcrippa
 
Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Mauro Servienti
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPCAndrea Dottor
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyIonela
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyIonela
 
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyProgettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyGiacomo Russo
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
DevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more powerDevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more powerRoberto Albano
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSMorlini Gabriele
 
EtnaDev 2016 - Application Insights
EtnaDev 2016 - Application InsightsEtnaDev 2016 - Application Insights
EtnaDev 2016 - Application InsightsRoberto Albano
 
Kubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalKubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalGiuliano Latini
 
Push Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentPush Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentDomusDotNet
 

Similar to SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE! (20)

Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
 
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
 
Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
 
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyProgettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
DevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more powerDevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more power
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
EtnaDev 2016 - Application Insights
EtnaDev 2016 - Application InsightsEtnaDev 2016 - Application Insights
EtnaDev 2016 - Application Insights
 
Kubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalKubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposal
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 
Push Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentPush Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background Agent
 

More from DotNetCampus

ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTDotNetCampus
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONSDotNetCampus
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#DotNetCampus
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DotNetCampus
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015DotNetCampus
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDotNetCampus
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREFROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREDotNetCampus
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWDotNetCampus
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICEDotNetCampus
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDDotNetCampus
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBDotNetCampus
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTDotNetCampus
 
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APPSFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APPDotNetCampus
 
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!DotNetCampus
 
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURESVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZUREDotNetCampus
 
AZURE WEBSITE DEEPDIVE
AZURE WEBSITE DEEPDIVEAZURE WEBSITE DEEPDIVE
AZURE WEBSITE DEEPDIVEDotNetCampus
 

More from DotNetCampus (20)

ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOT
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREFROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEW
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICE
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BAND
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUB
 
INTRO TO XAMARIN
INTRO TO XAMARININTRO TO XAMARIN
INTRO TO XAMARIN
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
 
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APPSFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
SFRUTTARE CORTANA E LE SPEECH API NELLE NOSTRE APP
 
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
 
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURESVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
 
AZURE WEBSITE DEEPDIVE
AZURE WEBSITE DEEPDIVEAZURE WEBSITE DEEPDIVE
AZURE WEBSITE DEEPDIVE
 

Recently uploaded

lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldivaleriodinoia35
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativovaleriodinoia35
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiorevaleriodinoia35
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxOrianaOcchino
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 

Recently uploaded (9)

lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldi
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativo
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptx
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 

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

  • 1. Template designed by SignalR To-The-Max Stefano Del Furia delfo@edudotnet.it www.edudotnet.it
  • 2. Slide con sponsor che arriva a qualche giorno dalla conferenza sponsor
  • 3. CTO @ StoaSoftware Senior Software Design Architect Sistemi di automazione industriale EduDotNet.IT Community di utenti educational (scuole)) Docente Laboratorio di Informatica Varie ed eventuali Autore di testi tecnici e scolastici Archeologia informatica (ELEA 9003, primo calcolatore a transistors al mondo funzionante !!!) chi sono
  • 5. 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
  • 6. 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
  • 8. 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
  • 11. Traceing Error-handling Logging Authentication Strong-typed Server e Client (Interfaces & DTO) IoC … Problematiche
  • 12. 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
  • 13. TextWriterTraceListener Invia 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> ……
  • 15. 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
  • 16. demo SignalR Demo Logging & Error-Handling
  • 17. 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;
  • 19. 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
  • 20. 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
  • 22. HubHost HubHostBase<IHubSendClientBase>, IClientSendHubBase SendHubBase<HubHost,IHubSendClientBase>,IClientSendHubBase • Host invoca i metodi del Client (IHubSendClientBase) • Host riceve le richieste dai Clients (IClientSendHubBase) HubClient HubClientBase<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
  • 26. Avvia l’Host (con i parametri di configurazione) restituendo una istanza in grado di invocare i metodi lato client La configurazione consente di impostare: • i parametri di comunicazione (timeout) • i moduli della pipeline • il traceing StartUp & Configuration var hub = HubStartup.Start(config) as SendHubHost;
  • 27. 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
  • 29. Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi delfo@edudotnet.it delfuria@gmail.com Grazie