Front-end ASP.NET Core per l'esplorazione geospaziale dei rischi climatici, la consultazione di layer WMS e l'avvio di simulazioni per scenari estremi.
Overview • Stack • Quick start • Configuration • Docker • WMS notes
MultiClimact FE e' l'interfaccia web del progetto MULTICLIMACT. L'applicazione combina Razor Pages, controller proxy e mappe OpenLayers per:
- visualizzare layer WMS e dati territoriali su piu' mappe tematiche;
- consultare run recenti per terremoti, ondate di calore e precipitazioni estreme;
- lanciare simulazioni e analizzare risultati lato UI;
- integrare servizi remoti tramite client HTTP tipizzati e proxy API.
| Area | Dettagli |
|---|---|
| Backend web | ASP.NET Core 8, Razor Pages, MVC Controllers |
| Data access | EF Core 8, PostgreSQL in produzione, SQLite per sviluppo locale |
| Geospatial UI | OpenLayers, WMS proxy, layer toggling lato client |
| External services | Earthquake, Heatwave, Extreme Precipitation, Graph services |
| API docs | Swagger / OpenAPI |
| Path | Scopo |
|---|---|
Pages/ |
Razor Pages, partials e pannelli UI della dashboard |
Controllers/ |
Proxy e API per WMS, terremoti, heatwave e servizi esterni |
Services/ |
Typed HttpClient e helper applicativi |
Data/ |
ApplicationDbContext e bootstrap database |
Models/ |
View model e DTO |
Resources/ |
Risorse per localizzazione |
wwwroot/ |
Asset statici, JavaScript, CSS e immagini |
docs/assets/ |
Asset locali usati nella documentazione |
.NET SDK 8.0- un database PostgreSQL raggiungibile, oppure SQLite per sviluppo locale
- endpoint configurati per i servizi esterni usati dall'app
dotnet build
dotnet ef database update
dotnet watch runPer sviluppo locale con SQLite, imposta DatabaseProvider=Sqlite e una ConnectionStrings:SqliteConnection valida. In questo scenario il progetto puo' creare automaticamente lo schema locale senza usare le migration PostgreSQL.
L'app parte tipicamente su https://localhost:5001 o sulla porta assegnata da ASP.NET Core in ambiente locale.
Le impostazioni principali stanno in appsettings.json, con override in appsettings.Development.json, variabili d'ambiente o dotnet user-secrets.
| Key | Descrizione |
|---|---|
DatabaseProvider |
Sqlite per sviluppo locale oppure PostgreSQL |
ConnectionStrings:DefaultConnection |
connection string PostgreSQL |
ConnectionStrings:SqliteConnection |
connection string SQLite |
EarthquakeService:BaseUrl |
base URL del servizio terremoti |
HeatwaveService:BaseUrl |
base URL del servizio heatwave |
ExtremeprecipitationService:BaseUrl |
base URL del servizio precipitazioni estreme |
GraphService:BaseUrl |
base URL del servizio grafi |
wms:* |
URL e layer name per i servizi WMS |
Per evitare commit di segreti:
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Host=...;Database=...;Username=...;Password=..."docker build -t multiclimact-fe .docker run --rm -it -p 8080:8080 --name multiclimact-fe \
-e ASPNETCORE_ENVIRONMENT=Production \
-e DatabaseProvider=PostgreSQL \
-e ConnectionStrings__DefaultConnection="Host=<host>;Username=<user>;Password=<password>;Database=<db>" \
multiclimact-feL'app ascolta su http://localhost:8080. Se preferisci SQLite persistente, monta un volume su /app o /data in base alla configurazione del container.
docker compose up --build
docker compose downLa homepage costruisce le configurazioni mappa leggendo il blocco wms da appsettings.json, esponendo poi URL e nomi layer alla UI tramite ViewData. I file chiave per questa parte sono:
Pages/Index.cshtml.csper il mapping configurazione -> viewwwwroot/js/maps-init.jsper l'inizializzazione delle mappewwwroot/js/openlayer-wms-helper.jsper gestione layer e matrice WMSControllers/WmsProxyController.csper il proxyGetFeatureInfoe le chiamate verso il server WMS
Nota pratica: usa URL WMS base senza query string gia' appendata. I parametri service, request e simili vengono composti dall'applicazione.
- Aggiungi in
appsettings.jsonle nuove chiaviwmsurl_<nome>ewmslayer_<nome>. - Estendi il mapping in
Pages/Index.cshtml.cs. - Aggiorna
wwwroot/js/maps-init.jso la relativalayerMatrix. - Collega i controlli UI in
Pages/Shared/_TabPanels_C.cshtmlo nel pannello interessato. - Se il layer richiede un server diverso, aggiorna anche
Controllers/WmsProxyController.cs.
dotnet builddeve completarsi senza erroridotnet ef database updatedeve raggiungere il database corretto- i servizi Earthquake / Heatwave / Extreme Precipitation devono rispondere sulla base URL configurata
- il WMS deve restituire correttamente
GetCapabilities - avviando
dotnet runla homepage deve caricare mappa, layer toggle e richiesteGetFeatureInfo
- Mantieni la logica UI dentro
*.cshtml.cse i controller piu' sottili possibile. - Tratta come obbligatorie le warning di nullability.
- Prima di pubblicare modifiche, esegui
dotnet formatquando possibile. - Se aggiungi test, usa xUnit in
MultiClimact.Tests/.