Pergunta

Recentemente eu estive trabalhando em um aplicativo WCF e precisa de algumas funcionalidades para comprimir o corpo da mensagem sabão, para que o tamanho da resposta do serviço deve ser reduzida.

Depois de alguma pesquisa, descobri uma implementação disponível online a partir http://weblogs.asp.net/cibrax/archive/2006/03/29/WS_2D00_Compression-for-WCF.aspx'> http://weblogs.asp.net/cibrax/archive/2006/03 /29/WS_2D00_Compression-for-WCF.aspx , os autores que criou um novo elemento de ligação 'CompressionBindingElement', associado com seus canais de classes relacionadas.

Esta solução de compressão funciona perfeitamente em meu aplicativo WCF, eo tamanho da resposta foi reduzido quase 90%, ótimo! I ensaiado primeiro-lo sobre http ligação (meio costume ligação usando http transporte) e tudo parece bom.

Uma vez eu tentei via de ligação (ligação personalizada usando transporte TCP) net.tcp, o aplicativo ainda funcionou bem. No entanto, quando eu verifiquei por algumas ferramentas de rastreamento, eu encontrei algo estranho.

Eu fiz um teste de unidade chamando 10 vezes em um método, que criou o cliente por ChannelFactory e adicionado explicitamente todos os elementos de ligação, incluindo o elemento de ligação de compressão. Quando eu em primeiro lugar verificada a resposta em tcptrace, fiquei surpreso ao ver que todas essas 10 mensagens são combinadas em uma única solicitação.

Então, eu tentei SvcTraceViewer para verificar o pedido, e descobriram que a conexão de soquete mantém aberta até que o serviço foi desligado. Olhei dentro do progresso de processamento e acredita todas as mensagens, canais estão fechados para cada solicitação, mas a conexão simplesmente não fechou.

A questão só aconteceu em tcp rede de ligação com um elemento de ligação de compressão, se o elemento não foi adicionado à ligação ou em http tudo vinculativo parece bem.

Alguém já tentou essa solução e visto o mesmo problema antes? É outra coisa lá qualquer coisa que eu possa fazer para forçar a conexão para perto? Poderia eu perdi alguma coisa?

Muito obrigado, Tony

Foi útil?

Solução

Parece que a Microsoft agora tem um artigo oficial sobre Compression Encoder: http://msdn.microsoft.com/en- us / library / ms751458 (v = VS.90) .aspx

Eu testei-o e parece que o problema é ido. Não é assim tão fácil de fazer minha corrida de teste de unidade depois de muitos dias:)

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