
Θέλω να μάθω πώς να δημιουργήσετε **πραγματικά** ισχυρές εφαρμογές στο .net - αυτά που είναι ανεκτικό σφαλμάτων και είναι σε θέση να αντέξουν απροσδόκητες καταστάσεις. Πού μπορώ να βρω βιβλιογραφία / καθοδήγηση για το θέμα αυτό; Μέχρι στιγμής, δεν έχω πολλή τύχη.

 
Πλεονάζον Προσωπικό, την αξιοπιστία και την ανοχή σε σφάλματα σε C # - πού να ψάξουν για παράδειγμα;
====================================================================================================



Γνωρίζω τουλάχιστον ένα ζευγάρι πόρων. Πρώτον, υπάρχει ένα πολύ χρήσιμο άρθρο στο MSDN με τίτλο [Κρατήστε κώδικα σας να λειτουργεί με την αξιοπιστία χαρακτηριστικά του .NET Framework](http://msdn.microsoft.com/en-us/magazine/cc163716.aspx) .


Ο Chris Brumme είχε επίσης μια [θέση για τη φιλοξενία](http://blogs.msdn.com/cbrumme/archive/2004/02/21/77595.aspx) , όταν τα χαρακτηριστικά της αξιοπιστίας είχαν σχεδιαστεί. Αυτό μπορεί να δώσει μερικές χρήσιμες πληροφορίες υποβάθρου


Οι όροι αναζήτησης που μπορείτε να βρείτε χρήσιμες περιλαμβάνουν «High Availability» «CER» και «Περιορισμένη Περιφερειών Εκτέλεση».


Καλή τύχη! Πραγματικά διαθέσιμα κώδικας είναι πολύ δύσκολο τα πράγματα. :)

 

Προσωπικά βρήκα το άρθρο Stephen Toub να είναι η καλύτερη πηγή για περιορισμένες περιοχές εκτέλεσης: [Χρησιμοποιώντας τις Αξιοπιστία χαρακτηριστικά του .NET Framework](http://msdn.microsoft.com/en-us/magazine/cc163716.aspx#S2) . Και στο τέλος CER είναι το ψωμί και το βούτυρο της κάθε ανεκτική βλαβών έτσι αυτό το άρθρο περιέχει σχεδόν όλα όσα πρέπει να γνωρίζετε, εξήγησε κατά τρόπο σαφή και συνοπτικό τρόπο.


Τούτου λεχθέντος θα μπορούσε παρά να επιλέξει να ευνοεί μια πιο ριζοσπαστική σχεδίαση, όπου μπορείτε αμέσως να καταφύγει στην καταστροφή της περιοχής εφαρμογής (ή εξαρτώνται από αυτό το μοτίβο, όταν η CLR φιλοξενείται). Θα μπορούσαμε να εξετάσουμε το μοτίβο διαφράγματος, για παράδειγμα (και ίσως την [αντιδραστική μανιφέστο](http://www.reactivemanifesto.org/) , αν σας ενδιαφέρει σε αυτό το μοτίβο και να αντιμετωπίζουν πολύπλοκες ροές δεδομένων).


Τούτου λεχθέντος, το «αφήστε το να αποτύχει» προσέγγιση μπορεί να αποτύχει αν δεν μπορείτε να εντελώς ανακτήσει μετά από αυτό, όπως [αποδεικνύεται από Ariane V](https://www.ima.umn.edu/~arnold/disasters/ariane5rep.html) .

 

Αν ψάχνετε από τη σκοπιά της εφαρμογής λογισμικού, τότε μπορεί να αξίζει να εξετάσουμε [Design by σύμβαση (DBC)](http://en.wikipedia.org/wiki/Design_by_contract)


Σύμφωνα με [την πηγή αυτή](http://archive.eiffel.com/doc/manuals/technology/contract/) , τα οφέλη του σχεδιασμού με σύμβαση περιλαμβάνει τα ακόλουθα:


* Η καλύτερη κατανόηση της μεθόδου object-oriented και, γενικότερα, της κατασκευής λογισμικού.
* Μια συστηματική προσέγγιση για την οικοδόμηση των συστημάτων bug-free object-oriented.
* Ένα αποτελεσματικό πλαίσιο για τον εντοπισμό σφαλμάτων, δοκιμών και, γενικότερα, τη διασφάλιση της ποιότητας.
* Μια μέθοδος για την τεκμηρίωση στοιχείων λογισμικού.
* Η καλύτερη κατανόηση και τον έλεγχο του μηχανισμού κληρονομιάς.
* Μια τεχνική για την αντιμετώπιση μη φυσιολογικών περιπτώσεων, που οδηγεί σε μια ασφαλή και αποτελεσματική κατασκευή γλώσσα για το χειρισμό εξαίρεση.


Επιπλέον, θα ήθελα να προτείνω αναζητούν σε ένα [Driven Test Ανάπτυξης (TDD)](http://en.wikipedia.org/wiki/Test-driven_development) προσέγγιση, η οποία θα πρέπει να βοηθήσει το αυτοκίνητο μια πιο στιβαρή κατασκευή.

 