Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Configuration Application Block per HappySign

Vedo che ho ricevuto un sacco di proteste per la mia voglia di usare app.config per leggere e salvare le applicazioni di HappySign. Sappiate che lotterò duramente e con tutte le mie forze: posso anche avere torto, ma non me ne importa nulla, l'importante è credere in quello che si dice. Non capisco perchè .NET metta un bel tappeto rosso a chiunque voglia leggere i settings dal file app.config, ma poi attui la politica "lì ci puoi solo leggere", "l'utente non ha i permessi di scrittura su C:\Programmi\<nomeapp>", "non è il posto giusto", bla bla bla. Mi sembra un po' quello che ho scoperto lavorando con Click Once: pratico, veloce e comodo per applicazioni semplici e spot pubblicitari, ma - francamente - inaccettabile per applicazioni di un certo livello (primo fra tutti, mi sembra di averlo già detto, l'applicazione viene scaricata ed installata in una cache privata dedicata all'engine di Click Once , e non nella banale ed eterna C:\Programmi, poco controllo sul menù Start, etc.).

Come dire: guarda, io ti do un'automobile, lussuosa, bella e maneggevole, perchè ci puoi salire su una volta al giorno. Prendi questo bicchiere d'acqua, però ne puoi bere solo metà. Bello questo CD di Ligabue, però....occhio....puoi ascoltare solo 1/3 di ciascuna canzone. Certe cose proprio non lo capisco. Se mi devi limitare, non darmi lo strumento e basta. Non mettermi sotto il naso un bel app.config per poi elencarmi tutta una serie di controindicazioni che, per me, superano di gran lunga i vantaggi.

Comunque, chiudiamo le polemiche qui e vediamo di essere costruttivi.
Ho deciso di usare la seguente directory per mantenere dati e settaggi di HappySign:

C:\Documents and Settings\damiani\Application Data\HappySign

per salvare soltanto tre files: Signs.xml, Config.tmp e settings.config. Il primo contiene il dataset con firme & decorazioni. Il secondo è temporaneo e contiene alcuni valori per mantenere lo stato dell'applicazione da una sessione all'altra. Il terzo è quello di cui parlerò.
Questa directory è separata per ciascun utente, e qui dentro dovrei avere i permessi di scrittura: più bello di così non si può! La directory viene ritornata da una semplice chiamata:

string dir = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
dir += @"\HappySign";
MessageBox.Show(dir);

Notare il file settings.config. Questo file viene utilizzato con il Configuration Application Block dell'Enterprise Library per il FW1.1, sebbene HappySign sia interamente in FW2.0. Questa scelta è momentanea: dopo aver letto il post di Lorenzo di questa mattina, mi sono interessato e ho dato un'occhiata. La November CTP dell'Enterprise Library non contiene il Configuration Application Block, quindi mi sono dovuto arrangiare ad usare quello per il FW1.1, appunto.

Ho sistemato il codice, ho creato una classe che mi espone tutte le settings della mia applicazione, etc. etc. Ma anche qui ho trovato/sto trovando delle difficoltà. Tutte le QuickStart e tutti i tutorial che ho trovato in Rete dicono espressamente che per cominciare ad usare il CAB bisogna andare su Start-->Programs-->Microsoft patterns & practices.....in pratica, usare un tool per settare l'engine e dirgli dove si trova il file settings.config. Però non ho ben capito.....non conosco a priori il path del mio file config, perchè contiene lo username dell'utente corrente. Non posso certe dire agli utenti di HappySign di scaricarsi il tool dell'Enteprise Library per settare il path di un ipotetico file config.

Non ho ben capito come superare questo ostacolo. Durante il deploy, posso dire all'installer di posizionare settings.config esattamente nel percorso che voglio, però poi - ripeto - non so come configurare il CAB. Quest'ultimo, in particolare, non fa altro che lavorare - tra le altre cose - su app.config. Quindi dovrei cercare di distribuire un app.config che sia uguale per tutti. Mi sto chiedendo, ad esempio, se sia possibile impostare un path tipo:

C:\Documents and Settings\$USERNAME$\Application Data\HappySign

utilizzando una sorta di variabile d'ambiente che possa restituirmi dinamicamente lo username dell'utente. Insomma, sebbene adesso la logica che abbia messo in piedi mi piace di più, ho comunque diversi problemi che vedrò di risolvere.

Ho proprio paura che i tempi di consegna di HappySign ritarderanno un po'!!!

powered by IMHO 1.2

Print | posted on martedì 8 novembre 2005 19:43 |

Feedback

Gravatar

# Re: Configuration Application Block per HappySign

La "brutta notizia" è che nella versione di EntLib per il FW2.0 che uscirà in RTM a Dicembre, il CAB non ci sarà più. Verrà sostituito utilizzando il namespace System.Configuration presente nel FW2.0.

Oltretutto, almeno dalle mie prove sulla CTP di Novembre di EntLib 2, pare che non sia più possibile utilizzare file di configurazione esterna, bensi tutte le sezioni di configurazione (Data Access, Logging, Exception Handling, Caching, ecc) vengono inserite in App.config / Web.config.

Il problema con la CTP è che non c'è documentazione o se c'è è scarna, per cui mi sto facendo un bel lavoro (leggi c..o) a capire se è possibile cmq mantenere i file esterni.
09/11/2005 12:34 | Mauro Sagratella
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET