Share via


Capacidades de serviços e produtos da plataforma Microsoft

Olá pessoal, tudo certo?

Ao longo dessas semanas, tenho falado sobre orientação a serviços e alguns desafios reais que ocorrem nesse tipo de desenvolvimento e arquitetura. Quando pensamos em questões como autenticação, autorização, instrumentação, suporte a transação, tratamento de exceção, etc., vemos o quanto uma abordagem de serviços possui as mesmas necessidades de uma arquitetura de software baseada em componentes ou mesmo outros cenários de soluções. Ferramentas como a Enterprise Library 4.1 são tão importantes para SOA quanto para aplicações Web em ASP.NET tradicional, por exemplo.

Semana passada, aproveitei um post para citar algumas recomendações sobre o “chão-de-fábrica”. Hoje, gostaria de chamar a atenção para o mapa de produtos da plataforma Microsoft.

Pensando numa arquitetura de referência de serviços e algumas capacidades principais, temos o seguinte desenho:

image

Vemos acima os grupos de capacidades de Consumo de serviços, Composição e Interação, Composição e Transação e Exposição de Funcionalidades, onde destacamos as principais capacidades:

  • Serviços de Apresentação
  • Serviços de Colaboração
  • Serviços de Interação
  • Serviços de Processos
  • Serviços de Dados
  • Serviços de Conectividade 

Veja ainda uma série de capacidades de administração (ao lado), como gerenciamento, segurança, governança, BI, análises de negócio, etc. A partir do modelo acima, podemos posicionar nossos componentes de serviços de acordo com as necessidades de nosso negócio. Existem ainda outras questões associadas, como granularidade de serviços, análise de domínios envolvidos, templates para cada tipo de implementação, etc.

Usando esse mesmo mapa de serviços, gostaria de propor um mapa de produtos atuais da plataforma Microsoft, para atender cada camada acima:

image

Assim, teríamos (a grosso modo):

  • Camada de Apresentação: SharePoint Server, Siverlight, Office System, ASP.NET, Windows Client, Composite Application Guidance for WPF and Silverlight.
  • Camada de Colaboração: Office Communication Server, SharePoint Server.
  • Camada de Interação: SharePoint Server, WF
  • Camada de Processos: BizTalk Server, WF
  • Camada de Dados: BizTalk Server, SQL Server
  • Camada de Conectividade: BizTalk Server, WCF

Ao mesmo tempo, pacotes como System Center, MOF, Active Directory, ESB Guidance e soluções de terceiros oferecem recursos e ferramentas para as atividades de administração do ambiente.

Vemos que cada produto MS pode atender mais de uma camada ou conjunto de capacidades presentes numa visão de serviços. Ao mesmo tempo, quando pensamos em frameworks como WCF e WF, a implementação é por nossa conta, isto é, construímos os componentes de serviços (WCF) e workflow (WF) a partir de templates disponíveis no Visual Studio, conforme nossa necessidade de customização e desenvolvimento.

Usando pacotes completos como BizTalk Server e SharePoint Server, aproveitamos os recursos integrados oferecidos pelo ambiente, o que economiza dezenas de horas de desenvolvimento. Por exemplo, podemos implementar cenários de serviços customizados com WCF, que disponibilizam informações de notícias para uma certa empresa. Porém, se nossa solução exige a exportação dessas mensagens para uma série de ambientes diferentes, exigindo transformações de mensagens diversas, um motor baseado em BizTalk com seus recursos de mapeamento e transformação passa a ser interessante.

Em resumo, é importante conhecer as capacidades de cada produto, tecnologias e frameworks disponíveis no momento de decisão de cada camada de uma arquitetura de serviços. Podemos dizer que não existe um único produto ou tecnologia que atenda todos os cenários possíveis, de BPM a workflows, de serviços a web services. Cada cenário apresenta necessidades específicas que precisam ser identificadas e corretamente atendidas.

Por último, vale notar que o desenho acima é baseado apenas nas principais capacidades de cada produto. Existem cenários que podem aproveitar os produtos de diversas maneiras, compondo seus recursos e funcionalidades conforme a realidade de cada empresa.

Por enquanto é só! Até o próximo post :)

Waldemir.