Pergunta

Eu estou tentando descobrir os internos da Windows Workflow Foundation. Então, nós temos alguns componentes de software e entrelaçam-los na forma de um fluxo de trabalho seja um fluxo de trabalho seqüencial condição com base ou um fluxo de trabalho de máquina de estado. Agora, eu estou pensando (posso estar errado aqui) que does not o mesmo se aplica a IoC + Dependency Injection (via Unity ou Spring.net). Quando usar o que ?? Am I sequer pensar direito ??

Foi útil?

Solução

Não é bem certo que eu entendo a pergunta, mas vou dar-lhe uma tentativa de qualquer maneira.

WF não usa um recipiente COI. Ele usa o padrão ServiceLocator onde você adicionar dependências para o tempo de execução do fluxo de trabalho, o localizador de serviços, e fluxo de trabalho atividades e recuperar estes serviços a partir do tempo de execução do fluxo de trabalho.

A ServiceLocator e COI padrão são semelhantes e têm a mesma finalidade na dissociação dependências. O apporach é diferente embora em um recipiente COI empurrando dependências em enquanto um ServiceLocator é utilizado para puxar para fora dependências.

Espero que isso responde a sua pergunta e se não gostaria de tentar e reformular a pergunta original.

Outras dicas

Eu estava a braços com a forma de usar componentes fornecidos e servidos por meu recipiente do COI de fluxos de trabalho, também. Como os outros estados resposta, fluxo de trabalho casos deseja usar serviço de localizador para serviços de puxar a partir do tempo de execução em vez de ter as dependências injetado.

Uma maneira fácil de preencher a lacuna é tomar as dependências fora do seu recipiente COI no momento você estiver configurando o tempo de execução WF, e depois usar AddService colocá-los em tempo de execução. Seus fluxos de trabalho pode substituir OnActivityExecutionContextLoad, e usar o método GetService sobre o prestador de serviços para a pesca-los de volta para fora do tempo de execução e plop-los em [NonSerialized] propriedades públicas sobre o fluxo de trabalho. Você, então, ter acesso aos serviços de atividades de código, etc.

Você também pode ser capaz de sonda até um serviço de tempo de execução que injeta dependências quando as instâncias de fluxo de trabalho são activiated.

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