Избыточность, надежность и отказоустойчивость в C# — где искать примеры?
-
20-08-2019 - |
Вопрос
Я хочу научиться создавать действительно надежные приложения в .net — отказоустойчивые и способные противостоять непредвиденным ситуациям.Где я могу найти литературу/руководства по этому вопросу?Пока мне не очень везет.
Решение
Я знаю как минимум пару ресурсов.Во-первых, на MSDN есть очень полезная статья под названием Поддерживайте работоспособность своего кода с помощью функций обеспечения надежности .NET Framework.
У Криса Брамма также был пост на хостинге когда разрабатывались функции надежности.Это может предоставить некоторую полезную справочную информацию.
Условия поиска, которые могут оказаться вам полезными, включают «Высокая доступность», «CER» и «Области с ограниченным выполнением».
Удачи!По-настоящему доступный код — довольно сложная штука.:)
Другие советы
Если вы смотрите с точки зрения реализации программного обеспечения, возможно, стоит изучить Проектирование по контракту (DbC)
В соответствии с этот источник, Преимущества проектирования по контракту включают следующее:
- Лучшее понимание объектно-ориентированного метода и, в более общем смысле, построения программного обеспечения.
- Системный подход к построению безошибочных объектно-ориентированных систем.
- Эффективная среда для отладки, тестирования и, в более общем плане, обеспечения качества.
- Метод документирования компонентов программного обеспечения.
- Лучшее понимание и контроль механизма наследования.
- Методика работы с аномальными случаями, ведущая к созданию безопасной и эффективной языковой конструкции для обработки исключений.
Кроме того, я бы рекомендовал изучить Разработка через тестирование (TDD) подход, который должен помочь создать более надежную конструкцию.
Лично я нашел статью Стивена Тауба лучшим источником информации об областях с ограниченным выполнением: Использование функций обеспечения надежности .NET Framework.И, в конце концов, CER — это хлеб с маслом любого отказоустойчивого кода, поэтому эта статья содержит практически все, что вам нужно знать, объясненное ясно и кратко.
При этом вы могли бы предпочесть более радикальный дизайн, при котором вы немедленно прибегаете к уничтожению домена приложения (или зависите от этого шаблона при размещении CLR).Вы можете посмотреть, например, на рисунок переборки (и, возможно, на реактивный манифест если вас интересует этот шаблон и вы сталкиваетесь со сложными потоками данных).
При этом подход «пусть потерпит неудачу» может иметь неприятные последствия, если вы не сможете полностью восстановиться после этого, поскольку продемонстрировано Арианой V.