ASP.NET come gestire le impostazioni dell'applicazione esterna

2

Sto convertendo un'applicazione da C # WebForms in MVC.

L'applicazione ottiene le impostazioni da una posizione centralizzata utilizzando i servizi Web. Queste sono le impostazioni che normalmente si trovano in un Web.Config, ma il desiderio dell'azienda è di memorizzare questi valori in una posizione centralizzata per tutte le app.

Attualmente, ogni volta che richiedi l'impostazione di un'applicazione, controlla HttpContext.Cache per vedere se hai già recuperato le impostazioni. In caso contrario, effettua la chiamata al servizio web e memorizza le impostazioni (oltre 100 oggetti che sono essenzialmente chiave / valori) in HttpContext.Cache. Quindi la chiamata per ottenere le impostazioni dell'applicazione si verifica solo una volta.

Dovrei cercare un altro modo per farlo? Stavo pensando che le impostazioni dovrebbero essere solo una chiamata di servizio REST in cui si passa la chiave e si ottiene un valore (il servizio corrente è un * .ashx che in realtà non è l'ideale per la gestione delle eccezioni tra altri motivi). Ma ovviamente questo comporterebbe più richieste web. Cosa è considerata una buona pratica qui? Il metodo attuale è valido e dovrei lasciare il codice che funziona allo stesso modo nell'app MVC?

    
posta Ryan Langton 17.09.2014 - 16:29
fonte

1 risposta

1

L'approccio attuale sembra ragionevole. È fondamentalmente pigro caricare le impostazioni alla prima chiamata ed è "grosso" - rimandare tutte le impostazioni contemporaneamente. Il tuo approccio proposto è più preciso ma è "chiacchierone": potrebbero essere necessarie più chiamate per ottenere ciò che desideri. Le due domande che vorrei porre sono:

  • La versione "pesante" occupa troppa memoria?
    Supponendo che sia necessaria solo una piccola percentuale di tutti gli oggetti di configurazione. Potresti salvare una quantità significativa di memoria (che dipende dalla tua piattaforma) non caricando tutto? La quantità di memoria influirà sulle prestazioni o sulla stabilità dell'app / host?
  • La versione "chatty" causa troppa latenza?
    È possibile che tu debba dover effettuare 15 chiamate al servizio di configurazione per gestire la prima richiesta? Che tipo di tempo di attesa causerà l'utente?

In base all'esperienza, sceglierei probabilmente la comunicazione complessa, soprattutto perché è già stata scritta.

Se hai la possibilità di cambiarlo, prendi in considerazione una richiesta precisa ma complessa in cui richiedi tutte le impostazioni utilizzate dalla tua applicazione contemporaneamente. Questo ti darebbe il meglio di entrambi i mondi. Tuttavia, è meglio che ne valga la pena, poiché sarà comunque necessario mantenere un elenco delle chiavi di impostazione richieste nella propria applicazione. Non c'è niente di così irritante come spendere un po 'il debug del codice solo per rendersi conto di aver dimenticato di aggiungere la chiave di impostazione all'elenco delle richieste. Se il codice tenta di accedere a una chiave mancante, assicurati di fornire un messaggio di errore chiaro!

    
risposta data 05.10.2015 - 23:45
fonte

Leggi altre domande sui tag