Condividi tramite


Caratteristiche delle applicazioni Web moderne

Suggerimento

Questo contenuto è un estratto dell'eBook, Architect Modern Web Applications with ASP.NET Core and Azure, disponibile in .NET Docs o come PDF scaricabile gratuito che può essere letto offline.

Progettare applicazioni Web moderne con ASP.NET Core e anteprima della copertina di Azure eBook.

"… Con un design appropriato, le funzionalità risultano economiche. Questo approccio è difficile, ma continua ad avere successo".
- Dennis Ritchie

Le applicazioni Web moderne hanno aspettative più elevate per gli utenti e più richieste che mai. Le app Web di oggi dovrebbero essere disponibili 24/7 da qualsiasi parte del mondo e utilizzabili praticamente da qualsiasi dispositivo o dimensione dello schermo. Le applicazioni Web devono essere sicure, flessibili e scalabili, per soddisfare i picchi di richiesta. Gli scenari sempre più complessi devono essere gestiti da esperienze utente avanzate basate sul client usando JavaScript e comunicando in modo efficiente tramite le API Web.

ASP.NET Core è ottimizzato per applicazioni Web moderne e scenari di hosting basati sul cloud. La progettazione modulare consente alle applicazioni di dipendere solo dalle funzionalità effettivamente usate, migliorando la sicurezza e le prestazioni delle applicazioni riducendo al contempo i requisiti delle risorse di hosting.

Applicazione di riferimento: eShopOnWeb

Queste linee guida includono un'applicazione di riferimento, eShopOnWeb, che illustra alcuni principi e raccomandazioni. L'applicazione è un semplice negozio online, che supporta la navigazione attraverso un catalogo di camicie, tazze di caffè e altri articoli di marketing. L'applicazione di riferimento è deliberatamente semplice per semplificare la comprensione.

eShopOnWeb

Figura 2-1. eShopOnWeb

Applicazione di riferimento

Ospitato sul cloud e scalabile

ASP.NET Core è ottimizzato per il cloud (cloud pubblico, cloud privato, qualsiasi cloud) perché è a bassa memoria e velocità effettiva elevata. Il footprint più piccolo delle applicazioni ASP.NET Core significa che è possibile ospitarne più nello stesso hardware e si paga un minor numero di risorse quando si usano servizi di hosting cloud con pagamento in base al consumo. La velocità effettiva più elevata significa che è possibile servire più clienti da un'applicazione in base allo stesso hardware, riducendo ulteriormente la necessità di investire nei server e nell'infrastruttura di hosting.

compatibile con più piattaforme

ASP.NET Core è multipiattaforma e può essere eseguito in Linux, macOS e Windows. Questa funzionalità apre molte nuove opzioni per lo sviluppo e la distribuzione di app compilate con ASP.NET Core. I contenitori Docker, sia Linux che Windows, possono ospitare applicazioni ASP.NET Core, consentendo loro di sfruttare i vantaggi dei contenitori e dei microservizi.

Modulare e ad accoppiamento libero

I pacchetti NuGet sono componenti di primo livello in .NET Core, e le app ASP.NET Core sono costituite da molte librerie tramite NuGet. Questa granularità delle funzionalità aiuta a garantire che le app dipendano solo dalle funzionalità di cui hanno effettivamente bisogno e siano implementate, riducendo la loro impronta e la superficie vulnerabile alla sicurezza.

ASP.NET Core supporta anche completamente l'inserimento delle dipendenze, sia internamente che a livello di applicazione. Le interfacce possono avere più implementazioni che possono essere scambiate in base alle esigenze. L'inserimento delle dipendenze consente alle app di accoppiarsi liberamente a tali interfacce, invece di implementazioni specifiche, semplificando l'estensione, la gestione e il test.

Test semplici con test automatizzati

ASP.NET le applicazioni core supportano unit test e il relativo accoppiamento libero e supporto per l'inserimento delle dipendenze semplifica lo scambio di problemi dell'infrastruttura con implementazioni fittizie a scopo di test. ASP.NET Core include anche un TestServer che può essere usato per ospitare app in memoria. I test funzionali possono quindi effettuare richieste a questo server in memoria, esercitando lo stack di applicazioni completo (incluso middleware, routing, associazione di modelli, filtri e così via) e ricevendo una risposta, tutto in una frazione del tempo necessario per ospitare l'app in un server reale e effettuare richieste tramite il livello di rete. Questi test sono particolarmente facili da scrivere e utili per le API, che sono sempre più importanti nelle applicazioni Web moderne.

Comportamenti tradizionali e SPA supportati

