none
Boa pratica em WCF RRS feed

  • Pergunta

  • Olá pessoal...

    Gostaria de saber qual é a melhor maneira de trabalhar com multiplos contratos, por exemplo:

    Code Snippet
    public class Servico : ICliente, IFornecedor, Imagine mais umas 100 interfaces aqui {  }


    No host seria assim

    Code Snippet
    using(ServiceHost host = new ServiceHost(typeof(Servico), baseAddresses))
    {
        host.AddServiceEndpoint(typeof(IClinte), new BasicHttpBinding(), "CLiente");
        host.AddServiceEndpoint(typeof(IFornecedor), new BasicHttpBinding(), "Fornecedor");
        host.AddServiceEndpoint(typeof(Aqui continuaria as outras 100 interfaces), new BasicHttpBinding(), "outras 100");

        host.Open();
        Console.ReadLine();
    }

    Isto esta correto e seria a melhor maneira de fazer um sistema distrubuido com varias classes e desta forma como ficaria o desempenho?

    Alexander
    quinta-feira, 2 de dezembro de 2010 11:26

Respostas

Todas as Respostas

  • Boas Alexander,

    Tecnicamente isso é possível, mas é importante dizer que você está agregando funcionalidades demais em um mesmo serviço. Além disso, o ServiceHost é responsável por gerenciar e manter o estado do serviço que ele expõe, e com isso, você pode ter contratos que necessitam de estado e outros que não precisam, e você não conseguirá diferenciar, já que o ServiceBehavior é aplicado em nível serviço e não de contrato.

    Você pode sim ter mais do que um contrato implementado na mesma classe (serviço), mas desde que eles façam sentido estarem juntos, e você cria endpoints expondo cada uma das funcionalidades, ou podendo até usar herança de interface aqui para agregar funcionalidades em um mesmo contrato/endpoint.

    Como referência, faça uma pesquisa sobre granularidade de serviços, que poderá te ajudar a clarear e te dar novas ideias: http://www.israelaece.com/post/Granularidade-de-Servicos.aspx
    http://www.israelaece.com
    quinta-feira, 2 de dezembro de 2010 11:36
    Moderador
  • Israel...

    Primeiro obrigado pela resposta rápita, estou estudando seus videos (muito bom) pre ver se aprendo mais.

    Aproveitando a oportunidade me tira outra dúvida(na verdade é a mesma), tenho um sistema multicamada (BLL, DAL, DTO e UI) quero migrar este sistema para WCF,

    a dúvida é : Qual é a melhor maneira de fazer esta migração levando em conta as várias classes que tenho como ficaria o host, o que vc aconselha?


    Alexander
    quinta-feira, 2 de dezembro de 2010 11:48
  • Boas Alexander,

    Há diversas opções para trabalhar com o WCF. O que eu geralmente aconselho é olhar o App Arch Guide, que mostra detalhadamente como implementar cada uma, seus benefícios e as tecnologias envolvidas: http://apparchguide.codeplex.com/
    http://www.israelaece.com
    • Marcado como Resposta Alexander Leão sábado, 4 de dezembro de 2010 12:02
    sexta-feira, 3 de dezembro de 2010 10:07
    Moderador