S
Rafael Salerno de Oliveira
Prof Ms Vinícius Costa de Souza
Uso de Padrões no
Desenvolvimento de Web
Services
Um Estudo de Caso
Motivação
Integração
Disponibilização
Independência
de Tecnologia
Multiplataforma
Objetivo
• Como Reduz a Complexidade
• Comunicação Comum entre
Desenvolvedores
• Como proporciona Evolução
O que é um Web Service?
S É uma Solução que possibilita:
S Comunicação entre Aplicações Diferentes
S Interação com Diferentes Plataformas
Características
Infraestrutura aberta
Transparência de Linguagem
Design modular
“Isolar o Cliente”
Principais Tipos
Meio da Comunicação
Conteúdo da Comunicação
Padrões/Estilos de API para
Web Services
• RPC API
• Message API
• Resource API
RPC APIRemote Procedure Call
Message API
Resource API
Tipos de Padrões de Interação
Cliente-Servidor
• Request/Response
• Request/Acknowledge
• Media Type Negotiation
• Linked Service.
Request/Response
Request/Response
Request/Acknowledge
Steps no Server:
1. Recebe um Request
2. Envia um Identificador(token) ou uma URL
3. Processsa a requisição em backgroud
4. Recebe o Identificador e envia o
acknowledgment
Request/Acknowledge
Media Type Negotiation
Linked Service
Linked Service
Padrões de
Request/Response
SService Controller
SData Transfer Object
Service Controller
- Controlam a execução de tarefas de negócios e
coordenam o acesso à recursos.
- Front Controller
Data Transfer Object
Data Transfer Object
Estilos de Implementação de
Web Service
Considerações para implementação do serviço
Web:
S Atomicidade - tudo ou nada
S Não gerenciar estados
S Ações quando houver composição de serviços
Estilos de Implementação de
Web Service
S Operation Script
S Command Invoker
Estilos de Implementação de
Web Service
S Transaction Script
Padrões de Infra- Estrutura
para Web Service
SService Connector
SService Descriptor
SService Interceptor
S Idempotent Retry
Service Connector
SEsconde detalhes da
comunicação entre APIs
relacionadas
Idempotent Retry
STratar problemas relacionados a
erro de conexão
Service Descriptor
Service Interceptor
Benefícios do uso de padrões
de projeto
Diminuem
o
retrabalho
Metodologia
S Público alvo
S Técnica utiliza amostragem por conveniência
S Observação do pesquisador.
S Questionário direcionado a profissionais de
TI
Estudo de Caso
S Foi utilizado uma aplicação usada por uma
empresa de pesquisa de medicamentos.
S Algumas funcionalidades:
Monitoramento de Portfólio de Medicamentos
Pesquisa e Recomendação de Medicamentos
Agrupamento de Medicamento
Histórico do medicamento
Estudo de Caso
S P1 - Sem Padrões de Projeto para web
Services
S P2 - Com Padrões de Projeto para web
Services
S As duas aplicações realizam o mesmo
trabalho
S Tem entradas e saídas iguais o que facilita a
comparação
Estudo Comparativo
S O que foi Comparado :
Padrões de Projetos
Frameworks
Número de Linhas de Código
Complexidade Ciclomática (IF,WHILE e FOR)
Manutenibilidade (facilidade, precisão, segurança na
manutenção)
Complexidade Ciclomática
M=D+1 onde:
D=ponto de decisão (IF,FOR,WHILE)
Valores de Referência:
− 1-10, métodos simples, sem muito risco
− 11-20, métodos medianamente complexos, com
risco moderado
− 21-50, métodos complexos, com risco alto
− 51 ou mais, métodos instáveis de altíssimo risco.
(MCCABE,1976)
Resultados Obtidos
Projeto 2
• Padrão Arquitetural SOA
• Estilo de RPC API
• Linked Service com serviço raiz com pontos de
entrada
• Data Transfer Object para tratar dados
recebidos e Enviados e deixar o cliente a parte
do BD
Resultados Obtidos
• Operation Transcripts para ter um único ponto
de controle transacional
• Comand Invoker para que o Serviço não
conheça o modelo de domínio e fazer com que
o cliente conheça apenas interfaces de saída
• Service Interceptor para realizar validações
Resultados Obtidos
• O projeto 2 teve aproximadamente 1200 linhas a mais
que o projeto 1
• Complexidade Ciclomática foi considerada:
P1 - “medianamente complexo, com risco
moderado”
Resultados Obtidos
P1P2
Resultados Obtidos
• A manutenibilidade foi de 1h e 30 min a menos
no projeto 2
Casos de manutenção:
• Suporte a relatórios em CSV
• Manutenção no agrupamento por medicamentos
do mesmo tipo
• Ordenação de medicamentos após o
agrupamento do mesmo tipo
Estudo Qualitativo
SPesquisa com dez profissionais
S Objetivo :
Importância dos padrões de projeto
É determinado pelo tempo de
experiência?
Estudo Qualitativo
Experiência na área de TI em anos:
5 anos 6 anos 8 anos 5 anos 12 anos
3 anos 1 ano 4 anos 5 anos 2 anos
Estudo Qualitativo
Estudo Qualitativo
Estudo Qualitativo
Estudo Qualitativo
Conclusão do Estudo
Qualitativo
SA maior parte das pessoas sabem que os
Padrões de projeto tem benefícios
SA complexidade e quando se usar pode
estar ligado a tempo de experiência
SDependendo do contexto que se trabalha
a pessoas acham que o framework pode
ser mais importante que o Padrão de
Projeto
Considerações Finais
• Complexidade
• Manutenção
• Código Duplicado
• Comunicação
Referencial