Renato Groffe - MTAC
Setembro/2015
 Mais de 15 anos de experiência na área de Tecnologia
 Pós-graduação em Engenharia de Software – ênfase em
SOA
 MBA em Business Intelligence
 Graduação em Sistemas de Informação
 Técnico em Processamento de Dados
 MTAC (Microsoft Technical Audience Contributor), MCP,
Microsoft Specialist, MCTS, OCA, ITIL, COBIT
 Página no Facebook
https://www.facebook.com/RenatoGroffeSW
 Perfil no Facebook
https://www.facebook.com/renatogroff
 Canal .NET
https://www.facebook.com/canaldotnet
 LinkedIn
http://br.linkedin.com/in/renatogroffe
 Integração entre sistemas – uma visão geral
 Arquitetura Orientada a Serviços (SOA)
 REST
 Microservices
 Serviços na plataforma .NET
 Referências
 Comunicação por meio de arquivos
 Web Services (Serviços)
 Uma das primeiras formas de integração
 Ainda em uso atualmente, normalmente na
transferência de grandes lotes de informações
 Comum em aplicações criadas para mainframe e
soluções de BI (Business Intelligence)
 Texto ou outro formatos (principalmente .csv,
.xls/.xlsx)
 Comunicação em tempo real
 Transações online (e-commerce, movimentações
bancárias)
 Protocolo HTTP/HTTPS
 Uso do formato XML, através do procotolo SOAP
Fonte:
http://www-01.ibm.com/support/knowledgecenter/SSKM8N_8.0.0/com.ibm.etools.mft.doc/ac55780_.htm
 Abordagem também conhecida como Arquitetura Orientada a Serviços
Pessoas Processos
 Alinhamento das estratégicas de negócio com
a TI
 Uso de Web Services na integração entre
sistemas
 Engloba diretrizes, padrões e boas práticas
para a implementação de serviços
 Unidade básica para a implementação de serviços em conformidade com esta
arquitetura
 Um componente de software com capacidades, as quais são implementadas
sob a forma de operações (métodos)
 As capacidades podem ser vistas como funcionalidades das quais um ou
mais sistemas dependem
 Notações para a representação de serviços (segundo Thomas Erl):
 Reusabilidade
 Interoperabilidade (entre diferentes plataformas)
 Uma maior organização dos processos de
negócio (graças à ênfase na análise e modelagem
dos mesmos)
 Reduções no tempo e custo de implementação de
novos projetos
 Necessidade de uma equipe capacitada e familiarizada
com conceitos de SOA
 Mudanças drásticas em um serviço podem produzir efeitos
colaterais em outra aplicações
 Segurança na transmissão de informações
 Análise criteriosa quanto à necessidade de implementação
de um serviço (potencial de reuso, questões de
infraestrutura)
 Entity Services → utilizados em operações de CRUD (inclusão,
exclusão, alteração e / ou consulta a informações)
 Utility Services → funcionalidades que não estejam diretamente
relacionadas ao negócio (log, envio de e-mail, etc.)
 Task Services → automação de processos de negócio, com o
consumo de Entity e/ou Utility Services
 Orchestrated Task Services → lógica de orquestração,
controlando o fluxo em composições que envolvam Entity, Utility
e Task Services
 Contrato padronizado
◦ Uso de XML
◦ Web Services Description Language (WSDL) → descrição da interface de um serviço
◦ XML Schema Definition Language (XSD) → definições detalhando a estrutura dos
objetos manipulados por um serviço
◦ Geração de proxies para consumir um serviço
 Acoplamento
◦ Menor, graças à separação de funcionalidades em serviços
 Abstração
◦ Ideia de “caixa-preta”
◦ Ocultação de detalhes técnicos (infraestrutura, banco de dados, controle de acesso,
etc.)
 Reusabilidade
◦ Pesar questões como reuso imediato ou futuro
 Autonomia
◦ Independência de influências externas
◦ Tende a diminuir com a composição de serviços
 Independência de Estado
◦ Serviços stateless
◦ Evitar ao máximo o armazenamento de informações em memória
 Visibilidade
◦ Capacidade se descobrir e interpretar a estrutura exposta por um serviço
◦ Emprega padrões como:
 UDDI (Universal Description, Discovery and Integration)
 WS-MetadataExchange → especificação para a geração de documentos XML
com a estrutura de um serviço
 Capacidade de Composição
◦ Princípio diretamente relacionado à questão do reuso
◦ Composição primitiva
 Capacidade de Composição
◦ Composição complexa
◦ Composição complexa
 Modelo arquitetural proposto por Roy Fielding
em 2000, estando baseado no conceito de
recurso e no uso de requisições HTTP
 Recurso → elemento (conjunto de dados) do qual
uma aplicação dependente, normalmente
representando um item de negócio
 RESTful Web Services → serviços seguindo esta
arquitetura
 Uso de métodos HTTP de forma explícita
◦ POST → criação de um novo recurso
◦ GET → consulta para obtenção de um ou mais recursos
◦ PUT → alteração do conteúdo ou estado de um recurso
◦ DELETE → remoção/exclusão de um recurso
 Exposição de recursos por meio de URIs
