Arquitetura de Soluções

por Waldemir Cambiucci

Cenários de implementação de serviços com WCF – Parte 1 : Aspectos de SOA

Olá pessoal, tudo certo?


Vamos dar um tempinho no assunto ADO.NET Entity Framework e voltar para o mundo WCF – Windows Communication Foundation, pode ser?


Recentemente, em conversas com um time de arquitetos, voltamos a falar sobre os vários desafios na construção de arquiteturas orientadas para serviços. E como era de se esperar, WCF apareceu com destaque na reunião, considerando a plataforma Microsoft 🙂


De fato, o WCF foi construído com os aspectos de SOA (Service Oriented Architecture) em mente. Vamos citar alguns:



  • O design e a implementação de serviços são naturalmente desacoplados da lógica de negócios da aplicação. Essa característica é que permite a migração das aplicações atuais para um modelo de serviços;

  • Serviços expõem funcionalidades para clientes remotos através de contratos explícitos de serviços e de dados;

  • Serviços são executados de forma autônoma, não havendo impacto entre serviços quando da ocorrência de uma falha, ou seja, o isolamento é uma condição obrigatória entre serviços, assim como as fronteiras de segurança;

  • Serviços podem ser distribuídos através de diferentes protocolos, o que atende uma série de cenários presentes no ambiente corporativo. A interoperabilidade é uma exigência;

  • Serviços são agnósticos ao transporte, ou seja, podem ser expostos diretamente na web, via intranet, ou usado como um backend no enterprise;

Para exemplificar um serviço WCF e seus principais elementos, temos o desenho a seguir:


image


Resumindo, serviços são orientados a mensagens, possuem contratos de serviços e de dados, são multi-protocolos e multi-hosts, com aspectos de segurança, isolamento, políticas, monitoração, comportamentos, etc. Todos esses aspectos são atendidos pelo modelo de programação do WCF.


Ainda, através do ABC do WCF (onde Endpoint = Addess + Binding + Contract) é possível uma grande flexibilidade na implantação e configuração de serviços em diversos ambientes de TI. Por exemplo, a tabela abaixo mostra a série de Bindings disponíveis para a configuração de nosso Endpoint. Cada combinação com diferentes propriedades para a comunicação entre clientes e serviços:


image


De fato, nem só de serviços vive uma arquitetura SOA. Precisamos pensar em questões de consumo, composição, orquestração, workflows, interação com o legado, etc. Nesse ponto, surge a necessidade de uma arquitetura de referência, que oriente nossa visão e a posição de cada componente nessa organização de infra-estrutura.


Porém, quando vamos para a implementação de projeto SOA de fato, descobrimos que para nosso mundo de serviços existem diversos cenários possíveis. Cada cenário possui aspectos de configuração e deployment com impacto direto na performance, no versionamento, na administração e na governança do ambiente de produção.


Uma primeira lista de cenários comuns para a implementação de serviços é dada abaixo:


image


Com certeza, pelo menos 1 dos cenários acima é uma realidade em sua empresa.


Por isso, vamos começar uma nova série aqui no blog: o desafio para os próximos posts será detalhar cada cenário acima, discutindo as diversas configurações e características principais envolvidas. Nosso template de estudo será:



  • Tipo de hosting utilizado

  • Protocolo de transporte

  • Protocolo de mensagens

  • Mecanismo de Autenticação

  • Mecanismo de Autorização

  • Garantia de Confiabilidade

  • Proteção no Transporte ou Segurança;

Enquanto avançamos pelos cenários, teremos a oportunidade de entender um pouco mais do modelo de arquitetura WCF. Muito trabalho pela frente, mas será divertido. Fiquem ligados!


Por enquanto é só! Até o próximo post 🙂


Waldemir.