Le applicazioni Web tradizionali hanno comportato un comportamento sul lato client limitato, ma si sono invece basate sul server per tutta la navigazione, le query e gli aggiornamenti che l'app potrebbe dover effettuare. Ogni nuova operazione eseguita dall'utente verrà convertita in una nuova richiesta Web, con il risultato di ricaricare una pagina completa nel browser dell'utente finale. Modello classico - il framework MVCView-Controller in genere segue questo approccio, con ogni nuova richiesta corrispondente a un'azione diversa del controller, che a sua volta lavora con un modello e restituisce una vista. Alcune singole operazioni in una determinata pagina potrebbero essere migliorate con la funzionalità AJAX (JavaScript asincrona e XML), ma l'architettura complessiva dell'app usava molte visualizzazioni MVC e endpoint URL diversi. Inoltre, ASP.NET Core MVC supporta anche Razor Pages, un modo più semplice per organizzare le pagine in stile MVC.

Le applicazioni a pagina singola (SPA), al contrario, comportano pochissimi caricamenti di pagina lato server generati dinamicamente (se presenti). Molte applicazioni a pagina singola vengono inizializzate all'interno di un file HTML statico che carica le librerie JavaScript necessarie per avviare ed eseguire l'app. Queste app fanno un uso elevato delle API Web per le loro esigenze di dati e possono offrire esperienze utente molto più avanzate. Blazor WebAssembly fornisce un mezzo per lo sviluppo di SPA usando il codice .NET, che viene quindi eseguito nel browser dell'utente.

Molte applicazioni Web implicano una combinazione del comportamento tradizionale dell'applicazione Web (in genere per il contenuto) e delle applicazioni a pagina singola (per l'interattività). ASP.NET Core supporta sia MVC (visualizzazioni o basate su pagina) che API Web nella stessa applicazione, usando lo stesso set di strumenti e librerie framework sottostanti.

Sviluppo e distribuzione semplici

Le applicazioni ASP.NET Core possono essere scritte usando semplici editor di testo e interfacce a riga di comando o ambienti di sviluppo integrati come Visual Studio. Le applicazioni monolitiche vengono in genere distribuite in un singolo endpoint. Le distribuzioni possono essere facilmente automatizzate come parte di una pipeline di integrazione continua (CI) e recapito continuo (CD). Oltre agli strumenti CI/CD tradizionali, Microsoft Azure ha integrato il supporto per i repository Git e può distribuire automaticamente gli aggiornamenti man mano che vengono eseguiti in un ramo o un tag Git specificato. Azure DevOps offre una pipeline di distribuzione e compilazione CI/CD completa e GitHub Actions offre un'altra opzione per i progetti ospitati in questa posizione.

ASP.NET e Web Form tradizionali

Oltre a ASP.NET Core, i ASP.NET tradizionali 4.x continuano a essere una piattaforma affidabile e affidabile per la creazione di applicazioni Web. ASP.NET supporta modelli di sviluppo MVC e API Web, nonché Web Form, particolarmente adatti allo sviluppo avanzato di applicazioni basate su pagine e funzionalità di un ricco ecosistema di componenti di terze parti. Microsoft Azure offre un supporto di lunga data per ASP.NET applicazioni 4.x e molti sviluppatori hanno familiarità con questa piattaforma.

Blazor

Blazor è incluso in ASP.NET Core 3.0 e versioni successive. Offre un nuovo meccanismo per la creazione di applicazioni client Web interattive avanzate con Razor, C# e ASP.NET Core. Offre un'altra soluzione da considerare quando si sviluppano applicazioni Web moderne. Esistono due versioni di Blazor da considerare: lato server e lato client.

Server-side Blazor è stato rilasciato nel 2019 con ASP.NET Core 3.0. Come suggerisce il nome, viene eseguito sul server, eseguendo il rendering delle modifiche al documento client e inviandole al browser attraverso la rete. Il lato Blazor server offre un'esperienza client avanzata senza richiedere JavaScript sul lato client e senza dover caricare pagine separate per ogni interazione di pagina client. Le modifiche nella pagina caricata vengono richieste dal server e quindi inviate al client tramite SignalR.

Lato Blazorclient, rilasciato nel 2020, elimina la necessità di eseguire il rendering delle modifiche nel server. Usa WebAssembly invece per eseguire il codice .NET all'interno del client. Il client può comunque effettuare chiamate API al server se necessario per richiedere i dati, ma tutto il comportamento lato client viene eseguito nel client tramite WebAssembly, che è già supportato da tutti i browser principali ed è solo una libreria JavaScript.

Riferimenti : applicazioni Web moderne