◦ URI → Uniform Resource Identifier
◦ URL → Uniform Resource Locator, tipo de endereço de
acesso baseado no conceito de URI
 A representação de recursos empregando formatos
como XML e JSON → menor volume de informações
trafegadas
 Independência de estado
◦ Performance e escalabilidade (capacidade de se adequar
a demandas crescentes) são grandes preocupações em
projetos críticos
◦ Importantíssimo que os serviços sejam “stateless”,
minimizando assim o uso de memória
 2 abordagens de implementação
◦ Aplicações Monolíticas
◦ Microservices
 Estruturalmente mais simples
 Desenvolvimento, testes e implantação acontecem de forma mais
fácil
 Uma boa abordagem para aplicações relativamente pequenas
 Não é uma abordagem recomendável para aplicações mais
complexas
◦ A adoção de práticas de continuous deployment torna-se mais difícil
(indisponibilidade de todo o sistema durante implantações)
◦ Costuma-se ficar preso a uma tecnologia
◦ Difícil entendimento e manutenção, com o crescimento da aplicação
◦ Problemas em coordenar as ações em equipe
◦ Queda na qualidade do código com o decorrer do tempo
◦ Consumo maior de recursos (IDE, servidores de aplicação)
◦ Escalabilidade comprometida
 Baseada em componentização, através
do uso de serviços
 Serviços “pequenos”→ Princípio de
Responsabilidade, coesão
 Foco em produtos, não projetos
 Organização em torno de capacidades
de negócios → Cross-functional teams
 Desenvolvimento e implantação de cada
serviço de forma independente
 Comunicação baseada no modelo REST
(requisições HTTP + JSON)
 Dados descentralizados
 Código mais compreensível (cada serviço
corresponde a um aspecto de negócio específico)
 Possibilidade de adoção de novas tecnologias, sem
que todo um sistema precise ser reescrito
 Modelo mais adequado em termos de continuous
deployment
 2 tecnologias principais atualmente:
◦ WCF (Windows Communication Foundation)
◦ ASP.NET Web API
◦ Estudo comparativo com referências:
http://netcoders.com.br/blog/wcf-web-api-estudo-comparativo/
 Alguns livros – Thomas Erl:
 Microservices – Sam Newman:
 Microservice architecture - Chris Richardson
http://microservices.io/index.html
 Microservices - Martin Fowler
http://martinfowler.com/articles/microservices.html
 Thomas Erl – Site
