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.