Подтвердить что ты не робот

State Machine Framework для .NET.

В моей работе есть система, которая в основном представляет собой конечный автомат, управляемый сообщениями. Он принимает различные типы сообщений, просматривает какой-то контекст/состояние на основе сообщения, а затем решает, что делать, на основе сообщения и текущего состояния. Обычно результатом является сообщение, отправленное из системы.

Есть ли хорошие рамки с открытым исходным кодом для реализации конечного автомата в .NET? Я рассмотрел последнюю версию Windows Workflow, и похоже, что это будет хороший вариант; однако у меня есть некоторые проблемы с механизмами сохранения по умолчанию (мы должны сообщать данные о состоянии перехода), тестируемостью и тем фактом, что команда WF перестраивает структуру, когда мы говорим (предположительно).

Вместо WF я подумываю о попытке реализовать простой шаблон "State" GoF и использовать Spring.NET для подключения всего вместе. Есть ли что-то, что уже делает это, или что-то подобное?

4b9b3361

Ответ 1

В зависимости от ваших точных требований вы можете найти State Machine Compiler, достаточный для реализации шаблона State State. Он может генерировать С#, а также точку, которая может быть преобразована в несколько форматов изображений, используя Graphviz. Я использовал его в предыдущем проекте и счел его достаточным для создания "простого" конечного автомата. Надеюсь, это поможет.

Ответ 3

Две большие машины состояний для .NET.

  • Stateless - Создавать государственные машины и облегченные рабочие процессы на основе машинного процесса непосредственно в коде .NET.
  • Automatonymous - Библиотека конечных автоматов для .Net - позволяет писать свободно управляемые машины стиля

Ответ 4

Я поддерживаю проект с открытым исходным кодом, который реализует (помимо прочего) общий конечный конечный автомат для .NET. Он построен поверх QuickGraph, поэтому вы получаете множество алгоритмов графического анализа бесплатно. Подробнее см. эту страницу.

Ответ 5

Посмотрите StateBuilderDotNet, генератор кода конечного автомата, который преобразует XML-описание конечного автомата в расширенную версию состояния С# шаблон. Он поддерживает всю семантику UML: конечный автомат может быть иерархическим, параллельным и асинхронным. Графический инструмент также доступен для создания государственных машин.

Отказ от ответственности: я являюсь автором этого программного обеспечения.

Ответ 6

Вы можете рассмотреть North State Framework в С#. Хотя он не является открытым исходным кодом, относительно недорого лицензировать. Это единственная структура, которую я знаю о том, что позволяет повторно использовать состав и наследование штата. Другими словами, вы можете наследовать с базового компьютера состояний только с несколькими строками кода и добавлять состояния, переходы, действия и т.д. Вы также можете взять существующий класс состояния машины и "подключить его к другому государственному компьютеру". Вы не поверите, насколько проще реализовать и работать с государственными машинами, используя эту структуру, относительно GOF или других шаблонов.

Ответ 7

Я создал Staty, который является интеллектуальным государственным компьютером для .NET. Написанная как переносная библиотека классов С# (PCL), Staty является выразительной управляемой событиями машиной состояния с такими функциями, как

  • Совпадение-безопасность
  • внешние и промежуточные события
  • отдельные классы для каждого состояния
  • действия входа и выхода и
  • свободный синтаксис для настройки состояния машины.

Бесплатно, с открытым исходным кодом, доступно на NuGet и на основе идей David Lafreniere С++ State Machine, который является самой известной государственной машиной на С++.