Pergunta

Estou construindo um site ASP.NET que irá coletar dados de um usuário e enviá-lo a um terceiro webservice festa. O webservice é pouco fiáveis ??e, por essa razão existe um serviço de backup.

Se uma chamada para o serviço primário falhar (timeout ou algum outro erro), então eu preciso para virar um pouco em uma classe estática que irá desarmar o sistema para usar o serviço secundário.

Neste ponto, eu preciso começar a votação o primeiro serviço (com dados fictícios) para ver se ele está de volta para cima (em que ponto I receberá um código de OK em troca). Neste ponto eu preciso virar a pouco para trás para que o site começa a usar o serviço primário novamente.

Eu tive uma leitura desta devo usar um serviço do Windows ou um segmento de segundo plano ASP.NET? e eu acho que separar o código em um serviço do Windows seria o método mais limpo de realizar a votação, mas então como é que eu comunicar com o appication web.

Um pensamento que eu tive é para expor um webservice que o serviço do Windows poderia usar para se comunicar dentro do webapp mas isso parece tanto confuso e over-matar.

Eu aprecio os seus pensamentos e experiências que executam tarefas semelhantes.

Graças

Foi útil?

Solução

Eu acho que o serviço do Windows é o caminho a percorrer, definitivamente.

Como para a comunicação entre o serviço e o seu web site, a melhor resposta depende do tamanho e escala de sua solução. Se você está construindo algo que precisa ser confiável, eu sugiro que você implementar algum tipo de fila entre o seu site ASP.NET e seu serviço do Windows. Você tem um monte de opções aqui também, dependendo do orçamento e capacidade: BizTalk, MSMQ, e as filas do SQL Server (SSIS). Alternativamente, se você está procurando algo menor escala, eu recomendo que você acabou de colocá-lo em um algum lugar da tabela de banco de dados.

Gostaria de evitar o uso de arquivos no sistema de arquivos, porque você vai encontrar problemas com bloqueios de arquivos e multithreading. Também gostaria de evitar diretamente comunicar com o serviço porque o risco de perder a fila na memória se o serviço falhar por qualquer motivo.

Editado para adicionar:

Se a confiabilidade não é uma preocupação aqui, você poderia usar um WPF chamados-pipes serviço hospedado para a comunicação entre o seu site e seu serviço do Windows. Isso evita grande parte das despesas gerais que participam normalmente no clássico Web Services e é surpreendentemente rápido. A única desvantagem é que a auto-hospedagem de um serviço de WPF é complicado e pode ser difícil de manter o serviço.

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