Избыточность, надежность и отказоустойчивость в C # - где искать примеры? - PullRequest
4 голосов
/ 09 декабря 2008

Я хочу узнать, как создать действительно надежных приложений в .net - отказоустойчивых и способных противостоять непредвиденным ситуациям. Где я могу найти литературу / руководство по этому вопросу? Пока мне не очень везет.

Ответы [ 3 ]

4 голосов
/ 09 декабря 2008

Я знаю как минимум пару ресурсов. Во-первых, на MSDN есть очень полезная статья под названием Обеспечение работоспособности вашего кода с помощью функций обеспечения надежности .NET Framework .

.

У Криса Брумма также было сообщение о хостинге , когда разрабатывались функции обеспечения надежности. Это может предоставить некоторую полезную справочную информацию

Поисковые термины, которые могут оказаться полезными, включают «Высокая доступность», «CER» и «Области ограниченного выполнения».

Удачи! Действительно доступный код довольно сложный материал. :)

0 голосов
/ 30 сентября 2014

Лично я нашел статью Стивена Тауба лучшим источником информации об ограниченных областях выполнения: Использование функций надежности .NET Framework . И, наконец, CER - это хлеб любого масла для отказоустойчивого кода, так что эта статья содержит почти все, что вам нужно знать, объяснено в ясной и краткой форме.

При этом вы можете предпочесть более радикальный дизайн, в котором вы немедленно прибегаете к уничтожению домена приложения (или зависите от этого шаблона при размещении CLR). Например, вы можете взглянуть на шаблон переборки (и, возможно, реактивный манифест , если вы заинтересованы в этом шаблоне и сталкиваетесь со сложными потоками данных).

При этом подход "пусть это не удастся" может иметь неприятные последствия, если вы не можете полностью восстановиться после этого, как продемонстрировал Ариан V .

0 голосов
/ 09 декабря 2008

Если вы смотрите с точки зрения реализации программного обеспечения, то, возможно, стоит взглянуть на Проектирование по контракту (DbC)

Согласно этому источнику , преимущества Design by Contract включают следующее:

  • Лучшее понимание объектно-ориентированного метода и, в более общем смысле, конструирования программного обеспечения.
  • Системный подход к созданию безошибочных объектно-ориентированных систем.
  • Эффективная структура для отладки, тестирования и, в более широком смысле, для обеспечения качества.
  • Метод документирования программных компонентов.
  • Лучшее понимание и контроль механизма наследования.
  • Техника для работы с ненормальными случаями, приводящая к безопасной и эффективной языковой конструкции для обработки исключений.

Кроме того, я бы посоветовал изучить Test Driven Development (TDD) подход, который должен помочь создать более надежную конструкцию.

...