SlideShare a Scribd company logo
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

Ds03 data analysis
Ds03   data analysisDs03   data analysis
Ds03 data analysisDotNetCampus
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automationDotNetCampus
 
Win03 design windows store apps
Win03   design windows store appsWin03   design windows store apps
Win03 design windows store appsDotNetCampus
 
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
 
Pigmento pb y cd
Pigmento pb y cdPigmento pb y cd
Pigmento pb y cd
Fernando Reyes Cruz
 
Windows iot barone
Windows iot baroneWindows iot barone
Windows iot baroneDotNetCampus
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#
DotNetCampus
 
Dnc2015 azure-microservizi-vforusso
Dnc2015 azure-microservizi-vforussoDnc2015 azure-microservizi-vforusso
Dnc2015 azure-microservizi-vforussoDotNetCampus
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
DotNetCampus
 

Viewers also liked (10)

Ds03 data analysis
Ds03   data analysisDs03   data analysis
Ds03 data analysis
 
Newsletter
NewsletterNewsletter
Newsletter
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
 
Win03 design windows store apps
Win03   design windows store appsWin03   design windows store apps
Win03 design windows store apps
 
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...
 
Pigmento pb y cd
Pigmento pb y cdPigmento pb y cd
Pigmento pb y cd
 
Windows iot barone
Windows iot baroneWindows iot barone
Windows iot barone
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#
 
Dnc2015 azure-microservizi-vforusso
Dnc2015 azure-microservizi-vforussoDnc2015 azure-microservizi-vforusso
Dnc2015 azure-microservizi-vforusso
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
 

Similar to Signal r to the-max

SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
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 - Luca Masini Whymca
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
Luca Congiu
 
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
 
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
 
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 @ CD2010
Mauro Servienti
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
dotnetcode
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
Andrea 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 App
dotnetcode
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Ionela
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Ionela
 
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
Giacomo Russo
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
dotnetcode
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
dotnetcode
 
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
Roberto 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 ZFS
Morlini Gabriele
 
EtnaDev 2016 - Application Insights
EtnaDev 2016 - Application InsightsEtnaDev 2016 - Application Insights
EtnaDev 2016 - Application Insights
Roberto 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 proposal
Giuliano Latini
 
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
Emerasoft, solutions to collaborate
 

Similar to Signal r to the-max (20)

SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
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
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
 
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...
 
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
 
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
 

More from DotNetCampus

ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
DotNetCampus
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOT
DotNetCampus
 
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
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATAPREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
DotNetCampus
 
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
DotNetCampus
 
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
DotNetCampus
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEW
DotNetCampus
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICE
DotNetCampus
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BAND
DotNetCampus
 
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
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++
DotNetCampus
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUB
DotNetCampus
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSSFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
DotNetCampus
 
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
DotNetCampus
 
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
DotNetCampus
 
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
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
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 AZURE
DotNetCampus
 

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#
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATAPREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
 
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
 
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!
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUB
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSSFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
 
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!
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
 
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
 

Signal r to the-max

  • 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