Con la nascita di .NET Core l'utilizzo del framework .NET è sbarcato in modo ufficiale anche su altre piattaforme.
Scrivere applicazioni moderne con SDK e tool nativi su altre piattaforme è diventato la normalità.
Lo vedremo realizzando un semplice applicazione .NET Core su Linux ed analizzando varie possibilità di deploy su altre piattaforme Linux based con il minimo sforzo e senza limitazioni.
Anche voi siete in piena "APIFICATION"? Riccardo ci svela tutti i segreti per rilasciare API di successo. #apistrategy
Per ulteriori informazioni scrivi a wso2.sales@profesia.it
Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017Codemotion
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing
Giorgio Di Nardo, Luca Congiu
Il Serverless Computing è l'ultima frontiera della rivoluzione "cloud" della programmazione ed enfatizza ulteriormente la produttività caratteristica delle offerte PaaS. Azure Functions è la soluzione di Serverless Computing integrata in Azure, con cui poter raggiungere rapidamente l'obiettivo di organizzare la propria applicazione a microservizi, o di integrarsi in maniera flessibile con applicazioni esterne, senza preoccuparsi dell'infrastruttura sottostante. Azure Functions Deep Dive - Giorgio Di Nardo ASP.NET Core with Azure Functions - Luca Congiu
Con la nascita di .NET Core l'utilizzo del framework .NET è sbarcato in modo ufficiale anche su altre piattaforme.
Scrivere applicazioni moderne con SDK e tool nativi su altre piattaforme è diventato la normalità.
Lo vedremo realizzando un semplice applicazione .NET Core su Linux ed analizzando varie possibilità di deploy su altre piattaforme Linux based con il minimo sforzo e senza limitazioni.
Anche voi siete in piena "APIFICATION"? Riccardo ci svela tutti i segreti per rilasciare API di successo. #apistrategy
Per ulteriori informazioni scrivi a wso2.sales@profesia.it
Azure functions deep dive - Giorgio Di Nardo - Codemotion Rome 2017Codemotion
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing
Giorgio Di Nardo, Luca Congiu
Il Serverless Computing è l'ultima frontiera della rivoluzione "cloud" della programmazione ed enfatizza ulteriormente la produttività caratteristica delle offerte PaaS. Azure Functions è la soluzione di Serverless Computing integrata in Azure, con cui poter raggiungere rapidamente l'obiettivo di organizzare la propria applicazione a microservizi, o di integrarsi in maniera flessibile con applicazioni esterne, senza preoccuparsi dell'infrastruttura sottostante. Azure Functions Deep Dive - Giorgio Di Nardo ASP.NET Core with Azure Functions - Luca Congiu
In questa sessione andremo in dettaglio sul come poter migliorare le nostre applicazioni ASP.NET dal punto delle vista delle performance: Come capire dove interventire? Cosa possiamo migliorare? A cosa dobbiamo prestare attenzione? E nel caso di un'applicazione esistente, dove possiamo intervenire per migliorarla ulteriormente?
Introduction to Blazor and WebAssembly in Christmas sauce. In this session we will see how to create a small demonstration application to send Christmas greetings.
Sviluppare un'applicazione web basata su ASP.NET Core nel mondo reale con Visual Studio Code
Codice della demo:
https://github.com/robymes/JoinTheExpert-WebDay
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
Molte applicazione sono (ancora) sviluppate in WebForm e non possono essere convertite automaticamente ad ASP.NET Core. Una riscrittura completa in molti casi è impossibile o impensabile da attuare. In questa sessione vedremo come migrare in modo graduale queste tipologie di applicazioni verso ASP.NET Core, andando in dettaglio nelle varie problematiche che solitamente si possono presentare. La sessione deriva da un'esperienza reale, che ha permesso di conoscere (nel bene o nel male) le difficoltà che si nascondo in queste migrazioni.
Evento: https://www.xedotnet.org/eventi/one-day-enterprise-application/
Continous Delivery e codice di Alta Qualità in PHP. Usare Git , Jenkins e diversi tool per realizzare codice di qualità e per effettuare il deploy in maniera automatica.
Presentazione effettuata al 5 incontro del Palermo PHP User Group al teatro Gregotti
Presentazione alla Google Dev Fest Mediterranean 2016 di Catania con presentazione sulle metodologie di utilizzo di microservices e sui sistemi per monitorare le infrastrutture
In ASP.NET Core 3.0 è stato introdotto il supporto a gRPC, una framework altamente performante per fare Remote Procedure Call (RPC). Leggero e molto efficiente, supportato da molti linguaggi, supporto ad una comunicazione bidirezionale, riduzione del consumo di banda...solo questi solo alcuni dei vantaggi che descrivono gRPC, e che durante la sessione cercheremo di capire se siano reali o meno.
Fatto sta che è una tecnologia assolutamente da conoscere e sfruttare nello sviluppo di app moderno, e non solamente in ambito web.
Codice: https://github.com/andreadottor/XE.Dottor.gRPC
Evento: https://www.xedotnet.org/eventi/grpc-and-c-optimising-night/
In questa sessione andremo in dettaglio sul come poter migliorare le nostre applicazioni ASP.NET dal punto delle vista delle performance: Come capire dove interventire? Cosa possiamo migliorare? A cosa dobbiamo prestare attenzione? E nel caso di un'applicazione esistente, dove possiamo intervenire per migliorarla ulteriormente?
Introduction to Blazor and WebAssembly in Christmas sauce. In this session we will see how to create a small demonstration application to send Christmas greetings.
Sviluppare un'applicazione web basata su ASP.NET Core nel mondo reale con Visual Studio Code
Codice della demo:
https://github.com/robymes/JoinTheExpert-WebDay
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
Molte applicazione sono (ancora) sviluppate in WebForm e non possono essere convertite automaticamente ad ASP.NET Core. Una riscrittura completa in molti casi è impossibile o impensabile da attuare. In questa sessione vedremo come migrare in modo graduale queste tipologie di applicazioni verso ASP.NET Core, andando in dettaglio nelle varie problematiche che solitamente si possono presentare. La sessione deriva da un'esperienza reale, che ha permesso di conoscere (nel bene o nel male) le difficoltà che si nascondo in queste migrazioni.
Evento: https://www.xedotnet.org/eventi/one-day-enterprise-application/
Continous Delivery e codice di Alta Qualità in PHP. Usare Git , Jenkins e diversi tool per realizzare codice di qualità e per effettuare il deploy in maniera automatica.
Presentazione effettuata al 5 incontro del Palermo PHP User Group al teatro Gregotti
Presentazione alla Google Dev Fest Mediterranean 2016 di Catania con presentazione sulle metodologie di utilizzo di microservices e sui sistemi per monitorare le infrastrutture
In ASP.NET Core 3.0 è stato introdotto il supporto a gRPC, una framework altamente performante per fare Remote Procedure Call (RPC). Leggero e molto efficiente, supportato da molti linguaggi, supporto ad una comunicazione bidirezionale, riduzione del consumo di banda...solo questi solo alcuni dei vantaggi che descrivono gRPC, e che durante la sessione cercheremo di capire se siano reali o meno.
Fatto sta che è una tecnologia assolutamente da conoscere e sfruttare nello sviluppo di app moderno, e non solamente in ambito web.
Codice: https://github.com/andreadottor/XE.Dottor.gRPC
Evento: https://www.xedotnet.org/eventi/grpc-and-c-optimising-night/
SignalR, il WebSocket che tanto ci mancavaAndrea Tosato
Sessione presentata a CodeGen 2018, evento di CloudGenVerona.
SignalR, il WebSocket che tanto ci mancava.
Vengono presentati scenari On-Premise e Cloud scalabili.
In queste slide, presentate durante il Google Developer Group Dev Fest Mediterranean 2014 vi è una introduzione alla "Continuous integration" una pratica di sviluppo software dove i membri di un team integrano il loro lavoro frequentemente.Sono inoltre presentati alcuni tool integrabili in una "build" per misurare la qualità del codice PHP così da rispettare diverse metriche ed avere codice di qualità.
In this meeting we will face a very known but often overlooked aspect, namely the use of HTTPS. Many developers still think that the use of HTTPS is reserved for important sites and that for simpler things, such as a site consisting of a few static pages, it's not worth it. We will first try to dispel this myth, showing how much damage can be done using the HTTP pages of a simple static site, and then we will show how it is possible to use the free SSL certificates of Let's Encrypt to create HTTPS services without spending a fortune.
1. #TecHeroes loves GameDev Tour
Game Matching with SignalR
Nicolò Carandini [MVP]
n.carandini@outlook.com
@TPCWare
2. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Agenda
• SignalR
• Comunicare in Real Time
• HTTP & HTLM5 / WebSockets
• ASP.NET SignalR
• Casi d’uso
• Demo
• Game Matching
• Un po’ di teoria
• Demo
3. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Comunicazione full duplex con HTTP ?
Il protocollo HTTP prevede che il Client faccia una richiesta e il Server dia una
risposta. Il Server non ha modo di mandare un messaggio al Client di sua
iniziativa.
INTERNET
REQUEST
INTERNET
RESPONSE
<HTML> Page
4. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Comunicazione real time tra clienti
Se voglio comunicare tra vari client, quando il server riceve dati da
un client, deve poter inviare dati agli altri client:
5. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Possibili soluzioni
Polling
Long Polling
SERVER
CLIENT
tempo
Request
Response
Request
Response
Request
Response
Request
Response
Request
Response
Intervallo di polling Intervallo di polling Intervallo di polling Intervallo di polling
SERVER
CLIENT
tempo
Request
Response
Request
Response
Request
Response
Response
Request
Request
6. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Controindicazioni?
• Polling:
Se l’intervallo è breve, troppe richieste inutili
Se l’intervallo è lungo, le informazioni arrivano in ritardo
• Long polling:
Il Server deve gestire le richieste in modo asincrono
altrimenti va in saturazione e non accetta altre richieste
7. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
HTLM5/WebSockets
• Fanno parte delle specifiche di HTML5
• Estendono il protocollo HTTP fornendo il supporto alle raw sockets
• Consentono la comunicazione full-duplex
• Traversano gli HTTP proxies (solo se i proxies sono "moderni"…)
Client Proxy Server / Firewall Origin Server
8. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Tutto risolto?
Non proprio, perché HTML5/WebSocket è un protocollo di basso livello che
richiede la scrittura di molto codice per implementare le funzionalità richieste da
una applicazione real-time.
Inoltre le condizioni d’uso delle WebSockets sono molto restrittive.
9. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Condizioni d’uso delle WebSockets
Funzionano quando:
• Il Web Server le supporta
• Il Web browser le supporta
• Il load balancer/reverse proxy le supporta
• Il client proxy server/NAT le supporta
• Tutto ciò che sta tra il client e il server le supporta
10. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
ASP.NET SignalR
SignalR è la libreria ASP.NET che rende incredibilmente semplice aggiungere
funzionalità Real-Time alle applicazioni web
11. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Punti di forza
• Implementa, ove possibile, WebSockets.
• Fa il downgrade in modo trasparente alle altre tecniche di polling
• Fornisce una API di alto livello, molto semplice da usare, per fare
RPC tra server e client
• Offre funzionalità di gestione degli eventi di connessione e
sconnessione e la gestione delle autorizzazioni
12. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Diagramma architetturale di SignalR
13. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
SignalR API
PersistentConnection
• Implementa le funzionalità minime necessarie
• Consente l’invio e la ricezione di stringhe
• Broadcast a tutti, a gruppi o a singoli utenti
• Connessione, riconnessione e disconnessione
Hub
• Utilizza la PersistentConnection
• Consente l’uso delle RPC da client a server e viceversa
• Genera automaticamente i proxy RPC per i web client (in JavaScript)
14. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
PersistentConnection Vs. Hub
Nella maggior parte dei casi si usa l’Hub.
La PersistentConnection viene utilizzata nei seguenti casi:
• Si usa un messaggio con formato custom
• Si preferisce lavorare tramite invio di messaggi invece di utilizzare
RPC (remote Procedure Call)
• Occorre fare il porting a SignalR di un’applicazione preesistente che
è basta sull’invio di messaggi e non usa le RPC
15. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
RPC (Remote Procedure Call)
Si possono chiamare funzioni JavaScript lato client da codice .NET
lato server, e viceversa
16. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Per fare cosa?
Oltre ai classici scenari di chat, SignalR è perfetto per tutti
quei casi in cui si abbia necessità di update ad alta
frequenza, come nei giochi in real-time o implementare
funzionalità di comunicazione full duplex all’interno di un
applicativo.
Interessante notare che Visual Studio (sin dalla versione
2013) usa SignalR per implementare la funzionalità di
Browser Link.
17. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Visual Studio Browser Link
18. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Real Time Game: ShootR
20. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Performances
Throughtput
• Un singolo server riesce a gestire da 100.000 a 500.000 messaggi al
secondo.
• Con un’occupazione di memoria estremamente ridotta.
Scalabilità
• Fully async
• Circa 1.000 connessioni per server
• Supporta la scalabilità orizzontale utilizzando un message bus
(Service Bus, Redis, SQL)
23. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Next version: ASP.NET Core SignalR
• Ancora in fase di sviluppo
• Beta prevista per metà anno, RTM per fine anno
• Tra le tante novità:
• L’indipendenza da jQuery per il client Javascript
• Invio/ricezione anche di binary data
• Supporto di protocolli/formati multipli
• Supporto di clienti WebSocket "puri"
…e tanto altro ancora!
24. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Next version: ASP.NET Core SignalR
25. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Riferimenti
ASP.NET SignalR 2.0
http://www.asp.net/signalr
https://github.com/SignalR/SignalR
ASP.NET Core SignalR
https://blog.3d-logic.com/2017/01/15/signalr-core-part-13-design-considerations
https://speakerdeck.com/davidfowl/introducing-asp-dot-net-core-sockets
https://github.com/aspnet/SignalR
26. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Game Player Use Case diagram
27. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Match Making Activity diagram
28. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Match Making Sequence diagram
29. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Play Turn Activity diagram
30. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Play Turn Sequence diagram
31. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Demo
Game Matching
32. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Game Matching per Unity
• Poiché il game matching è piuttosto oneroso da sviluppare, per chi
sviluppa giochi con Unity può essere (molto) conveniente utilizzare
un servizio a pagamento come Unity Multiplayer:
• Gratuito fino a 20 giocatori contemporaneamente in gioco
• Con pagamento mensile in base al traffico prodotto
• Per una stima dei costi mensili, basta andare sul sito di Unity:
• https://unity3d.com/services/multiplayer
33. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Demo
Estimate Your Monthly Bill
34. Roma, 27 Gennaio 2017#TecHeroes loves GameDev Tour
Question Time…