none
Alguem saberia como criar um binding personalizado? RRS feed

  • 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 ?
    sábado, 25 de setembro de 2010 14:50

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
    quinta-feira, 30 de setembro de 2010 10:54
    Moderador

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
    sábado, 25 de setembro de 2010 16:02
  • 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
    segunda-feira, 27 de setembro de 2010 11:00
    Moderador
  •  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.

    terça-feira, 28 de setembro de 2010 13:35
  • 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
    terça-feira, 28 de setembro de 2010 23:58
    Moderador
  •  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.

    quarta-feira, 29 de setembro de 2010 11:48
  • Boas Pedro,

    Agora eu me confundi. Estamos falando de sessão ou de autenticação?
    http://www.israelaece.com
    quarta-feira, 29 de setembro de 2010 12:34
    Moderador
  •  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.

    quarta-feira, 29 de setembro de 2010 13:09
  • Boas Pedro,

    Mas o que você entende por "sessão"?
    http://www.israelaece.com
    quarta-feira, 29 de setembro de 2010 15:20
    Moderador
  •  Olá Israel.

     

     O que entendo que é um Contexto criado para representar uma instancia temporária que é fechada apenas quando hà inatividade ou é fechada manualmente pelo cliente.

    quarta-feira, 29 de setembro de 2010 21:21
  • 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
    quinta-feira, 30 de setembro de 2010 10:54
    Moderador
  •  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.

    quinta-feira, 30 de setembro de 2010 20:33