Domanda

Mi occuperò (si spera) di un progetto di grandi dimensioni per migrare un'applicazione Visual FoxPro aziendale a C# 3.0 su .NET 3.5.So che questa applicazione ha un numero enorme di impostazioni che hanno un impatto su tutto, dalle configurazioni multiutente/multisito alle proprietà dei report.Esistono almeno 150 impostazioni diverse attualmente con ambito globale.

Le impostazioni sono attualmente memorizzate solo come bit nel database dell'applicazione, il che impedisce che vengano modificate a livello utente, poiché tutte le istanze condividono lo stesso database.

La mia domanda è: conosci un modo per gestire l'archiviazione di queste impostazioni che consenta di modificarle per utente, senza sacrificare le prestazioni?Dovrebbe inoltre essere archiviato in modo da consentire la modifica dei valori mentre l'applicazione è in esecuzione.Tutte le idee sarebbero apprezzate.

È stato utile?

Soluzione

Il file Settings.Settings standard, credo che vi offre questa funzionalità, compresa l'applicazione o utente con ambito variabili. Anche se non sono sicuro al 100% se i cambiamenti vengono prelevati senza dover riavviare l'applicazione.

Vedi qui per maggiori informazioni: MSDN: Uso delle impostazioni in C #

Altri suggerimenti

Se vuoi diventare "enterprise", puoi provare ad avere una tabella delle definizioni delle impostazioni, abbinata a una tabella delle impostazioni utente.

Le definizioni delle impostazioni avrebbero la PK definita da una colonna di dominio (per le impostazioni dell'interfaccia utente, le impostazioni di connessione, le impostazioni della lingua e così via...) e un identificatore di impostazione.Una terza colonna definirebbe il valore predefinito/globale.

Le impostazioni utente avrebbero la PK impostata sulla PK delle definizioni di impostazione + ID utente e una colonna del valore di impostazione, varchar(x).

Se l'applicazione riconosce la lingua, è necessario aggiungere le colonne ID lingua a entrambe le tabelle.

Salvare le modifiche dell'utente nella tabella delle impostazioni utente dovrebbe essere banale.Ricevere una notifica quando cambiano le impostazioni globali è un po' più complicato.

MODIFICARE:una cosa da tenere a mente è ricorrere sempre a qualche impostazione predefinita:impostazione globale/lingua predefinita.

Aggiungere un campo utente alla tabella nel database dell'applicazione che memorizza le impostazioni, e quindi aggiungere l'utente corrente come parametro per tutte le lettura / scrittura chiamate a questa tabella.

Potrebbe essere necessario lavorare attraverso logicamente per gli elementi che sono i dati / applicazioni specifiche vs utente specifico. In VFP (foxpro), le tabelle e le loro rispettive chiavi primarie sono ovviamente la stessa, indipendentemente dall'utente. Altre cose, come ad esempio i valori di default possono essere personalizzabile per ogni singolo utente, account, l'accesso, capacità di aggiungere / modificare / cancellare, ecc.

HTH

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top