Ridondanza, affidabilità e tolleranza ai guasti in C #: dove cercare esempi?
-
20-08-2019 - |
Domanda
Voglio imparare a creare veramente applicazioni robuste in .net - quelle che tollerano i guasti e sono in grado di resistere a situazioni impreviste. Dove posso trovare letteratura / indicazioni su questo argomento? Finora non ho molta fortuna.
Soluzione
Sono a conoscenza di almeno un paio di risorse. Innanzitutto, c'è un articolo molto utile su MSDN intitolato Mantieni il tuo codice in esecuzione con le funzionalità di affidabilità di .NET Framework .
Chris Brumme ha anche pubblicato un post sull'hosting quando sono state progettate le caratteristiche di affidabilità. Questo può fornire utili informazioni di base
I termini di ricerca che potresti trovare utili includono " Alta disponibilità " & Quot; quot CER &; e " Regioni di esecuzione vincolate " ;.
Buona fortuna! Il codice veramente disponibile è roba piuttosto complicata. :)
Altri suggerimenti
Se stai osservando dal punto di vista dell'implementazione del software, potrebbe valere la pena esaminare Design by Contract ( DBC)
Secondo questa fonte , i vantaggi di Design by Contract includono il seguente:
- Una migliore comprensione del metodo orientato agli oggetti e, più in generale, della costruzione del software.
- Un approccio sistematico alla costruzione di sistemi orientati agli oggetti senza errori.
- Un framework efficace per il debug, i test e, più in generale, la garanzia della qualità.
- Un metodo per documentare i componenti software.
- Migliore comprensione e controllo del meccanismo di ereditarietà.
- Una tecnica per affrontare casi anomali, che porta a un costrutto linguistico sicuro ed efficace per la gestione delle eccezioni.
Inoltre, raccomanderei di esaminare un Test Driven Development (TDD) approccio, che dovrebbe aiutare a scacciare un design più robusto.
Personalmente ho trovato l'articolo di Stephen Toub come la migliore fonte per quanto riguarda le regioni di esecuzione vincolata: Uso delle funzionalità di affidabilità di .NET Framework . E alla fine CER sono il pane e il burro di qualsiasi codice tollerante ai guasti, quindi questo articolo contiene praticamente tutto ciò che devi sapere, spiegato in modo chiaro e conciso.
Detto questo, potresti scegliere di preferire un design più radicale in cui ricorrere immediatamente alla distruzione del dominio dell'applicazione (o dipendere da questo modello quando il CLR è ospitato). Ad esempio, potresti guardare lo schema delle paratie (e forse il manifesto reattivo se sei interessato a questo schema e fronteggiare flussi di dati complessi).
Detto questo, il " lascia che fallisca " l'approccio può ritorcersi contro se non è possibile recuperare completamente dopo quello, come dimostrato da Ariane V .