Usuário com melhor resposta
Alguem saberia como criar um binding personalizado?

Pergunta
-
Olá pessoa. Estou com um problema. Preciso de criar uma aplicação que é acessada por dispositivos moveis, sendo assim atualmente no WCF só serviço por chamada. Eu gostaria de saber se alguém tem alguma ideia de como eu consigo criar um canal de comunicação personalizado que minha própria framework gerencie a sessão ou algum tipo de adaptação pro WCF gerenciar uma sessão de dispositivos móveis ?
Respostas
-
Boas Pedro,
Ok. Como sabemos que não há suporte para sessão, então você não conseguirá manter isso na memória do serviço. Como conversamos acima, você precisa armazenar isso em algum lugar, como por exemplo, um banco de dados.
Se você exigir autenticação dos seus clientes, então você conseguirá saber quem é o usuário qu está acessado a operação e, consequentemente, poderá extrair os seus respectivos dados antes de dispará-la.
http://www.israelaece.com- Marcado como Resposta Pedro Henrique Macedo de Souza quinta-feira, 30 de setembro de 2010 20:34
Todas as Respostas
-
Segue alguns links de referência:
http://msdn.microsoft.com/en-us/library/ms731751.aspx
http://msdn.microsoft.com/en-us/magazine/cc163302.aspx
http://msdn.microsoft.com/en-us/library/aa347793.aspx
http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/1073/
http://blogs.msdn.com/b/kaevans/archive/2008/01/24/wcf-and-custom-bindings.aspx
Bruno Ferreira de Souza
Analista Desenvolvedor .NET
MCP - Windows Form -
Boas Pedro,
Até onde sei, não é possível manter sessões quando você opera com clientes móveis. Os bindings que podem ser utilizados com eles são apenas aqueles que suportam a comunicação simples HTTP, e nada além disso. Isso também obriga o seu serviço ser PerCall.
Uma alternativa seria você armazenar o estado fora do serviço, como uma base de dados, mas isso obrigará a você gerenciar uma informação contextual para conseguir recuperar o respectivo estado daquela requisição/usuário.
http://www.israelaece.com -
Olá Israel, muito obrigado pela resposta.
Eu estava pensando em fazer isso mesmo, mas me deparei, com o problema de que não tenho como identificar uma sessão por que quando a chamada termina toda a classe é destruída, eu estava pensando em fazer era um controle de credenciais por certificação para controle de usuarios, agora aparaceu uma dúvida de não sei se você vai poder me ajudar: Tem alguma maneira do próprio servidor criar uma certificação? Se sim poderia me dar um caminho com alguma dica?
desde já agradeço.
-
Boas Pedro,
O que você quer dizer com "certificação"?
Uma das alternativas quando o serviço não mantém estado, é incluir na requisição um identificador do usuário, para que dentro da operação, você consiga extrair os dados do respectivo usuário.
http://www.israelaece.com -
Olá Israel.
É o seguinte. Seria um certificado digital, aí o usuario seria limitado a ultilizar ou apenas aquele dispositivo ou mover o certificado pro dispositivo que estiver usando, mas no caso o servidor precisaria de criar essa certificação a partir do número de licenças que o servidor permitir. Eu precsiso que meu servidor tenha um controle de usuarios por acesso, como o serviço é por chamada a classe é deletada no final da chamada, então não posso controlar os acessos por instancias. Outra coisa que estava pensando também é criar um arquivo xml no servidor, que armazenaria toda a instancia do cliente, e nesse xml gravar um guid pra quando ele acessar restaurar a instancia, mas não sei se daria certo.
-
Boas Pedro,
Agora eu me confundi. Estamos falando de sessão ou de autenticação?
http://www.israelaece.com -
Olá Israel.
Me desculpa pela confusão, é que as vezes fico empolgado e misturo tudo. Na verdade é que estou tentando arranjar um jeito de ter um controle de sessão e de acessos ao servidor, pois o serviço vai ser cobrado por acessos simultâneo, e o que eu gostaria é de algum conselho ou um caminho a tomar para isso.
-
-
-
Boas Pedro,
Ok. Como sabemos que não há suporte para sessão, então você não conseguirá manter isso na memória do serviço. Como conversamos acima, você precisa armazenar isso em algum lugar, como por exemplo, um banco de dados.
Se você exigir autenticação dos seus clientes, então você conseguirá saber quem é o usuário qu está acessado a operação e, consequentemente, poderá extrair os seus respectivos dados antes de dispará-la.
http://www.israelaece.com- Marcado como Resposta Pedro Henrique Macedo de Souza quinta-feira, 30 de setembro de 2010 20:34
-
Olá Israel.
Essa discussão foi esclarecedora, valeu mesmo pelas respostas. Acho que vou arranjar um jeito de armazenar essa informação em um XML a partir do pacote "System.Reflection" nomeando os XMLs com um GUID que o usuário irá gerar quando acessarem pela primeira vez.
Valeu pessoal.