Este documento discute arquitetura orientada a serviços (SOA) e web services (WS). Ele introduz SOA e WS, explicando que SOA é um estilo de arquitetura de software onde aplicações são disponibilizadas na forma de serviços. Também discute padrões como RPC, CORBA, DCOM e REST, além de tecnologias como XML, WSDL, SOAP e UDDI usadas em WS. Por fim, aborda tópicos como composição de serviços usando linguagens como BPEL e OWL-S, e a implementação de SOA
1. UNISINOS
SOA e
Web Services
Giovane Barcelos
giovanebarcelos@gmail.com
São Leopoldo, Maio de 2010
2. Roteiro
Introdução
SOA
Serviços
Web Services
Composição de Serviços
Implementação
InSOA
Conclusão
Publicado em: http://ubuntuone.com/p/3ds/
Mai 10 SOA e WS 2
4. Introdução
Porque integrar?
Vamos reescrever tudo de novo!!!
Existem situações em que isto é praticamente
impossível:
• Por falta de tempo
• Recursos financeiros
• Problemas técnicos
Mai 10 SOA e WS 4
5. Introdução
Porque precisamos de SOA e WS?
Alinhar TI com o Negócio
Automatizar e Integrar Processos de
Negócios
Gerenciar Fluxo de Processos
(Workflow)
Compor e Integrar Processos
Mai 10 SOA e WS 5
6. SOA
Mas afinal, o que é SOA?
SOA (Service-Oriented Architecture)
SOA é um estilo de arquitetura de
software onde as aplicações devem ser
disponibilizadas na forma de serviços
SOA NÃO É:
• uma tecnologia
• web services
• estratégia de integração de sistemas
Mai 10 SOA e WS 6
7. SOA
Exemplo típico de SOA
Ordem de
Compra
Contabi-
Estoque lidade
Barramento
de Serviços
Fornece- NF de
dor Entrada
Contas a
Pagar
Mai 10 SOA e WS 7
8. SOA
O que SOA requer?
Modelagem e simulação de processos (BPMN,
BPEL)
Orquestração dos processos de negócio como
serviços
Componentização e reuso de serviços (SCA, WS-*)
Integrações de aplicações (WS-*, JNI, JMS)
Gerenciamento de processos em servidores de
processos
Monitoração dos processos de negócio (BAM)
Mai 10 SOA e WS 8
9. SOA
Quais os princípios da arquitetura? 1/2
Encapsulamento
Baixa Acoplagem
Contrato
Abstração
Reusabilidade
Mai 10 SOA e WS 9
10. SOA
Quais os princípios da arquitetura? 2/2
Composição
Autonomia
Otimização
Descoberta
Relevância
Mai 10 SOA e WS 10
11. SOA
Quais são os elementos?
SOA
Aplicação Repositório Barramento
Serviço
Frontend de Serviços de Serviços
Contrato/
Implementação Interface
Definição
Lógica de
Banco de Dados
Negócios
Mai 10 SOA e WS 11
12. Servicos
SOA e os Serviços
Implementações SOA utilizam Serviços Web e
geralmente SOA utiliza WS
Serviços são aplicações disponíveis na Web
Principais padrões de serviços:
•RPC
•CORBA
•DCOM
•Web Services
•REST
•DDS
•WCF
Exemplo WS:
http://www.webservicex.net/WCF/ServiceDetails.as
px?SID=19
Mai 10 SOA e WS 12
14. Serviços
CORBA - OMG
CORBA (Common Object Request Broker Architecture)
Mai 10 SOA e WS 14
15. Serviços
DCOM - Microsoft
DCOM (Dynamic Component Object Model)
Mai 10 SOA e WS 15
16. Web Services
Afinal de contas, o que são WS?
WS (Web Services) – Serviços Web
Web Services fornecem um padrão de interoperabilidade
entre aplicações diferentes, rodando sobre plataformas e/ou
frameworks distintos
Especificação W3C (w3c.org):
• XML, XPath, XQuery, ...
• Mensagens (SOAP, WS-Addressing, ...)
• Metadados de trocas (WSDL, UDDI, WS-Policies, …)
• Segurança e Confiabilidade (WS-Security, WS-Trust, …)
• Privacidade (P3P)
• Recursos (WS-Resource, WS-Transfer, …)
• Interoperabilidade (WS-Basic Profile, …)
• Processos de Negócios (WS-BPEL, WS-CDL, ..)
• Transações (WS-Transaction, WS-Coordination, …)
• Gerenciamento (WS-Management, WSDM, ...)
Mai 10 SOA e WS 16
17. Web Services
Arquitetura
Serviços como Web-Services (WS)
Troca de mensagens (SOAP) Usuário ou aplicação
Lógica e dados
encapsulados
Serviço Web-Services Cliente Web-Services
SOAP: Simple Object Access Protocol
Arquitetura Web-Services (WS) SOAP
Troca Mensagens
WSDL
WSDL
Servidor Cliente
Publicação Pesquisa e
SOAP: Simple Object Access Protocol Descoberta
UDDI: Universal Description, Discovery Diretório de
and Integration Serviços (UDDI)
Mai 10 SOA e WS 17
18. Web Services
Pilha
Pilha de Tecnologias Pilha de Soluções
Descoberta UDDI
Descrição WSDL
Empacotamento SOAP
Transporte HTTP (Web)
Rede TCP / IP (Internet)
Mai 10 SOA e WS 18
19. Web Services
O que é XML?
eXtensible Markup Language: padrão W3C
Maneira de representar informação
Não é uma linguagem específica
Não define vocabulário de comandos
Não define uma gramática, apenas regras mínimas
Mai 10 SOA e WS 19
25. Web Services
O que é REST ?
REST significa REpresentational State
Transfer
É um estilo de arquitetura de serviços e
WS
Trabalha essencialmente com o
protocolo HTTP
Proposto por Roy Fielding (Tese) – autor
da especificação HTTP
Mai 10 SOA e WS 25
26. Web Services
REST versus WS-*?
WS-* - Modelo OSI e W3C
• Formalidade e overhead de protocolos
• Muitas especificações antes de implementar
• Modelo Waterfall / Cascata
REST – TCP/IP
• Simplicidade e flexibilidade
• Especificações junto com implementação
• Modelo incremental
Mai 10 SOA e WS 26
27. Web Services
Comandos REST
GET
PUT
CLIENTE RECURSO
POST
DELETE
INVOKE Atividade 1
CLIENTE INVOKE Atividade 2
INVOKE Atividade 3
Mai 10 SOA e WS 27
28. Web Services
SOAP x REST = Declarativo x Imperativo
SOAP <soap:Envelope>
<soap:Body>
<globo:getBook>
<id>SOAP123</id> Operação e parâmetros
</globo:getBook>
</soap:Body>
</soap:Envelope>
REST Método HTTP URI do recurso
GET /getBook/SOAP123
Como O quê
Mai 10 SOA e WS 28
29. Web Services
REST e SOAP – Itens Importantes
Recursos
URI (Uniform Resource Identifier)
Formatos e tipos disponíveis
Métodos
Retorno
Tags e identificadores
Mai 10 SOA e WS 29
30. Composição Serviços
O que significa compor serviços?
Composição de Serviços com SOA (Service Oriented Architecture)
WS1 Servidor de composição de
Web-Services responsável
SO pela Orquestração WS
AP
integração de múltiplas Usuário ou aplicação
plataformas UI
WS2
SOAP
Cliente Web-Services
WS3
AP
SO Linguagens BPEL4WS e OWL-S
Abordagens distintas
Escritas com auxílio de
ferramentas gráficas
Mai 10 SOA e WS 30
31. Composição de Serviços
O que é Orquestração?
Um processo central controle os serviços
1.
Inicia 2.
5. Executa
Retorno
4.
Executa
3.
Executa
Mai 10 SOA e WS 31
31
32. Composição de Serviços
O que é Coreografia?
Não depende de um coordenador central
5. 1.
Executa Inicia
3.
Retorno
2.
Executa
4.
Executa
Mai 10 SOA e WS 32
32
33. Composição de Serviços
Design Patterns e Linguagens de Composição
Para compor serviços Linguagem de Composição são essenciais
Principais patterns de composição:
✔ Controle de fluxo básico (5)
✔ Marcação de sincronização avançados (4)
✔ Estruturais (2)
✔ Múltiplas instâncias (4)
✔ Baseados em estado (3)
✔ Cancelamento (2)
✔ Tratamento de Erros (1)
Design Patterns ou Padrões de Projeto:
✔ Descrevem um problema que acontece repetidas vezes
✔ Foco em reutilização e documentação de soluções
✔ Úteis para analisar e comparar aplicações
➢ Seguem Patterns: BPEL4WS, XLANG, WSFL, XPDL e OWL-S
Mai 10 SOA e WS 33
34. Composição de Serviços
Linguagens: BPEL4WS e OWL-S
BPEL4WS (Business Process Execution Language for WS):
• Originária das especificações WSFL (Web Services Flow
Language) da IBM e da XLANG da Microsoft
• 4 partes: partnerLinks, variables, faultHandler e sequence
• Característica de execução procedural
OWL-S (Ontology Web Language for Services)
• Predecessor é a linguagem DAML (DARPA Agent Markup
Language) utilizada para criação de ontologias
• 4 partes: service, profile, process e grounding
• Descoberta, Invocação e Composição automática
• Característica de definição de Ontologias de Domínios
Mai 10 SOA e WS 34
35. Composição de Serviços
Análise Comparativa – Design Patterns
OWL-S:
Vantagens devido
ao suporte a XSLT
(Extensible Stylesheet
Language
Transformations)
BPEL:
Vantagem em itens
muito importantes (19
e 20) - tratamento de
exceções e
compensação
Mai 10 SOA e WS 35
36. Implementação
Típico roteiro de implementação SOA
Processos de Negócios
Integração
Aplicações
Segurança
Centralização dos Dados Básicos /
Mestres
Mai 10 SOA e WS 36
37. Implementação
Estratégias de Integração
Projeto centralizado ou descentralizado de integração de sistemas
Definição da arquitetura a ser utilizada
• Hub and Spoke
• ESB (Transporte, Transformação e Roteamento)
Mai 10 SOA e WS 37
40. Implementação
ESB e SOA Open Source
MULE (http://mule.codehaus.org) - DEMO
APACHE (http://incubator.apache.org/servicemix e tuscany)
ECLIPSE (http://www.eclipse.org/stp/ )
Mai 10 SOA e WS 40
42. Implementação
Métodos de transporte ESB
Software Servidor Barramento Metadados
BEA J2EE JMS Outro
CAPE Clear J2EE HTTP BPEL
Florano J2EE JMS Outro
WebSphere OS Nativo Definido Outro
Oracle J2EE HTTP BPEL
AG J2EE JMS Outro
Sonic J2EE Sonic MQ Outro
TIBCO OS Nativo TIBCO Outro
Mai 10 SOA e WS 42
43. InSOA
Cenário de Convergência e Evolução
Arquiteturas Arquiteturas Distribuídas
Centralizadas
Web Services (WS) SOA (Service Oriented
Architecture)
Business Process Linguagens de
Management + SOA Composição de Serviços
Computador Pessoal Dispositivos Móveis
Dispositivos Móveis Dispositivos Móveis
Clientes Servidores
Linguagens Linguagens interpretadas
Compiladas e declarativas
Embutidas e leves
Mai 10 SOA e WS 43
44. InSOA
Características desejadas
Soluções atuais devem:
✔ Ser distribuídas
✔ Orientadas a serviços
✔ Compor serviços
✔ Adequadas a dispositivos móveis
✔ Prover serviços e uso destes
✔ Tendência para linguagens declarativas [Aho 2006]
✔ Possibilidade de ser embutida e leves
Mai 10 SOA e WS 44
45. inSOA
Questão de Pesquisa
Como criar composições de serviços em
dispositivos móveis utilizando uma
linguagem de composição declarativa?
Mai 10 SOA e WS 45
46. Linguagem inSOA
Projeto U-SOA
✔ inSOA faz parte do
Projeto U-SOA
✔ U-SOA significa
Ubiquitous Service-
Oriented
Architecture
✔ É uma pilha de
tecnologias
separada em
camadas
✔ É uma arquitetura
para
desenvolvimento de
aplicações
colaborativas
ubíquas
Mai 10 SOA e WS 46
47. inSOA
Características (1/2)
✔ inSOA (invoke SOA) é uma linguagem
declarativa de composição de serviços com
foco em dispositivos móveis
✔ Insensível a capitalização
✔ Possui declaração flexível
✔ Faz validação de padrões (URI RFC 3986 e
XPath 2.0)
✔ Comandos são opcionais, com exceção do
invoke
Mai 10 SOA e WS 47
48. inSOA
Características (2/2)
✔ Suporte a tratamento de falhas
✔ Orquestração de WS
✔ Organiza invocações de forma otimizada em
objetos
✔ Gera saída customizável com StringTemplate
✔ Pode ser embutida
✔ Leve e não exige software de autoria
Mai 10 SOA e WS 48
49. inSOA
Exemplo
-- Exemplo inSOA
/* Data: 19/02/2009 */
invoke http://usoa.insoa/WS1.OperationA as a if way != 1,
http://usoa.insoa/WS2.OperationB as b
input way type Number default 0
into / as wayPipe, / as wayPipeA
set a.field := way,
b.field := wayPipeA/result/text()
where wayPipe/result/tag/text() == 'Valid'
return wayPipe/result/field/text() type String name Result
fail a: invoke http://usoa.insoa/WS2.Operation as c
set c.field := 'Rollback',
c.way := way
id Identification
tags Example;
Mai 10 SOA e WS 49
51. inSOA
Design Patterns Implementados
B O in B O in
P W S P W S
Pattern E L O Pattern E L O
L S A L S A
12. Multiple Instances Without
1. Sequence + + + + + +
Synchronization
13. Multiple Instances With a
2. Parallel Split + + + + + +
Priori Design Time Knowledge
14. Multiple Instances With a
3. Synchronization + + + - - +
Priori Runtime Knowledge
15. Multiple Instances Without a
4. Exclusive Choice + + + - - +
Priori Runtime Knowledge
5. Simple Merge + + + 16. Deferred Choice + + +
6. Multi-choice + + + 17. Interleaved Parallel +- +- +
7. Synchronizing Merge + + + 18. Milestone - - -
8. Multi-merge - - + 19. Cancel Activity + + +
9. Discriminator - - + 20. Cancel Case + + +
10. Arbitrary Cycles - - + 21. Exception Handling + - +
11. Implicit Termination + + +
Mai 10 SOA e WS 51
53. InSOA
Estudo de Caso
➢ 2 Cenários:
✔ Consulta de Viagem (4 níveis, 10 WS, 10 Composições inSOA)
✔ Consulta de Livros (5 níveis, 8 WS, 12 Composições inSOA)
➢ Processo integrado de teste:
Mai 10 SOA e WS 53
54. inSOA
Cenário 1: Consulta de Viagem
✔ 4 níveis
✔ 10 Composições inSOA
✔ 10 WS
✔ 10 Emuladores
Mai 10 SOA e WS 54
55. inSOA
Comparação com os Paradigmas Atuais
# Característica BPEL OWL-S inSOA
a Insensível a capitalização NÃO NÃO SIM
b Declaração Flexível NÃO NÃO SIM
c Validação de Padrões NÃO NÃO SIM
d Tratamento XML Externo Externo Interno
e Opcionalidade NÃO NÃO SIM
f Tratamento de Erros SIM SIM SIM
g Orquestração SIM SIM SIM
h Saída Customizável NÃO NÃO SIM
i Invocação Otimizada NÃO NÃO SIM
j Embutida NÃO NÃO SIM
k Leve NÃO NÃO SIM
l Abordagem Funcional Orientada para Objetos Declarativa
m Baseada XML XML Texto
Mai 10 SOA e WS 55
56. inSOA
Patterns Implementados/Testados no Estudo de Caso
Pattern I? T? Pattern I? T?
12. Multiple Instances Without
1. Sequence Sim Sim Sim Não
Synchronization
13. Multiple Instances With a
2. Parallel Split Sim Sim Sim Não
Priori Design Time Knowledge
14. Multiple Instances With a
3. Synchronization Sim Sim Sim Não
Priori Runtime Knowledge
15. Multiple Instances Without
4. Exclusive Choice Sim Não Sim Não
a Priori Runtime Knowledge
5. Simple Merge Sim Sim 16. Deferred Choice Sim Não
6. Multi-choice Sim Não 17. Interleaved Parallel Sim Não
7. Synchronizing Merge Sim Sim 18. Milestone Não Não
8. Multi-merge Sim Sim 19. Cancel Activity Sim Sim
9. Discriminator Sim Não 20. Cancel Case Sim Sim
10. Arbitrary Cycles Sim Não 21. Exception Handling Sim Não
11. Implicit Termination Sim Sim
Legenda: I? = Implementado? e T? = Testado
Mai 10 SOA e WS 56
57. inSOA
Comparação BPEL4WS, OWL-S e inSOA
Linguagem Motivação Componentes Paradigma Tratamento
Retorno
XML
BPEL4WS WSFL e partnerLinks, Procedural Externo
XLANG variables,
faultHandler e
sequence
OWL-S DAML service, POO Externo
profile,
process e
grounding
inSOA Declarativa Invoke, input, Declarativo Interno
into, set, where,
return, fail, id e
tags
Mai 10 SOA e WS 57
58. Introdução
Críticas SOA
SOA é apenas uma nova palavra para WS
Dependência de SOA à tecnologia WS
Altos custos e riscos ocasionados pela constante
evolução dos padrões ligados a SOA
Serviços SOA com estado (stateful) criam alto
grau de acoplamento e reduz escalabilidade
SOA é só uma evolução e não um novo conceito
Rigidez nas interfaces gera impacto negativo nas
alterações dos serviços
Mai 10 SOA e WS 58
59. Conclusão
➢ Integrar é preciso
➢ Quem não se comunica se trumbica
➢ SOA é um conceito e não tecnologia
➢ WS é a tecnologia mais utilizada na
atualidade
Mai 10 SOA e WS 59
60. Referências Bibliográficas
Parcial
[Aalst 2003] Aalst, W.M.P van der; Dumas, M. e Hofstede, A.H.M. Ter. Web
service composition languages: old wine in New bottles?. Euromicro
Conference. IEEE. ISBN: 0-7695-1996-2. 2003.
[Aho 2006] Aho, Alfred V.; Lam, Monica S.; Sethi, Ravi e Ullman, Jeffrey D.
Compilers: Principles, Techniques, & Tools. Pearson Addison Wesley. 1000
Pág. ISBN: 978-0321486813. 2006.
[Erl 2005] Erl, Thomas. Service-Oriented Architecture: Concepts, Technology,
and Design. Prentice Hall PTR. 792 Pág. ISBN: 978-0131858589. 2005.
[Haseman 2008] Haseman, Chris. Android Essentials. Apress. 166 Pág. ISBN:
978-1430210641. 2008.
[Martin 2004] Martin, D. at al. OWL-S: Semantic Markup for Web Services.
W3C. http://www.w3.org/Submission/OWL-S/. 2004.
[Parr 2007] Parr, Terence. The Definitive Antlr Reference: Building Domain-
Specific Languages. Pragmatic Bookshelf. 376 pag. ISBN: 978-0978739256.
2007.
[Staab 2003] Staab, S.; van der Aalst, W.; Benjamins, V.R.; Sheth, A.; Miller, J.A.;
Bussler, C.; Maedche, A.; Fensel, D. e Gannon, D.. Web services: been there,
done that?. IEEE, DOI: 10.1109/MIS.2003.1179197. 2003.
[Will 2003] Will, van der Aalst. Don't go with the flow: Web services
Mai 10 SOA e WS 60
composition standards exposed. IEEE Intelligent Systems. 2003.
61. Referências Bibliográficas
Parcial
[1] W3C, “Web Services Architecture”, 2004, disponível em:
http://www.w3.org/TR/ws-arch/#introduction, acessado em: 23/05/08.
[2] M. Nakamura, H. Igaki,, H. Tamada, K. Matsumoto, “Implementing
Integrated Services of Networked Home Appliances using service
oriented Architecture”, In: 2nd International Conference on Service
Oriented Computing, Novembro, 2004
[3] M. Hu, “Web Services Composition, Partition, and Quality of Service
in Distributed System Integration and Re-engineering”, 2003, XML
Conference & Exposition 2003
[4] J. Shen, Y. Yang, C. Zhu e C. Wan, “From BPEL4WS to OWL-S:
Integrating E-Business Process Descriptions”, Services Computing, 2005
IEEE International Conference.
[5] W.M.P van der Aalst, M. Dumas e A.H.M. ter Hofstede, “Web service
composition languages: old wine in New bottles?”, 2003, IEEE.
[6] E. Gamma, R. Helm, R. Johnson e J.M. Vlissides, “Design Patterns:
Elements of Reusable Object-Oriented Software”, 1994, Addison-
Wesley.
[7] W.M.P. van der Aalst, A.H.M. ter Hofstede, B. Kiepuszewski, e A.P.
Barros, “Workflow Patterns”, 2000
Mai 10 SOA e WS 61