Posso avere una sezione di App_Code che compila separatamente dal resto della cartella?

StackOverflow https://stackoverflow.com/questions/4798086

  •  24-10-2019
  •  | 
  •  

Domanda

Abbiamo un sito web con una quantità enorme di cache oggetti memorizzati nella variabili statiche all'interno App_Code. Ogni volta che ci spingiamo un cambio App_Code ai nostri server web di produzione ricicla IIS piscina e scarica la cache. Non svuotare la cache tuttavia quando spingiamo fuori modifiche aspx e file .aspx.cs.

ho bisogno di avere un gruppo di classi che verranno aggiornati più volte al giorno per essere in grado di essere riferimento in App_Code. Vorrei a una porzione del mio App_Code cui posso aggiornare più volte al giorno senza bicicletta IIS e vampate di calore la cache, o la capacità di classi di riferimento al di fuori di App_Code dall'interno App_Code.

C'è una soluzione che si adatta il mio problema?

È stato utile?

Soluzione

Gli aggiornamenti App_Code o / bin / riciclare sempre i tuoi pool di applicazioni in cui credo. Se stai dicendo che hai uno scenario di distribuzione in cui gli aggiornamenti dei file .aspx.cs non riciclare il vostro pool di applicazioni, e se siete in grado di fare riferimento al tipo di pagina in sé, forse è possibile spostare il codice nel aspx. cs file in modo evitare che il riciclaggio accada. Questo è può essere una brutta scelta però.

Un suggerimento è quello di rivedere il vostro disegno di ridurre il numero di aggiornamenti di codice sorgente che sono necessari su base giornaliera. Forse utilizzare XML o l'archiviazione di database, e progettare l'applicazione per essere un po 'più generico, e meno incline agli aggiornamenti binari.

O forse suddividere l'applicazione in diverse applicazioni virtuali più piccoli. Il livello di sforzo potrebbe essere più alto per fare questo, ma in questo caso, se l'applicazione è più compartimentato, non si dovrà riciclare l'intera applicazione con ogni distribuzione. Dovreste solo di riciclare i moduli che sono stati influenzati con la distribuzione.

Un altro suggerimento potrebbe essere quello di configurazione cluster architettura server. Pianificare le implementazioni da applicare a un nodo di cluster, mantenendo solo l'altro attiva mentre l'aggiornamento pianificato si verifica, e poi stendere aggiornamenti al secondo nodo volta l'aggiornamento primo nodo viene eseguita la piscina app riciclato.

Un altro suggerimento sarebbe quello di cambiare i tempi di implementazione di volte meno non di punta, se questo è fattibile.

Sono i frequenti aggiornamenti che accadono solo perché ci sono un sacco di sviluppo cambiamenti accadendo?

Altri suggerimenti

Un altro angolo sarebbe quella di utilizzare una soluzione cache distribuita anziché HttpRuntime cache.

HttpRuntime della cache presenta due inconvenienti principali:

1) E 'arrossato quando la vostra applicazione ricicla dominio. Questo è di default fatto ogni 29 ore in ogni caso, anche se non si modifica App_Code.

2) E 'localizzata a un singolo server web. Quindi, se le vostre esigenze di web server di scalare a una più grande web farm, la cache diventa sempre meno efficace, perché le voci di cache non sono sincronizzati tra tutti i server web.

soluzioni cache distribuita eludere questi problemi con la creazione di uno strato di cache separato tra il livello Web e l'origine dati back-end.

Soluzioni Esempio:

  • memcached
  • Redis
  • Oracle Coherence (commerciale)

Naturalmente, questo si tradurrà in un'architettura più complessa e richiederà più hardware o macchine virtuali.

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