none
Abrir o channelfactory várias vezes pode causar problemas? RRS feed

  • Pergunta

  • Olá pessoal,

    hoje ao invés de criar um proxy para cada tela, eu crio por ação. Quando o usuário clicar no botão "Salvar", abro o proxy, executo e fecho o proxy.
    Quando o usuário clicar no excluir, abro novamente um proxy (no caso outra instância, certo? dei um New novamente) executo o Delete e fecho o proxy.
    Gostaria de saber se isso pode me causar problemas. Performance, erros, qualquer coisa.
    Gostaria de saber qual a melhor prática ou o que vocês aconselham (por experiência de vida). Utiliza um proxy apenas (quando der um new do formulário, dar um new no proxy e guardar a variável e ficar utilizando esta instância) ou do jeito que faço, ou tanto faz.

    Obrigado
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)
    domingo, 20 de dezembro de 2009 02:56

Respostas

Todas as Respostas

  • segunda-feira, 21 de dezembro de 2009 09:40
    Moderador
  • Israel,

    lendo seu post entendi que se utilizarmos a criação de tudo de forma automática ele consegue guardar em um cache os utilizados mais recentemente e acaba não precisando criar.
    Quando executamos manualmente, esse "cache" não existe pois estariamos "manipulando" ele, certo?

    Se ao abrir um form eu inicializo um channelfactory visando um determinado endpoint, e só fechar quando fechar o formulário eu estaria mantendo um Cache, é isso?
    Se eu abrir por ação, além de não manter esse cache ainda perderia performance pois abrir e fechar, pelo que entendi, executa algumas ações custosas que podem influenciar na minha performance.

    Assim, precisaria mudar minha forma de fazer, para abrir ao inicializar o form e fechar ao fechar o form.

    Seria isso que entendi mesmo?

    att
    Leandro
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)
    segunda-feira, 21 de dezembro de 2009 10:58
  • Boas Leandro,

    Sim, o WCF já mantém o cache quando você utiliza o proxy que é gerado. Mesmo que você feche o proxy, o WCF mantém o cache dessa factory, reutilizando-a mais tarde para acessar o serviço.
    http://www.israelaece.com
    segunda-feira, 21 de dezembro de 2009 12:49
    Moderador
  • Israel, me confundi um pouco: "o WCF já mantém o cache quando você utiliza o proxy que é gerado", você esta se referindo somente ao gerado automaticamente pelo web references certo?
    O gerado pelo ChannelFactory de forma manual ele não faz isso, ou faz também?

    Se fizer tb, não existe necessidade de eu alterar a forma que trabalho hoje, tendo em vista q ele gerencia sozinho pra mim.

    att
    Leandro

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)
    segunda-feira, 21 de dezembro de 2009 13:05
  • Boas Leandro,

    Sim, o cache é mantido somente quando você está utilizando o proxy que é gerado pela referencia ao serviço.

    Se você estiver utilizando o ChannelFactory diretamente, então é você que deve criar e gerenciar o cache.
    http://www.israelaece.com
    terça-feira, 22 de dezembro de 2009 10:54
    Moderador