7. .NET Day #netday15
Model
View
Controller
1
5
2
4
3B
r
o
w
s
e
r
The request hits the
controller
The Controller asks
the Model for data
The Model gives the
data back to the
Controller
The controller formats the data
and passes them to the View
The view renders the
HTML that needs to be
sent to the client
22. Huge infrastructure scale is the enabler
19 Regions ONLINE…huge datacenter capacity around the world…and we’re growing
Central US
Iowa
West US
California
North Europe
Ireland
East US
Virginia
East US 2
Virginia
US Gov
Virginia
North Central US
Illinois
US Gov
Iowa
South Central US
Texas
Brazil South
Sao Paulo
West Europe
Netherlands
China North *
Beijing
China South *
Shanghai
Japan East
Saitama
Japan West
OsakaIndia West
TBD
India East
TBD
East Asia
Hong Kong
SE Asia
Singapore
Australia West
Melbourne
Australia East
Sydney
100+ datacenters
Top 3 networks in the world
2x AWS, 6x Google DC Regions
G Series – Largest VM in World, 32 cores, 448GB Ram, SSD… Operational Announced * Operated by 21Vianet
24. Microsoft Azure Web Sites
Crea nuovi siti Web in pochi secondi
Gestisci e scala i tuoi siti con facilità
Load balancing automatico
Utilizza istanze riservate per
aumentare le performance e la
scalabilità
Supporto per attività schedulate
(Web jobs)
Utilizza ASP.NET, ASP, PHP, Java o
Node.js
Database SQL Azure o MySQL
Supporto ad applicazioni e
framework open source
Sviluppa con Visual Studio e
WebMatrix
Supporta tool di sviluppo Web su
ogni piattaforma (Windows, OSX e
Linux)
Integrazione con source control
come Team Foundation Server e
Git
Supporto per l’analisi dell’utilizzo e
delle performance
Accesso veloce a log, richieste e
diagnostica
25. • Database SQL Server as a service
• Completamente gestito
• Scalabile
• Cross Datacenter failover e backup per
supportare scenari di disaster recovery
SQL Azure
• Storage as a service
• Completamente gestito
• Replica automatica dei dati
Azure Storage
30. Provare Azure
• 150 € di credito validi per un mese
• Utilizzabili con tutti i servizi di Azure
• Una serie di risorse utilizzabili gratuitamente
http://azure.microsoft.com/it-it/pricing/free-trial
+
Innanzi tutto, capiremo cosa si intende per il cosiddetto «Ecosistema Web» di Microsoft, ovvero tutti gli strumenti che abbiamo a disposizione per creare e rendere fruibili contenuti attraverso Internet. Perché, come vedremo, non abbiamo solo a che fare con i classici siti Internet, che è la prima cosa a cui si pensa quando si parla di Web, ma come vedremo c’è molto di più.
Ecosistema Web nel mondo Microsoft significa ASP.NET, ma questo nome comprende un nutrito numero di framework e strumenti che abbiamo a disposizione per creare soluzioni (e quindi non solo siti, come abbiamo detto) che saranno accessibili attraverso Internet.
Li vediamo schematizzati in questa slide. Sopra quello che è il core, ASP.NET, poggiano sia una serie di framework per la creazione di siti veri e propri, sia strumenti per la realizzazione di servizi, anch’essi esposti attraverso la rete, ma che non sono direttamente accessibili all’utente, ma forniscono funzionalità che possono essere a loro volta integrate in siti veri e propri, ma anche in applicazioni desktop, per smartphone, tablet, ecc.
Abbiamo parlato di ASP.NET MVC, che è diciamo la soluzione principale per lo sviluppo di applicativi Web con .NET, sicuramente la tecnologia su Microsoft punta di più. Quindi continua ad analizzarlo più in dettaglio. Diamo quindi uno sguardo a come funziona questo sistema. La prima cosa che cerchiamo di capire è come, da una richiesta del browser, ASP.NET MVC ci fornisce una pagina di risposta. Questo perché il sistema, basato sul pattern MVC, come abbiamo accennato all’inizio suggerisce una netta separazione tra l’interfaccia vera e propria e la logica applicativa.
Entity Framework è un altro argomento che richiederebbe una trattazione a parte. In questa sede vediamo solo di capire di cosa si tratta.
Permette di lavorare con dati relazionali usando normali classi .NET, che sono automaticamente mappate sulle classi del database, quindi noi non abbiamo bisogno di scrivere esplicitamente il codice per l’accesso al database.
E ora parliamo di Bootstrap. Anche se non fa strettamente parte di .NET, è ormai un componente fondamentale che deve essere usato in tutte le applicazioni Web che sviluppiamo.
Per quanto riguarda l’approccio mobile first, è importante ricordare che comunque i desktop non sono trascurati, sono sempre attori di importanza centrale.
Le pagine ASP.NET MVC che ci vengono create dai template di Visual Studio sono già pronte per usare Bootstrap, ovvero il codice HTML che viene generato include i riferimenti alle classi di Bootstrap.
Passiamo adesso alla seconda famiglia di componenti di ASP.NET, ovvero la parte dei servizi. Che come detto sono WebAPI e SignalR.
Web API si basta sulla filosofia REST, per cui abbiamo una serie di risorse accessibili via HTTP e che rispondono a chiamate di tipo GET, POST, PUT, DELETE, ecc. Naturalmente in questo caso non abbiamo un’interfaccia utente, perché stiamo parlando di servizi, e che un qualcosa che sarà sfruttato da altre applicazioni, da applicazioni esterne.
Essendo chiamate HTTP, le potremmo utilizzare sia da un sito Web, ma anche dalle nostre applicazioni client, come potrebbe essere la Universal app che abbiamo visto prima.
Questo diagramma riassume l’architettura di SignalR. Non entreremo molto nel dettaglio, perché la cosa richiederebbe una trattazione a parte, ma questo serve per dare un’idea delle parti in gioco. Notiamo però una cosa importante: esistono due tipi di API fornite da SignalR: a basso livello (PersistentConnection) oppure ad alto livello (Hub). Per i nostri scopi, così come per la maggior parte degli scenari, gli Hub sono più che sufficienti, e dunque ci concentreremo su di essi.
Nella nomenclatura di SignalR, un endpoint che fornisce le funzionalità di comunicazione signalR è chiamato Hub.
Un Hub SignalR può essere inserito all’interno di un normale sito ASP.NET MVC o di un sito che contiene solo una parte di servizi Web API.
Quindi con SignalR abbiamo anche la possibilità di realizzare comunicazioni bi-direzionali tra applicazioni Web da una parte e ad esempio Universal app dall’altra. Abbiamo quindi a disposizione uno strumento di comunicazione potentissimo.
Azure è tutto questo, una piattaforma distribuita che offre una grandissima serie di servizi (in continuo aumento), sia come IaaS (Infrastructure as a service, ovvero una vera e propria infrastruttura che è fornita come servizio, e noi dobbiamo usare liberamente, come nel caso delle macchine virtuali, su cui abbiamo completo controllo, come se fosse una macchina virtuale installata sul nostro PC di casa) sia come PaaS (Platform as a service). Quest’ultima è sicuramente la parte più interessante.
Diamo quindi un rapido sguardo ai servizi che noi, sviluppatori .NET, possiamo sfruttare, e vediamo nella pratica quale è lo sforzo necessario per avvicinarsi ad essi.
Anche se è disponibile da un po’ di tempo, è ancora considerato in Preview, infatti alcune funzionalità del portale classico che abbiamo visto prima non sono ancora disponibili (come i Mobile Services). D’altra parte, ci sono caratteristiche come il Search che si trovano solo sul nuovo portale. E quindi a seconda degli scenari e dei servizi che ci servono, siamo costretti a passare da un portale all’altro.