WCF, Silverlight:A solicitação/resposta é possível em PollingDuplexHttpBinding?
-
23-09-2019 - |
Pergunta
Nós temos usado PollingDuplexHttpBinding
por algum tempo para fazer Pub/Sub
Mensagens.Temos métodos que não retornam resultados que permitem aos clientes assinar algum feed de dados e então o serviço envia os dados de volta via CallBack
contratos.
Agora mesmo estamos adicionando alguns Request/Reply
métodos para o nosso OperationContract
.Como os clientes são Silverlight 3 esses métodos são chamados usando o async Begin() End()
padrão.O problema é que não podemos fazer isso funcionar usando PollingDuplexHttpBinding
.Sempre obtemos o seguinte erro (quando o HTTP da pilha do cliente é usado):
O servidor não forneceu uma resposta significativa;isso pode ser causado por uma incompatibilidade de contrato, um encerramento prematuro da sessão ou um erro interno do servidor.
Com a pilha do navegador, obtemos HTTP 500: Not Found.
Ao mudar para BasicHttpBinding
o Request/Reply
métodos são chamados completamente bem, mas obviamente Pub/Sub
métodos não podem ser usados com esta ligação.
Poderíamos usar dois pontos de extremidade separados para cada tipo de mensagem, mas preferiríamos não usar e me parece estranho que uma ligação suportasse apenas o Pub/Sub
padrão (mesmo que esta seja a motivação para PollingDuplexHttpBinding
).
Alguém poderia esclarecer isso para mim?É possível?
Solução
Nunca fizemos isso funcionar.Usamos BasicHttpBinding para todas as nossas operações de solicitação/resposta entre nossos aplicativos Silverlight 4 e nossos serviços WCF 4.Todas essas são chamadas de método assíncrono (devem ser com Silverlight) para serviços por chamada.Para algumas situações em que devemos fazer push de servidor, temos um serviço Sessionful WCF mantendo uma conexão PollingDuplexHttpBinding com o cliente Silverlight e usamos contratos de retorno de chamada com métodos unidirecionais para fazer chamadas.
Nunca foi possível fazer com que as operações de solicitação/resposta funcionassem com PollingDuplexHttpBinding, mas também nunca encontrei uma autoridade no assunto ...