У меня на работе есть система, которая по сути является конечным автоматом, управляемым сообщениями. Он принимает различные типы сообщений, ищет некоторый контекст/состояние на основе сообщения, а затем решает, что делать, на основе сообщения и текущего состояния. Обычно результатом является сообщение, отправленное из системы.
Существуют ли хорошие фреймворки с открытым исходным кодом для реализации конечного автомата в .NET? Я изучил последнюю версию Windows Workflow, и мне кажется, что это хороший вариант; однако у меня есть некоторые опасения по поводу механизмов сохранения по умолчанию (нам нужно сообщать данные о переходе состояния), тестируемости и того факта, что команда WF перестраивает структуру, пока мы говорим (предположительно).
Вместо WF я думаю попытаться реализовать старый простой шаблон GoF «State» и использовать Spring.NET для соединения всего вместе. Есть ли что-нибудь, что уже делает это или что-то подобное?