- ASP.NET Core Web API
- Hosting
- Logging
- serilog
- serilog-extensions-logging-file estensione per aggiungere il log su file con una linea di codice: (attenzione a fileSizeLimitBytes e retainedFileCountLimit per limitare ulteriormente i log file)
- Configuration
- Swagger
- Swashbuckle
- Autorest to generate clients based on swagger file. Supports C#, Go, Java, Node.js, TypeScript, Python, Ruby and PHP.
- Accesso ai dati
- Estensibilità netcore:
- serilog-extensions-logging-applicationinsights estensione per pushare i log su application insights
- estensione per loggare il dettaglio delle richieste HTTP: RequestLoggerMiddleware (vedi sorgente progetto di esempio)
- ASP.NET Core MVC
- finalmente un template praticamente identico alle Web API grazie al middleware estensibile, semplicemente con alcune estensioni in più aggiunte in fase di startup e le folder contenenti le parti statiche
- L'esperimento
- main function e startup: finalmente un semplice e leggero IoC container integrato nel framework: Microsoft.Extensions.DependencyInjection (gestito dal team asp.net)
- main function v1 vs v2: CreateDefaultBuilder, anche no!!
- novità sul
WebHostBuilder
v2: configuration e logging prima dello startup - publish -> v1 vs v2 e FDD vs SCD: runtime store, e finalmente un output di binari un po' più contenuta e views pre-compilate. Framework-dependent deployment (FDD) vs Self-contained deployment (SCD -> RuntimeIdentifiers).
- esecuzione sul sotto sistema Linux in windows 10 (AKA Bash on Ubuntu on Windows)
- chiamare l'api con postman
- un progetto asp.net (
AspNetCoreWebApi20
) può essere avviato sia con IIS Express che in self-host su console - un progetto asp.net (
AspNetCoreWebApi20
) avviato in self-host viene chiusa e rilanciata automaticamente quando si ricompila il progetto -
- una console self-host (
AspNetCoreSelfHost
) è la stessa cosa di un asp.net web site (AspNetCoreWebApi20
)
- una console self-host (
- setup su asp.net core
- setup di serilog
- setup su console app:
ILoggingBuilder
to rule them all - scopes per correlare le chiamate anche su console app
- setup su asp.net core e su console app:
ConfigurationBuilder
to rule them all - configurazione e uso delle options
- override config da command-line o variabile d'ambiente windows
- cos'è e il one-line setup o quasi :)
- generare il client c# e usarlo da una console net core
- one-line setup sql server con
AddDbContext
oAddDbContextPool
- DbContext injection, si ma solo nelle asp.net application! Altrimenti è meglio utilizzare un factory.
- panoramica dell'applicazione
- provare e fallire nell'aggiungere una migrazione, perchè? (vedi punto seguente)
- l'importanza del metodo
public static IWebHost BuildWebHost(string[] args)
- Provare di nuovo ad aggiungere una migrazione, tutto ok, ma il più delle volte è necessario utilizzare un implementazione di
IDesignTimeDbContextFactory<TContext>
- estensione per loggare il dettaglio delle richieste HTTP
RequestLoggerMiddleware
- estensione per pushare i log su application insights
- l'architettura è identica, viene configurata una rotta di default e la possibilità di avere risorse statiche che si trovano nella folder wwwroot.
Console app come una ASP.NET Core, perchè no?
- servizio compatibile per linux
- servizio compatibile per windows con Topshelf