it-swarm-pt.tech

Implementação de cometas para o ASP.NET?

Eu estive procurando maneiras de implementar mensagens do tipo Gmail dentro de um navegador e cheguei ao conceito Cometa . No entanto, não consegui encontrar uma boa implementação do .NET que me permita fazer isso dentro de IIS (nosso aplicativo está escrito no ASP.NET 2.0)).

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

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

102
Doron Yaacoby

É difícil escalar o cometa IIS devido à conectividade persistente do cometa, mas há uma equipe que está analisando os cenários do cometa agora.) Veja também blog de Aaron Lerch como eu acredito que ele seja fez alguns trabalhos iniciais do Comet no ASP.NET.

44
Scott Hanselman

WebSync é um servidor Comet escalável compatível com os padrões que se integra diretamente ao pipeline do 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ó do servidor, mas testes individuais viram chegar 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 armazenamento em cluster é suportado usando o SQL Server ou o Cache do Azure pronto para uso, mas os provedores personalizados podem ser gravados para praticamente qualquer coisa (Redis, NCache).

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

33
Anton

Recentemente, escrevi um exemplo simples de um servidor de bate-papo longo usando controladores assíncronos MVC 3 com base em ótimo artigo de Clay Lenhart

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

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

15
Jacob

Na verdade, existem muitas opções para criar um site compatível com ajax com o ASP.NET, mas honestamente, PokeIn é a maneira mais fácil de criar um aplicação web suportada pelo cometa ajax. Ele salvou um dos projetos da minha empresa.

4
BigbangO

Você também pode olhar para o Kaazing Enterprise Gateway , que lançou uma versão de produção do 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 Light Streamer Demos

3
Vikram

O grupo WS-I publicou algo chamado "Perfil Seguro Confiável" que possui um Glass Fish e implementação. NET que aparentemente interopera bem.

Com alguma sorte, há uma implementação Javascript por aí também.

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

Também existem versões pagas comerciais também.

1
goodguys_activate

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

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

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

1
Chris

Eu 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 à mistura). O modo como funciona é que ele deixa uma conexão TCP aberta por sessão do usuário, apenas para que o servidor possa inserir coisas nessa conexão de tempos em tempos para informar imediatamente o usuário sobre uma alteração ou atividade.

0
cruizer