none
Pegar uma referencia da Classe de Serviço do WCF RRS feed

  • Pergunta

  • Deixa eu explicar:

    Na minha classe de negocio eu preciso ler um atributo da classe de serviço do wcf, como eu faço para obter uma referencia da instancia da classe que representa o meu serviço no WCF?

    quarta-feira, 12 de maio de 2010 14:13

Respostas

  • Boas Marcio,

    Apesar de ser tecnicamente possível, eu não acho que seja um bom design, mesmo porque a classe que representa o serviço, provavelmente é criada e mantida pelo próprio runtime do WCF.

    Se você define a classe do serviço como sendo Single, ou seja, que haverá uma única instância para atender a todas as requisições, então você poderia fazer qualquer coisa do tipo:

    public class ServiceWrapper
    {
        public static ServicoDeClientes ServiceInstance = new ServicoDeClientes();

        public void Open()
        {
            ServiceHost h =
                   new ServiceHost(ServiceInstance, new Uri[] { new Uri("net.tcp://localhost:9292") });
            h.Open();
        }
    }

    E depois, quando precisar acessar a classe do serviço:

    Console.WriteLine(ServiceWrapper.ServiceInstance.AlgumaPropriedade);


    http://www.israelaece.com
    quinta-feira, 13 de maio de 2010 16:32
    Moderador

Todas as Respostas

  • Boas Marcio,

    A forma mais coerente, é passar isso como parâmetro para o seu componente de regra de negócio.
    http://www.israelaece.com
    quarta-feira, 12 de maio de 2010 15:25
    Moderador
  • Não tenho como passar parametros, por que a classe que precisa dela, é instanciada por um evento do nhibernate. Então é nesta classe que eu preciso ler alguns atributos da instancia do serviço.
    quarta-feira, 12 de maio de 2010 19:18
  • Boas Marcio,

    Apesar de ser tecnicamente possível, eu não acho que seja um bom design, mesmo porque a classe que representa o serviço, provavelmente é criada e mantida pelo próprio runtime do WCF.

    Se você define a classe do serviço como sendo Single, ou seja, que haverá uma única instância para atender a todas as requisições, então você poderia fazer qualquer coisa do tipo:

    public class ServiceWrapper
    {
        public static ServicoDeClientes ServiceInstance = new ServicoDeClientes();

        public void Open()
        {
            ServiceHost h =
                   new ServiceHost(ServiceInstance, new Uri[] { new Uri("net.tcp://localhost:9292") });
            h.Open();
        }
    }

    E depois, quando precisar acessar a classe do serviço:

    Console.WriteLine(ServiceWrapper.ServiceInstance.AlgumaPropriedade);


    http://www.israelaece.com
    quinta-feira, 13 de maio de 2010 16:32
    Moderador