it-swarm.com.ru

Включает ли C # конечные автоматы?

Недавно я прочитал о библиотеке boost::statechart (конечные автоматы), и мне понравилась эта концепция. 

Есть ли в C # похожий механизм? Или это может быть реализовано с использованием определенного шаблона проектирования?

27
Maciek

Да, в C # есть блоки итераторов которые являются конечными автоматами, генерируемыми компилятором. 

Если вы хотите реализовать свой собственный конечный автомат, вы можете создавать собственные реализации интерфейсов IEnumerable<T> и IEnumerator<T>.

Оба эти подхода подчеркивают реализацию платформы .NET шаблона итератор .

0
Andrew Hare

.NET 4 Update 1 теперь поддерживает его в следующем классе: System.Activities.Statements.StateMachine

Вот учебник о том, как его использовать . Вот руки в лаборатории .

18
Alex

Workflow Foundation (.NET 3.0) имеет рабочий процесс конечного автомата. В настоящее время 4.0 не имеет точно такой же вещи, но вы определенно можете создать рабочий процесс конечного автомата, используя 4.0. 

8
Will

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

См. эту страницу для получения дополнительной информации о проекте и, в частности, " Jolt.Automata: конечные автоматы " для получения дополнительной информации о функции.

6
Steve Guidi

Проверьте без гражданства -> http://code.google.com/p/stateless/ . Это легкая альтернатива более тяжелому WWF.

Вот пара статей автора инструмента:

Конечные автоматы в доменных моделях

Параметризованные триггеры и входящие состояния в лицах без гражданства

6
J.D.

Вещи, которые приближаются к FSM, - это рабочие процессы в .NET 3.5, однако, рабочие процессы также не совсем FSM.

Сила использования FSM заключается в том, что вы можете создавать их явно в своем коде, имея меньше шансов на создание ошибок. Кроме того, конечно, некоторые системы по своей природе являются ФШМ, поэтому их кодирование более естественно.

2
Henri

Windows Workflow Foundation (WF), который является частью библиотеки базовых классов в 3.0 и 3.5, включает в себя дизайн рабочего процесса конечного автомата для управления конечными автоматами для ваших приложений.

Они полностью переписали рабочий процесс для предстоящего выпуска 4.0, а новые WF 4.0 классы изначально не поддерживают конечные автоматы, но все классы 3.0/3.5 все еще полностью поддерживаются в 4.0.

1
Bytemaster