AutoRun delle applicazioni Web

Con Windows Server 2008 R2 e ASP.NET 4.0 (entrambi in Beta) è possibile far sì che un’applicazione web possa avviarsi automaticamente, anche se non vi è nessuna richiesta web in quel determinato istante.
In tutte le versioni precedenti ad IIS 7.5 una applicazione web inizia il suo ciclo di vita nel momento in cui viene effettuata la prima richiesta da parte di un client; ho specificato precedenti ad IIS 7.5 perché, proprio con quest’ultima versione, è possibile fare in modo che l’applicazione si avvii automaticamente, annullando così la dipendenza dalla prima richiesta web.
Come prima cosa è necessario specificare ad IIS 7.5 quale Application Pool deve essere avviato automaticamente e, dato che un Application Pool può contentere più applicazioni web, quale applicazione deve essere avviata.
Tutto questo va fatto tramite il file applicationHost.config andando ad agire sulla sezione <sites> e, nel caso si decida di avviare un qualcosa di custom, anche nella sezione <preloadProviders>, come mostrato di seguito:

<sites>
  <site name="MySite" id="1">
    <application path="/"
         preloadEnabled="true"
         preloadProvider="PrewarmMyCache" >
    </application>
  </site>
</sites>

<preloadProviders>
     <add name="myPreloadImplementation" type="imperugo.application.myPreloadClass, imperugo.application" />
</preloadProviders>

Come si può vedere il tutto è piuttosto semplice, l’unica nota è per la classe myPreloadClass che deve necessariamente implementare l’interfaccia IProcessHostPreloadClient presente in System.Web.Hosting.

Personalmente ritengo molto utile questa funzionalità in tutte quelle applicazioni che necessitano di un pre-caching di alcune informazioni o fanno uso di timer per eseguire operazioni pianificate, laddove non sia possibile installare servizi sul server.

Ciauz


Comments