Pergunta

Tenho procurado maneiras de implementar mensagens semelhantes às do Gmail em um navegador e cheguei ao Cometa conceito.No entanto, não consegui encontrar uma boa implementação do .NET que me permita fazer isso no IIS (nosso aplicativo está escrito em ASP.NET 2.0).

As soluções que encontrei (ou nas quais pude pensar) exigem deixar um thread em execução por usuário - para que ele possa retornar uma resposta assim que ele receber uma mensagem.Isso não é escalonável, é claro.

Então, minha pergunta é: você conhece alguma implementação ASP.NET para Comet que funcione de maneira diferente?Isso é possível com o IIS?

Foi útil?

Solução

O Comet é um desafio para escalar com o IIS devido à conectividade persistente do Comet, mas há uma equipe que está analisando os cenários do Comet agora.Veja também Blog de Aaron Lerch pois acredito que ele fez alguns trabalhos iniciais do Comet no ASP.NET.

Outras dicas

WebSync é um servidor Comet escalonável em conformidade com os padrões que se integra diretamente ao pipeline IIS/.NET.Também está disponível sob demanda como um serviço hospedado.

Ele suporta oficialmente até 20.000 conexões de clientes simultâneas por nó de servidor, mas testes individuais chegaram a 50.000.A taxa de transferência de mensagens é ideal em torno da marca de 1.000 a 5.000 clientes simultâneos, com mensagens entregues até 300.000 por segundo a partir de um único nó.

Inclui suporte do lado do cliente para JavaScript, .NET/Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime e .NET Compact, com suporte do lado do servidor para .NET/Mono e PHP.

O clustering tem suporte usando SQL Server ou Azure Caching pronto para uso, mas provedores personalizados podem ser gravados para praticamente qualquer coisa (Redis, NCache).

Isenção de responsabilidade: Trabalho para a empresa que desenvolve este produto.

Recentemente escrevi um exemplo simples de um servidor de chat de pesquisa longa usando controladores assíncronos MVC 3 baseados em um ótimo artigo de Clay Lenhart

Você pode usar o exemplo em uma implantação AppHarbor Configurei com base na fonte do projeto BitBucket.

Além disso, mais informações disponíveis em meu postagem no blog explicando o projeto.

Na verdade, existem muitas opções para criar um site compatível com Ajax com ASP.NET, mas honestamente, PokeIn é a maneira mais fácil de criar um aplicativo da web com suporte para Comet Ajax.Salvou um dos projetos da minha empresa.

Você também pode olhar para o Gateway Empresarial Kaazing que lançou um lançamento de produção de seu gateway webSocket [HTML5], que substitui completamente o caminho do cometa e permite conexões full-duplex entre navegadores e servidores de aplicativos.

Você também pode olhar para Demonstrações de Light Streamer

Certa vez, usei um site de bate-papo há muito tempo que utilizava um servidor de streaming http personalizado.Na verdade, reproduzi esse software por pura curiosidade e é bastante fácil de fazer, eu acho.Eu nunca tentaria implementar um tipo semelhante de "solicitação infinita" no IIS, especialmente no ASP.NET, porque as solicitações prendem um thread do pool de threads (ou thread IO, se manipuladores assíncronos forem usados) indefinidamente, o que significa que você só pode lidar com tanto por servidor quanto a configuração do pool de threads permitir.

Se eu tivesse uma forte necessidade legítima de tal funcionalidade, honestamente escreveria um servidor http personalizado para ela.

Sei que isso realmente não responde à sua pergunta, mas achei que a contribuição poderia ser relevante.

O grupo WS-I publicou algo chamado "Perfil seguro confiável" que tem um peixe de vidro e Implementação .NET que aparentemente interoperar bem.

Com alguma sorte há um JavaScript implementação lá fora também.

Há também uma implementação do Silverlight que usa Duplex HTTP. Você pode conectar javascript ao Silverlight objeto para obter retornos de chamada quando ocorre um push.

Há também versões comerciais pagas também.

Acho que a abordagem Comet não é realmente escalável, a menos que você esteja preparado para expandir o web farm horizontalmente (adicionando mais servidores web ao mix).A maneira como funciona é deixar uma conexão TCP aberta por sessão do usuário, apenas para que o servidor possa enviar coisas para essa conexão de tempos em tempos para informar imediatamente o usuário sobre uma alteração ou atividade.

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