Pergunta

Cenário:. Um serviço de WCF recebe um XDocument de clientes, processa e insere uma linha em uma tabela MS SQL

Vários clientes poderia estar chamando o serviço WCF simultaneamente. A chamada normalmente não leva muito tempo (alguns segundos).

Agora eu preciso algo para consultar a tabela de SQL e executar um outro conjunto de processos de forma assíncrona. O segundo processo não tem de callback nada nem está relacionado com o WCF de qualquer forma. Ele só precisa ler a tabela e realizar uma série de métodos e talvez uma chamada de serviço Web (se há registros de curso), mas isso é tudo. Os clientes do serviço WCF que consomem o serviço acima mencionado não tem idéia do presente e não se preocupam com isso.

Eu li sobre esta pergunta em StackOverflow e sei também que um serviço do Windows seria o ideal, mas este serviço WCF será hospedado em uma hospedagem compartilhada (discountasp ou similar) e, portanto, a instalação de um serviço do Windows não será uma opção (como Pelo que sei).

Tendo em conta que a arquitetura é fixo (IE: Eu não pode alterar a tabela, se trata de um formato de legado, nem alterar o mecanismo do Serviço WCF)?, Qual seria sua sugestão para poll / processar esta tabela

Eu diria que eu preciso dele para verificar a cada 10 minutos ou assim. Ele não precisa ser imediata.

Graças.

Foi útil?

Solução

Fraude. Exponha este processo como outro serviço WCF e disparar um comando de movimento de uma caixa sob o seu controle em um horário agendado.

Enquanto você pode disparar até tópicos de fundo em WCF, ou expiração de cache uso como programador de um homem pobre aqueles irá parar quando seus recicla piscina aplicativo até o próximo hit no seu web site e o pool de aplicativo gira para cima novamente. Pelo menos disparar o pedido de uma máquina que você controle significa que você sabe a piscina aplicativo irá voltar-se a cada 10 minutos ou assim, porque você já enviou um pedido em sua direção.

Outras dicas

A aplicação web não é adequado a todos para estar executando algo em um intervalo fixo. Se não houver pedidos que chegam, não há código em execução na aplicação, e se o aplicativo estiver inativo por um tempo, o IIS pode decidir desligá-lo completamente até a próxima solicitação chega.

Para algumas aplicações, não é de todo importante que algo é executado em um intervalo específico, só que ele foi executado recentemente. Se for esse o caso para a sua aplicação, em seguida, você poderia simplesmente manter o controle de quando a tabela foi passada entrevistados, e para cada cheque pedido se passou tempo suficiente para a tabela para ser interrogado novamente.

Se você tem acesso para administrar o banco de dados, há um programador em SQL Server. Ele pode executar consultas, procedimentos armazenados, e até mesmo iniciar processos se você tem permissão (que é muito improvável em uma hospedagem compartilhada, embora).

Se você precisar o código em um intervalo específico, e você não pode acessar o servidor para programá-lo ou executá-lo como um serviço, ou não pode usar o agendador SQL Server, simplesmente não é factível.

Faça você pool de aplicativos "sempre ativo" e fazer o que quiser com os seus tópicos.

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