Opções de hospedagem de fluxo de trabalho
A maioria dos exemplos do Windows Workflow Foundation (WF) usa fluxos de trabalho hospedados em um aplicativo de console, mas esse não é um cenário realista para fluxos de trabalho do mundo real. Os fluxos de trabalho em aplicativos de negócios reais serão hospedados em processos persistentes - um serviço do Windows criado pelo desenvolvedor ou um aplicativo de servidor, como o IIS 7.0 ou o AppFabric. As diferenças entre estas abordagens são as seguintes.
Hospedando fluxos de trabalho no IIS com o Windows AppFabric
Usar o IIS com o AppFabric é o host preferencial para fluxos de trabalho. O aplicativo host para fluxos de trabalho usando o AppFabric é o Serviço de Ativação do Windows, que remove a dependência de HTTP somente sobre o IIS.
Hospedagem de fluxos de trabalho somente no IIS
O uso isolado do IIS 7.0 não é recomendado, pois há ferramentas de gerenciamento e monitoramento disponíveis com o AppFabric que facilitam a manutenção de aplicativos em execução. Os fluxos de trabalho só devem ser hospedados no IIS 7.0 se houver problemas de infraestrutura com a mudança para o AppFabric.
Aviso
O IIS 7.0 recicla pools de aplicativos periodicamente por vários motivos. Quando um pool de aplicativos é reciclado, o IIS para de aceitar mensagens para o pool antigo e instancia um novo pool de aplicativos para aceitar novas solicitações. Se um fluxo de trabalho continuar funcionando após o envio de uma resposta, o IIS 7.0 não estará ciente do trabalho que está sendo feito e poderá reciclar o pool de aplicativos de hospedagem. Se isso acontecer, o fluxo de trabalho será cancelado e os serviços de controle registrarão uma mensagem 1004 - WorkflowInstanceAborted com um campo Reason vazio.
Se a persistência for usada, o host deverá reiniciar explicitamente as instâncias abortadas a partir do último ponto de persistência.
Se o AppFabric for usado, o serviço de gerenciamento de fluxo de trabalho acabará retomando o fluxo de trabalho a partir do último ponto de persistência bem-sucedido se a persistência for usada. Se nenhuma persistência for usada e o fluxo de trabalho executar operações fora de um padrão de Solicitação/Resposta, os dados serão perdidos quando o fluxo de trabalho for abortado.
Hospedando um fluxo de trabalho em um serviço personalizado do Windows
Criar um serviço de fluxo de trabalho personalizado para hospedar o fluxo de trabalho exigirá que o desenvolvedor duplique muitas das funcionalidades fornecidas prontas para uso pelo AppFabric, mas permitirá mais flexibilidade com a funcionalidade personalizada. Essa opção só deve ser considerada se o AppFabric provar não ser uma opção.