Come viene utilizzato il modello di hosting principale Asp.Net nelle applicazioni Web?



Il core di Asp.net ha un significativo miglioramento del modello di hosting. Nelle versioni precedenti era previsto l'hosting delle applicazioni Web Asp.net Core tramite server Web proxy come IIS su Windows, Apache o NGINX. Tuttavia, il nuovo Asp.net core 2.2 consente di ospitare direttamente l'applicazione Asp.net in Windows all'interno di IIS senza i requisiti del server esterno. Pertanto, ciò aumenta il throughput utilizzando un semplice meccanismo di hosting in-process.

Modelli di hosting in ASP.NET Core

ASP.NET è una tecnologia di Microsoft che consente di creare pagine dinamiche sul lato server del web.

L'hosting ASP.NET è completamente integrato con il software basato su Windows e con il sistema operativo stesso. Questa tecnologia è considerata abbastanza sicura e affidabile, nonché facile da usare. Viene utilizzato principalmente per lo sviluppo di prodotti in-app.

I modelli di hosting in ASP.NET Core sono di due tipi, ovvero Hosting in-process e Hosting out-of-process. Prima di ASP.Net Core 2.2 esisteva un solo modello di hosting, ovvero l'hosting out-of-process ma a causa delle prestazioni, viene introdotto il modello di hosting in-process nelle versioni core 2.2 di Asp.net.

Introduzione del modello di hosting in-process in Asp.net Core

Le versioni precedenti di ASP.NET Core richiedevano uno per ospitare l'applicazione in IIS utilizzando un modello di hosting out-of-process che esegue il proxy tramite IIS. Le richieste che colpiscono IIS o IIS Express vengono inoltrate all'applicazione Web ASP.NET Core in esecuzione all'interno di Kestrel Web Server. Tuttavia, con il nuovo hosting in-process, per l'hosting come IIS, Nginx o Linux viene utilizzato un solo server. Significa che invece di inoltrare richieste a Kestrel, una nuova implementazione di Web Server (IISHttpServer) è ospitata direttamente all'interno del pool di applicazioni IIS, che servirà la richiesta. Con ASP.NET Core 3.1, il modello di hosting in-process viene utilizzato come modello predefinito ogni volta che si sviluppa una nuova applicazione utilizzando un modello esistente.

Apparentemente, questo modello di hosting ha un throughput molto elevato e un miglioramento delle prestazioni rispetto al modello di hosting out-of-process.

Modello di hosting fuori processo

Nei modelli di hosting out-of-process, puoi utilizzare il server Kestrel direttamente come server di richiesta utente oppure puoi distribuire l'applicazione in IIS che fungerà da server proxy e invierà richieste al server Kestrel interno. In questo tipo di modello di hosting, hai due opzioni per l'hosting, ad esempio utilizzando Kestrel e Proxy Server:

1. Utilizzo di Kestrel

In questo, Kestrel stesso funge da server perimetrale che server direttamente richieste dell'utente, il che significa che è possibile utilizzare il server Kestrel solo per l'applicazione.

2. Utilizzo di un server proxy

A causa delle limitazioni del server Kestrel, non è possibile utilizzarlo in tutte le applicazioni. In questi casi, è necessario utilizzare server potenti come IIS, Apache o NGINX. Quindi, in questa situazione, questo server funge da server proxy di riserva che reindirizzerà ogni richiesta al server Kestrel interno in cui l'applicazione è in esecuzione. Qui sono in esecuzione due server come IIS e Kestrel.

Questo modello di hosting è un modello predefinito per tutte le applicazioni implementate nella versione precedente di .NET Core 2.2. Uno dei limiti dell'utilizzo di questo tipo come la lentezza delle prestazioni.

Pensieri finali:

In base ai fatti, la maggior parte delle società di sviluppo web ASP.Net desidera sicuramente utilizzare il modello di hosting in-process. Dal momento che consuma meno risorse e offre buone prestazioni. Poiché non richiede un processo aggiuntivo per Kestrel ed evita anche comunicazioni extra tra IIS e Kestrel. Tuttavia, ci sono casi in cui si potrebbe voler scegliere l'hosting out-of-process come nel caso dell'hosting della stessa applicazione Web in Windows e Linux. Quando si parla di ospitare l'applicazione su altre piattaforme, Kestrel è il meccanismo principale utilizzato per gestire le richieste HTTP su tutte le piattaforme.

Tuttavia, l'esecuzione di In-Process su IIS è il modo migliore a meno che tu non abbia un requisito molto specifico per Kestrel.

Immagine principale: foto di Farzad Nazifi su Unsplash




Commenti (0)

lascia un commento