Quando si sviluppano applicazioni Smart Client è normale pensare che il prodotto sia pronto quando sono state impostate e testate le funzioni richieste. Successivamente ci si scontra con il grosso problema di fornire l’applicazione al cliente e mantenerla.
Questa fase può rivelarsi una perdita di tempo (e di Km) per far visita al cliente per le installazioni e per i successivi aggiornamenti. Microsoft ClickOnce nasce proprio con l’obbiettivo di rendere semplice la fase di delivery e maintenance.
Vorrei raccontarvi la storia di una piccola applicazione che ho sviluppato in questo ultimo mese. RubricaFast nasce come una sandbox per applicazioni NET 2.0 (e lo è ancora). Si presenta come uno smart client per cercare numeri di telefono aziendali, nel mio lavoro uso il progetto per fare qualsiasi tipo di test sul Framework o per sperimentare le potenzialità delle WinForm senza dover creare centinaia di progetti usa e getta.
Il brutto anatroccolo diventa Cigno
Dopo aver sviluppato una prima bozza funzionante (riuscivo ad ottenere il mio numero di telefono…) ho provato a consegnare l’eseguibile ad un mio collega.
Dopo due test, voleva già una versione bug free!!
Passo la pausa pranzo ad apportare qualche correzione, preparo un nuovo file di Setup (creare un file di installazione può sembrare complicato…infatti lo è) e glielo consegno. Immaginiamo questa operazione, per ogni collega moltiplicata per ogni modifica!!!
Con ClickOnce tutto questo diventa davvero immediato per chi distribuisce, inoltre ogni ulteriore sviluppo diventa trasparente per chi installa e utilizza l’applicazione.

Dal menu Build di Visual Studio si clicca sulla voce Publish RubricaFast e attraverso un wizard è possibile pubblicare l’applicazione in pochi passi.
L’applicazione può essere pubblicata in diverse modi: FileSystem, IIS Locale, Sito FTP remoto, Sito Remoto.
E’ possibile decidere se l’applicazione debba funzionare sia OnLine che OffLine, oppure solo OnLine (in questo caso l’applicazione assomiglierà molto ad una Web Application).
Premendo Finish vedremo apparire una pagina publish.htm contenente un pulsante con la scritta Run, se abbiamo scelto la modalità Online, oppure Install nel caso la scelta sia stata Online/OffLine. Questo e’ il punto di accesso per installare l’applicazione e basterà fornirlo al cliente (o ai miei esigenti colleghi).

L’applicazione si installa con un semplice ed unico Click. Un’applicazione distribuita con ClickOnce non necessita di successive installazioni in quanto all’apertura dell’applicazione verrà verificata la disponibilità di aggiornamenti sul repository.
In questo modo, eliminate le perdite di tempo, ci si può dedicare al solo sviluppo.
Adesso, ogni volta che voglio pubblicare qualche miglioria, devo solo premere il tasto PublishNow.

La semplicità non è a discapito della Sicurezza
La sicurezza è un altro dei punti chiave di ClickOnce che a prima vista potrebbe sembrare un ottimo mezzo per distribuire software maligno. Un hacker potrebbe sostituire i vari manifest per far si che vengano distribuiti ed installati al posto degli originali. Per questo ClickOnce utilizza Authenticode, che mediante l’impiego di certificati digitali assicura che il software che stiamo per installare provenga da una fonte certa e che non sia stato in alcun modo modificato. Nel mio caso non possedevo un certificato trusted, comunque Visual Studio provvede a generarne uno per la firma dei manifest.
ClickOnce ha diverse limitazioni legate soprattutto all’installazione di altri componenti esterni al progetto ma che potrebbero essere necessari, come componenti COM.
Conclusioni
In conclusione pur non coprendo tutti i possibili scenari di installazione, ClickOnce ha risolto brillantemente il mio problema di distribuzione e di mantenimento di applicazioni .NET rendendolo un gioco da ragazzi.

Questo primo esperimento è cresciuto parallelamente all’utilizzo di ClickOnce su uno dei progetti più significativi per la nostra Factory che conterà un migliaio di installazioni. Ma la complessità dello scenario e la criticità del cliente mi costringe a parlarne in una prossima puntata, dove analizzeremo i limiti di ClickOnce e vi mostrerò come li abbiamo superati.