Esercizio - Scrivere codice per implementare un'applicazione Web
In questa unità si apprenderà come usare gli strumenti per sviluppatori per creare il codice per un'applicazione Web di base.
Creare un nuovo progetto Web
Il fulcro degli strumenti dell'interfaccia della riga di comando .NET è rappresentato dallo strumento da riga di comando dotnet
. Con questo comando si crea un nuovo progetto Web ASP.NET Core.
Eseguire questo comando per creare una nuova applicazione ASP.NET Core MVC (Model-View Cotroller) denominata "BestBikeApp":
dotnet new mvc --name BestBikeApp
Il comando crea una nuova cartella denominata "BestBikeApp" per contenere il progetto.
Facoltativamente, testare l'app Web
È possibile testare l'applicazione in locale in Azure. A tale scopo, seguire questa procedura:
Eseguire i comandi seguenti per compilare ed eseguire l'applicazione Web in background:
cd BestBikeApp dotnet run &
Si otterrà un output simile a quello dell'esempio seguente:
[1] <process-number> <username> [ ~/BestBikeApp ]$ Building... warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35] No XML encryptor configured. Key {b4a2970c-215c-4eb2-92b4-c28d021158c6} may be persisted to storage in unencrypted form. info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:<port> info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development info: Microsoft.Hosting.Lifetime[0] Content root path: /home/cephas_lin/BestBikeApp
Nell'output prendere nota dei valori di <numero di processo> e <porta>.
Eseguire il comando seguente per passare all'applicazione Web, sostituendo la <porta> con la porta annotata nell'ultimo passaggio.
curl -kL http://localhost:<port>/
Verrà visualizzato un codice HTML che termina con le righe seguenti:
<div class="text-center"> <h1 class="display-4">Welcome</h1> <p>Learn about <a href="https://zcusa.951200.xyz/aspnet/core">building Web apps with ASP.NET Core</a>.</p> </div> </main> </div> <footer b-b5g3qljvtd class="border-top footer text-muted"> <div b-b5g3qljvtd class="container"> © 2024 - BestBikeApp - <a href="/Home/Privacy">Privacy</a> </div> </footer> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/js/site.js?v=hRQyftXiu1lLX2P9Ly9xa4gHJgLeR1uGN5qegUobtGo"></script> </body> </html>
Usando il <numero di processo> annotato in precedenza, arrestare dotnet:
kill <process-number>
Per creare un'applicazione Web di base si usa Maven, uno strumento di uso comune per la gestione e la compilazione di progetti per app Java. Viene usato il modello maven-archetype-webapp
per generare il codice per l'applicazione Web.
Eseguire ora questi comandi in Azure Cloud Shell per creare una nuova app Web:
cd ~ mvn archetype:generate -DgroupId=example.demo -DartifactId=helloworld -DinteractiveMode=false -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.5
Eseguire ora questi comandi per passare alla directory della nuova applicazione"helloworld" e creare il pacchetto dell'applicazione per la distribuzione:
cd helloworld mvn package
Al termine dell'esecuzione del comando, usare i comandi seguenti per aprire la directory target e visualizzarne il contenuto:
cd target ls
A questo punto è disponibile un file denominato helloworld.war
che è il pacchetto dell'applicazione Web che verrà distribuito nel servizio app.
Per creare un'applicazione Web Node.js di base si usa npm
(Node Package Manager) insieme a codice JavaScript per eseguire l'elaborazione della pagina Web effettiva.
Eseguire i comandi seguenti nel terminale per creare un nuovo file
package.json
che descrive l'applicazione Node.js:cd ~ mkdir helloworld cd helloworld cat >package.json <<EOL { "name": "helloworld", "version": "1.0.0", "scripts": { "start": "node index.js" } } EOL
Viene creato un nuovo file package.json
nella cartella corrente. Se si immette ls
nella finestra del terminale, il file dovrebbe trovarsi all'interno della cartella corrente. Per eseguire la logica del sito Web, è necessario un file JavaScript. Per questo esempio di base è necessario un solo file: index.js
.
Creare il file eseguendo questo comando nel terminale:
cat >index.js <<EOL const http = require('http'); const server = http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/html" }); response.end("<html><body><h1>Hello World!</h1></body></html>"); }); const port = process.env.PORT || 1337; server.listen(port); console.log(\`Server running at http://localhost:\${port}\`); EOL
Facoltativamente, testare l'app Web
Durante l'esecuzione dell'app Web helloworld, è possibile verificare che sia in esecuzione in locale aprendo una seconda sessione della shell dei comandi.
In una nuova scheda del browser passare a https://shell.azure.com/.
Dalla sessione della shell dei comandi primaria eseguire i comandi seguenti per avviare l'applicazione Web in background:
cd ~/helloworld npm start &
Si otterrà un output simile a quello dell'esempio seguente:
[1] <process-number> > helloworld@1.0.0 start > node index.js Server running at http://localhost:1337
Nell'output prendere nota dei valori di <numero di processo>.
Nella stessa sessione di Cloud Shell eseguire il comando seguente per passare all'applicazione Web.
curl -kL http://localhost:1337/
Dovrebbe essere visualizzato l'output seguente:
<html><body><h1>Hello World!</h1></body></html>
Usando il <numero di processo> annotato in precedenza, arrestare il nodo:
kill <process-number>
Per creare un'applicazione Web di base si usa il framework per le applicazioni Web di Flask.
Eseguire i comandi seguenti in Azure Cloud Shell per configurare un ambiente virtuale e installare Flask nel profilo:
python3 -m venv venv source venv/bin/activate pip install flask
Eseguire questi comandi per creare e passare alla nuova directory dell'app Web:
mkdir ~/BestBikeApp cd ~/BestBikeApp
Creare un nuovo file denominato application.py con una risposta HTML di base:
cat >application.py <<EOL from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "<html><body><h1>Hello Best Bike App!</h1></body></html>\n" EOL
Per distribuire l'applicazione in Azure, è necessario salvare l'elenco dei requisiti dell'applicazione in un file requirements.txt. A tale scopo, eseguire il comando seguente:
pip freeze > requirements.txt
Facoltativamente, testare l'app Web
È possibile testare l'applicazione in locale in Azure durante l'esecuzione.
Eseguire i comandi seguenti per avviare l'applicazione Web in background:
cd ~/BestBikeApp export FLASK_APP=application.py flask run &
Si otterrà un output simile a quello dell'esempio seguente:
[1] <process-number> * Serving Flask app 'application.py' * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:5000 Press CTRL+C to quit
Nell'output prendere nota dei valori di <numero di processo>. Poiché il processo è in esecuzione in background, non è possibile uscire con CTRL+C. Sarà necessario arrestarlo con il relativo numero di processo.
Eseguire il comando seguente per passare all'applicazione Web.
curl -kL http://localhost:5000/
Si otterrà l'output HTML seguente:
<html><body><h1>Hello Best Bike App!</h1></body></html>
Usando il <numero di processo> annotato in precedenza, arrestare Flask:
kill <process-number>