http://www.thomaserl.com/
Dúvidas, sugestões???
Obrigado!!!

Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)

  • 1.
    Renato Groffe -MTAC Setembro/2015
  • 2.
     Mais de15 anos de experiência na área de Tecnologia  Pós-graduação em Engenharia de Software – ênfase em SOA  MBA em Business Intelligence  Graduação em Sistemas de Informação  Técnico em Processamento de Dados  MTAC (Microsoft Technical Audience Contributor), MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
  • 3.
     Página noFacebook https://www.facebook.com/RenatoGroffeSW  Perfil no Facebook https://www.facebook.com/renatogroff  Canal .NET https://www.facebook.com/canaldotnet  LinkedIn http://br.linkedin.com/in/renatogroffe
  • 4.
     Integração entresistemas – uma visão geral  Arquitetura Orientada a Serviços (SOA)  REST  Microservices  Serviços na plataforma .NET  Referências
  • 5.
     Comunicação pormeio de arquivos  Web Services (Serviços)
  • 6.
     Uma dasprimeiras formas de integração  Ainda em uso atualmente, normalmente na transferência de grandes lotes de informações  Comum em aplicações criadas para mainframe e soluções de BI (Business Intelligence)  Texto ou outro formatos (principalmente .csv, .xls/.xlsx)
  • 7.
     Comunicação emtempo real  Transações online (e-commerce, movimentações bancárias)  Protocolo HTTP/HTTPS  Uso do formato XML, através do procotolo SOAP
  • 8.
  • 9.
     Abordagem tambémconhecida como Arquitetura Orientada a Serviços Pessoas Processos
  • 10.
     Alinhamento dasestratégicas de negócio com a TI  Uso de Web Services na integração entre sistemas  Engloba diretrizes, padrões e boas práticas para a implementação de serviços
  • 11.
     Unidade básicapara a implementação de serviços em conformidade com esta arquitetura  Um componente de software com capacidades, as quais são implementadas sob a forma de operações (métodos)  As capacidades podem ser vistas como funcionalidades das quais um ou mais sistemas dependem  Notações para a representação de serviços (segundo Thomas Erl):
  • 12.
     Reusabilidade  Interoperabilidade(entre diferentes plataformas)  Uma maior organização dos processos de negócio (graças à ênfase na análise e modelagem dos mesmos)  Reduções no tempo e custo de implementação de novos projetos
  • 13.
     Necessidade deuma equipe capacitada e familiarizada com conceitos de SOA  Mudanças drásticas em um serviço podem produzir efeitos colaterais em outra aplicações  Segurança na transmissão de informações  Análise criteriosa quanto à necessidade de implementação de um serviço (potencial de reuso, questões de infraestrutura)
  • 14.
     Entity Services→ utilizados em operações de CRUD (inclusão, exclusão, alteração e / ou consulta a informações)  Utility Services → funcionalidades que não estejam diretamente relacionadas ao negócio (log, envio de e-mail, etc.)  Task Services → automação de processos de negócio, com o consumo de Entity e/ou Utility Services  Orchestrated Task Services → lógica de orquestração, controlando o fluxo em composições que envolvam Entity, Utility e Task Services
  • 15.
     Contrato padronizado ◦Uso de XML ◦ Web Services Description Language (WSDL) → descrição da interface de um serviço ◦ XML Schema Definition Language (XSD) → definições detalhando a estrutura dos objetos manipulados por um serviço ◦ Geração de proxies para consumir um serviço  Acoplamento ◦ Menor, graças à separação de funcionalidades em serviços  Abstração ◦ Ideia de “caixa-preta” ◦ Ocultação de detalhes técnicos (infraestrutura, banco de dados, controle de acesso, etc.)
  • 16.
     Reusabilidade ◦ Pesarquestões como reuso imediato ou futuro  Autonomia ◦ Independência de influências externas ◦ Tende a diminuir com a composição de serviços  Independência de Estado ◦ Serviços stateless ◦ Evitar ao máximo o armazenamento de informações em memória
  • 17.
     Visibilidade ◦ Capacidadese descobrir e interpretar a estrutura exposta por um serviço ◦ Emprega padrões como:  UDDI (Universal Description, Discovery and Integration)  WS-MetadataExchange → especificação para a geração de documentos XML com a estrutura de um serviço
  • 18.
     Capacidade deComposição ◦ Princípio diretamente relacionado à questão do reuso ◦ Composição primitiva
  • 19.
     Capacidade deComposição ◦ Composição complexa ◦ Composição complexa
  • 21.
     Modelo arquiteturalproposto por Roy Fielding em 2000, estando baseado no conceito de recurso e no uso de requisições HTTP  Recurso → elemento (conjunto de dados) do qual uma aplicação dependente, normalmente representando um item de negócio  RESTful Web Services → serviços seguindo esta arquitetura
  • 23.
     Uso demétodos HTTP de forma explícita ◦ POST → criação de um novo recurso ◦ GET → consulta para obtenção de um ou mais recursos ◦ PUT → alteração do conteúdo ou estado de um recurso ◦ DELETE → remoção/exclusão de um recurso
  • 24.
     Exposição derecursos por meio de URIs ◦ URI → Uniform Resource Identifier ◦ URL → Uniform Resource Locator, tipo de endereço de acesso baseado no conceito de URI
  • 25.
     A representaçãode recursos empregando formatos como XML e JSON → menor volume de informações trafegadas
  • 26.
     Independência deestado ◦ Performance e escalabilidade (capacidade de se adequar a demandas crescentes) são grandes preocupações em projetos críticos ◦ Importantíssimo que os serviços sejam “stateless”, minimizando assim o uso de memória
  • 28.
     2 abordagensde implementação ◦ Aplicações Monolíticas ◦ Microservices
  • 29.
     Estruturalmente maissimples  Desenvolvimento, testes e implantação acontecem de forma mais fácil  Uma boa abordagem para aplicações relativamente pequenas
  • 30.
     Não éuma abordagem recomendável para aplicações mais complexas ◦ A adoção de práticas de continuous deployment torna-se mais difícil (indisponibilidade de todo o sistema durante implantações) ◦ Costuma-se ficar preso a uma tecnologia ◦ Difícil entendimento e manutenção, com o crescimento da aplicação ◦ Problemas em coordenar as ações em equipe ◦ Queda na qualidade do código com o decorrer do tempo ◦ Consumo maior de recursos (IDE, servidores de aplicação) ◦ Escalabilidade comprometida
  • 31.
     Baseada emcomponentização, através do uso de serviços  Serviços “pequenos”→ Princípio de Responsabilidade, coesão  Foco em produtos, não projetos  Organização em torno de capacidades de negócios → Cross-functional teams  Desenvolvimento e implantação de cada serviço de forma independente  Comunicação baseada no modelo REST (requisições HTTP + JSON)  Dados descentralizados
  • 32.
     Código maiscompreensível (cada serviço corresponde a um aspecto de negócio específico)  Possibilidade de adoção de novas tecnologias, sem que todo um sistema precise ser reescrito  Modelo mais adequado em termos de continuous deployment
  • 34.
     2 tecnologiasprincipais atualmente: ◦ WCF (Windows Communication Foundation) ◦ ASP.NET Web API ◦ Estudo comparativo com referências: http://netcoders.com.br/blog/wcf-web-api-estudo-comparativo/
  • 37.
     Alguns livros– Thomas Erl:
  • 38.
  • 39.
     Microservice architecture- Chris Richardson http://microservices.io/index.html  Microservices - Martin Fowler http://martinfowler.com/articles/microservices.html  Thomas Erl – Site http://www.thomaserl.com/
  • 40.
  • 41.