Cosa c'è di nuovo in Windows Server 2003?

4 pagine in totale: <<Indietro 1 2 [3] 4 Avanti >>

La settimana scorsa abbiamo analizzato le nuove caratteristiche generali di Windows Server 2003. Da questa cominciamo a soffermarci maggiormente sulle nuove caratteristiche di IIS 6, che rendono la nuova versione di Windows la piattaforma ideale per le applicazioni web, in special modo basate su ASP.NET.

La nuova architettura di IIS

IIS 6 si basa su una nuova architettura e basate su tre oggetti principali: W3SVC , http.sys e W3Core .

Immagine

W3SVC è il servizio che crea e monitora i worker process (che fanno girare le applicazioni web) in base alle informazioni contenute nel metabase , il file di configurazione.

Il parente più vicino di questo servizio è l'amministrazione di IIS 5, che però è parte integrante di inetinfo e quindi è più soggetto a problemi: se inteinfo va in crash, l'amministrazione che è parte integrante dello stesso servizio fa la stessa fine, rendendo impossibile il riavvio del processo e bloccando quindi tutte le richieste al servizio web.

Nella versione 6 W3SVC opera come processo indipendente e fa una cosa molto semplice: verifica che ogni applicazione funzioni ed in caso contrario provvede al riavvio. Visto che non c'è codice che gira in questo processo, non è possibile che vada in crash e di conseguenza è sempre possibile riavviare applicazioni in stallo. E' proprio questo il servizio su cui si basa la possibilità di riavviare gli application pools in maniera programmatica, attraverso le impostazioni che preferiamo.

http.sys è invece il più pubblicizzato tra le novità dell'architettura di IIS 6, perché è alla base delle migliorate performance del web server. E' un driver che risiede nel kernel mode e processa le richieste HTTP in arrivo dal web server.

Per capire cosa voglia dire funzionare nel kernel mode, è necessario fare un'analogia con IIS 4 e 5. Questi ultimi girano nello user mode, che è quello poi che il sistema operativo utilizza per tutte le applicazioni, che tra le altre cose non ha accesso diretto all'hardware.

Come conseguenza si basa su procedure particolari (le API) per avere funzionalità specifiche, come lavorare sui driver di rete, salvare un file, o inviare il risultato attraverso le schede di rete stesse. Il cambio di stato, da kernel a user mode, di una esecuzione è operazione assai dispendiosa in termini di consumo di risorse.

Utilizzando un driver nel kernel mode, IIS 6 ha accesso diretto alle funzionalità di rete, senza bisogno di passare attraverso questo switch di contesto per utilizzare insock. Con alti carichi questo piccolo tempo necessario a cambiare il contesto si traduce in un'ottimizzazione della velocità di risposta del web server.

IIS 6 continua a girare nello user mode (più sicuro perché, per l'appunto, in grado di avere meno potere) ma dipende da http.sys che invece è nel kernel mode e che si occupa di ricevere le richieste, decidere a quale worker process girarle e quindi restituire la risposta.

Ovviamente il driver è fatto in modo tale da evitare che un utente possa farci girare codice in grado di provocare un crash nel driver stesso, rendendo quindi impossibile fermare IIS 6 in questo modo.

Immagine

Immagine

Tra le altre funzionalità che http.sys ha in carico c'è la gestione dei logs. In questo modo il driver scrive i logs in maniera più veloce e previene "scontri" tra più worker process, per una scrittura contemporanea su uno stesso file di log, rendendo più veloce l'operazione.

Tra l'altro http.sys è in grado di registrare errori particolari in un file specifico, httperr.log, che è utile ad esempio quando il driver non è in grado di contattare il worker process, perché quest'ultimo è andato in crash, è in riciclo, oppure quando un utente invia una richiesta parziale al server stesso.

In questo modo è possibile dare un'occhiata a questo log per ottimizzare il servizio. Di default il log è salvato in \WinNT\system32\logfiles\ ma è possibile cambiarne il path attraverso una chiave particolare, di tipo stringa e di nome ErroLogginDir, nel percorso HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters del registry.

Un nuovo sistema di gestione della cache

L'architettura di IIS 6 è spiegata in dettaglio nella figura a fianco. Come si può notare e come abbiamo già detto, http.sys lavora ad un livello differente, ovvero nel kernel mode, una modalità di accesso alle informazioni ed alle funzionalità dell'hardware più veloce.

IIS 6 implementa internamente una cache, proprio in questo livello, che è in qualche modo "sovrapposta" a quella che i singoli engine possono implementare, come nel caso di ASP.NET.

In pratica sfruttando le headers di scadenza, che vengono impostate a livello server side con i vari engine, il web server è in grado di tenere in cache le pagine (ovvero l'HTML) generato e servire questa versione già pronta ai client.

Come si intuisce, questo vuol dire poter avere essenzialmente le stesse indetiche performance di una pagina HTML statica. In più la gestione della cache, con invalidazione di una pagina scaduta, è gestita in maniera automatica e trasparente rispetto ai nostri script esistenti.

Un meccanismo di questo tipo permette di migliorare enormemente perfomance e scalabilità dell'applicazione, perché aiuta a limitare gli investimenti sull'hardware, potendo contare su un sistema che riduce, tra le altre cose, le chiamate al database, sfruttando una versione già popolata della pagina e gestendo la scadenza in maniera del tutto automatica, in base alle nostre istruzioni.

4 pagine in totale: <<Indietro 1 2 [3] 4 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC