Pergunta

Nós temos um sistema no meu trabalho que é basicamente uma máquina de estado orientado por mensagem. Leva em uma variedade de tipos de mensagens, olha para cima algum contexto / estado com base na mensagem, em seguida, decide o que fazer, com base na mensagem e o estado atual. Normalmente, o resultado é uma mensagem a ser enviada para fora do sistema.

Existem bons open-source quadros para implementar uma máquina de estado em .NET? Eu olhei para a última versão do Windows Workflow, e parece que seria uma boa opção; No entanto, tenho algumas preocupações sobre o padrão persistência mecanismos (precisamos relatar fora os dados de transição de estado), a capacidade de teste, eo fato de que a equipe WF é re-arquitetar o quadro como nós falamos (supostamente).

Em vez de WF, eu estou pensando em tentar implementar um GoF padrão plain-old "Estado", e usando Spring.NET a fio tudo juntos. Existe alguma coisa lá fora que já faz isso, ou algo semelhante?

Foi útil?

Solução

Dependendo de suas necessidades exatas que você pode encontrar o State Machine Compiler é suficiente para implementar o "Estado" GoF padronizar. Ele pode gerar C #, bem como pontos que pode ser transformado em vários formatos de imagem usando Graphviz . Eu usei-o em um projeto anterior e achei suficiente para gerar uma máquina de estado 'simples'. Eu espero que isso ajude.

Outras dicas

Dê uma olhada nState

https://github.com/benaston/NState

https://nuget.org/packages/NState/ .

Disclaimer: Eu mantê-lo

.

Dois grandes máquinas de estado para .NET

  • Stateless - Criar máquinas de estado e fluxos de trabalho baseados em máquinas de estado leve diretamente no código .NET
  • Automatonymous - Uma biblioteca de máquina de estado para .Net - permite escrever máquinas de estado estilo fluente

Eu mantenho um projeto de código aberto que implementa (entre outras coisas) uma máquina de estado finito genérico para .NET. Ele é construído em cima QuickGraph , para que você obtenha muitos algoritmos gráfico de análise de graça. Consulte desta página para obter mais informações.

Você pode considerar a estado norte-Quadro em C # . Embora não seja open source, é relativamente barato para licenciar. É a única estrutura que eu conheço que permite a reutilização através da composição máquina de estado e herança. Em outras palavras, você pode herdar de uma máquina de estado base com apenas algumas linhas de código, e adicione estados, transições, ações, etc. Você também pode tomar uma classe de máquina de estado existente e "ligue-o a" outra máquina de estado. Você não vai acreditar como é muito mais fácil de implementar e trabalhar com máquinas de estado usando este quadro, em relação ao GOF ou outros padrões.

Tenha um olhar em StateBuilderDotNet , um gerador de código de máquina de estado que transforma uma descrição XML de uma máquina de estado em um versão estendida do padrão de estado C #. Ele suporta todos os semântica UML: máquina de estado pode ser hierárquica, concorrente e assíncrona. A ferramenta gráfica também está disponível para criar máquinas de estado.

Disclaimer: Eu sou o autor destes software

.

Eu criei staty que é uma inteligente state-máquina para .NET. Escrito como biblioteca de classe C # portátil (PCL), staty vem como um estado-máquina orientada a eventos expressivo com recursos como

  • anuência à segurança
  • externos e INTERAL eventos
  • classes separadas por estado
  • ações de entrada e saída e
  • a fluente sintaxe para configurar o estado da máquina.

É gratuito, de código aberto, disponível no NuGet e baseado em idéias por State Machine C ++ de David Lafreniere, que é o mais famoso state-máquina em C ++.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top