Come distribuire al meglio le impostazioni di configurazione specifiche del client

5

Sto scrivendo un'applicazione desktop WinForms che verrà inviata a diversi client e mi chiedo quale sia il modo migliore per implementare un file di configurazione utente. Normalmente userei il built-in Settings.settings o app.config per memorizzare le impostazioni dell'utente, ma in questo caso ciò che voglio memorizzare è univoco per ogni client, voglio che sia configurato prima di inviarlo e voglio evitare di ricompilare ogni tempo spediamo ad un nuovo cliente.

Quello che voglio che il mio file di configurazione sia archiviare alcune informazioni sulla grafica specifica del client usata nel programma e alcune password (con hash).

Non sospettiamo che gli utenti possano hackerare qualsiasi cosa nel programma; stiamo solo cercando di evitare che i normali utenti di livello "tecnologico" apportino modifiche o accedano a determinati moduli che un manager dovrebbe modificare. Fino ad ora la password è stata codificata e nel giro di pochi anni tutti hanno imparato a sapere di cosa si tratta. Vorremmo avere più controllo su quali password andare dove, ma non necessariamente dare ai client il controllo delle modifiche della password.

Ho scritto un programma separato che (de) serializza una classe di configurazione in un file XML che verrebbe inserita nella directory appropriata al momento dell'installazione, in modo che tutte le persone debbano fare (dopo che sono fuori dalla scena) avere il .msi del programma, creare un file di configurazione xml utilizzando questo programma separato, includere la grafica che desiderano in una sottocartella e comprimere tutto. Quindi quando l'utente decomprime e installa, tutto viene messo nel posto giusto. Quando il mio programma viene caricato, cerca il mio file di configurazione per completare il caricamento. Se non riesce a trovarlo, fornisce all'utente una modifica per individuarlo altrimenti il programma non si apre.

Ho letto la classe ConfigurationManager ma non riesco a capire come potrei usarla al meglio. Non ho trovato molto sulle persone che usano file di configurazione esterni e non sono sicuro che la mia situazione sia davvero unica o che non stia pensando abbastanza all'interno della scatola. È un buon design? Dovrei fare diversamente? Se hai avuto una situazione simile come hai risolto?

    
posta Brad 20.02.2013 - 03:04
fonte

1 risposta

3

Abbiamo avuto una situazione simile in cui lavoro e ho utilizzato praticamente la soluzione. Abbiamo spinto qualsiasi configurazione specifica del client in file di configurazione di json esterni e li abbiamo caricati all'avvio del programma. Quello che abbiamo fatto è stato assicurarsi che un installer installasse un set predefinito funzionante nel caso in cui i file di configurazione non fossero stati ancora installati sul sistema.

Non sono sicuro che la classe ConfigurationManager possa darti alcun vantaggio, dal momento che, in base alla mia esperienza, ti dà una bella idea di serializzare un file di configurazione. Json / Xml / Qualunque serializzazione è abbastanza nota e facile in questi giorni che dipende davvero dalla scelta personale.

L'unica aggiunta che ho pensato è quella di memorizzare i file di configurazione su un server web e recuperarli durante l'installazione o il primo avvio. È possibile specificare l'indirizzo durante l'installazione o ancora al primo avvio. In questo modo non devi fornire tutti i file con il programma di installazione e ti offre un modo centrale per amministrare le modifiche alla configurazione in futuro.

    
risposta data 20.02.2013 - 05:03
fonte

Leggi altre domande sui tag