C# の冗長性、信頼性、耐障害性 - 例はどこにありますか?
-
20-08-2019 - |
質問
作り方を知りたい 本当に .net の堅牢なアプリケーション - 耐障害性があり、予期せぬ状況に耐えることができるアプリケーション。このテーマに関する文献やガイダンスはどこで入手できますか?今のところ、あまり運が良くありません。
解決
私は、少なくともカップルのリソースを認識してんです。まず、信頼性機能を実行しているコードを維持題しMSDN上の非常に有用な製品があります.NET Frameworkのでのます。
クリスBrummeもホスティング上のポストを持っていた。信頼性機能が設計されていました。これは、いくつかの有用な背景情報を提供することができます。
あなたが役に立つかもしれません。検索用語は、「高可用性」「CER」と「制約付き実行領域」を含んでます。
幸運!本当に利用可能なコードはかなりトリッキーなものです。 :)
他のヒント
ソフトウェア実装の観点から検討している場合は、検討する価値があるかもしれません。 契約による設計 (DbC)
によると このソース, 、契約による設計には次のような利点があります。
- オブジェクト指向の手法、より一般的にはソフトウェア構築についての理解を深める。
- バグのないオブジェクト指向システムを構築するための体系的なアプローチ。
- デバッグ、テスト、そしてより一般的には品質保証のための効果的なフレームワーク。
- ソフトウェアコンポーネントを文書化する方法。
- 継承メカニズムの理解と制御が向上しました。
- 異常なケースに対処するための手法。例外処理のための安全で効果的な言語構造につながります。
さらに、次のことを検討することをお勧めします。 テスト駆動開発 (TDD) これは、より堅牢な設計を実現するのに役立つはずです。
個人的には、Stephen Toub の記事が制約付き実行領域に関する最良の情報源だと思いました。 .NET Framework の信頼性機能の使用. 。そして最終的には、CER がフォールト トレラント コードの基礎となるため、この記事には、知っておくべきことのほぼすべてが含まれており、明確かつ簡潔に説明されています。
そうは言っても、アプリケーション ドメインをすぐに破棄する (または CLR がホストされている場合はこのパターンに依存する) という、より急進的な設計を選択することもできます。たとえば、バルクヘッド パターンを見てみましょう (おそらく 事後対応マニフェスト このパターンに興味があり、複雑なデータ フローに直面している場合)。
そうは言っても、「失敗させる」というアプローチは、その後完全に回復できない場合には逆効果になる可能性があります。 アリアン V によって実証されました.