Docker – Struttura

Gli elementi fondamentali della struttura di docker sono le immagini, i containers, i services e lo stack. Si possono considerare immagini e containers come l’equivalente di classi / istanze  utilizzate nei linguaggi di programmazione ad oggetti. Analogamente a quanto avviene per una classe che viene istanziata tramite la keyword new, anche le immagini sono “istanziate” utiilizando il comando docker run .  

Continua a leggere Docker – Struttura

Visual Studio e debug in rete

Durante la fase di test di un’applicazione può essere utile accedere a IIS Express da remoto. Normalmente quando viene eseguito il debug da visual studio, IIS Express è eseguito come http://localhost:80, quindi con il binding sulla porta 80 di localhost
Da qualsiasi altro client di rete (ma anche da internet in caso di NAT), il debug non è possibile. E’ possibile configurare il binding di IIS, modificandone il file di configurazione
Nella directory della soluzione .NET troviamo la cartella nascosta denominata .vs .
Al suo interno, un’altra cartella denominata config 
La configurazione di IIS Express viene fatta utilizzando il file applicationhost.config.
E’ sufficiente ricercare la configurazione legata al binding modificando l’attributo “bindingInformation” da ‘localhost‘ a ‘*‘. In questo modo, IIS Express effettuerà il binding su tutte le interfacce di rete presenti sul nostro dispositivo.

Binding


A questo è necessario abilitare l’accesso all’url, tramite powershell:

  • aprire un terminale powershell (eseguito come amministratore)
  •  eseguire il comando: 

netsh http add urlacl url=http://*:18460/ user=everyone

Per l’accesso da altri pc della rete è necessario configurare il firewall del pc utilizzato per il debug, garantendo l’accesso alla porta impostata al passaggio precedente. A questo punto qualsiasi pc della rete potrà accedere alla webapplication in running e sarà possibile debuggarne gli steps.

Programmazione asincrona con async – await (parte 2)

Dopo il post introduttivo sulla programmazione asincrona in .NET, analizziamo le parole chiave asyncawait, introdotte a partire da C# 5.0. Async e Await consentono di scrivere codice asincrono in modo semplice: il codice  risulta molto simile a quello sincrono, con tutti i vantaggi che ne derivano in termini di gestione di thread. Nella programmazione asincrona vengono generati thread separati, che non permetto di effettuare chiamate non bloccanti.

Continua a leggere Programmazione asincrona con async – await (parte 2)

Impostazione delle variabili d’ambiente per ASP.NET Core

ASP.NET Core utilizza la variabile d’ambiente ASPNETCORE_ENVIRONMENT per determinare l’ambiente di esecuzione corrente. I valori predefiniti che questa variabile può assumere sono Development, Staging oppure Production. Inoltre è possibile personalizzarne il valore con uno custom. Le variabili d’ambiente sono case insensitive.

WebHostBuilder è l’oggetto che consente di determinare l’ambiente in cui l’applicazione è in esecuzione. Per poter recuperare il contesto attuale è possibile utilizzare IHostingEnvironment , in modo da poter determinare un comportamento specifico in base all’ambiente. Ad esempio, nell’ambiente Production l’applicazione potrebbe abilitare la minimizzazione delle risorse, mentre in Development non eseguire nessuna particolare ottimizzazione.

Continua a leggere Impostazione delle variabili d’ambiente per ASP.NET Core

Entity Framework Core – Creare il database all’avvio

Una funzionalità piuttosto utile,  presente in Entity Framework 6.0,  è quella di creare il database in fase di inizializzazione dell’applicatione. In particolare, utilizzando :

è possibile automatizzare le operazioni di creazione della struttura del database, nel caso in cui non esista. Ovviamente il database creato rispetta le definizioni presenti all’interno del contesto (nell’esempio MyContext).

Anche in Entity Framework Core esiste una funzionalità simile: la configurazione dovrà essere effettuata all’interno del file Startup.cs.

Continua a leggere Entity Framework Core – Creare il database all’avvio