Arquitetura Orientada a Serviços A Evolução de Estruturas Complexas a partir de Estruturas Simples Neil Paiva Tizzo GEINFO - 2010
Objetivos Apresentar a Arquitetura Orientada a Serviços (SOA) como uma evolução natural das tecnologias de desenvolvimento de sistemas distribuídos Esboçar os conceitos fundamentais de SOA Ilustrar as potencialidades de SOA
Histórico Evolutivo Movimento dialético entre pressão e alívio Viabilidade econômica Diminuir custo sem sacrificar a qualidade e a longevidade Custo de Produção Qualidade
Evolução da Computação Distribuída 1ª. Fase Cliente/Servidor DCE 2ª. Fase CORBA DCOM EJB 3ª. Fase MOM 4ª. Fase SOA
Problemas das Tecnologias Anteriores Protocolos proprietários Falta de interoperabilidade Dependência de plataforma Falta de flexibilidade Necessidade de desenvolvimento em tempo de Internet
Tópicos O que é SOA Serviços Web Protocolo de Comunicação: SOAP Linguagem de Descrição: WSDL Registro de Serviços: UDDI Composição de Serviços: WS-BPEL
Service Oriented Architecture O QUE É SOA?
SOA Arquitetura Orientada a Serviços Arquitetura de TI para aplicações do tipo pedido resposta Funções de aplicação são modularizadas e apresentadas como serviços Serviços podem ser consumidos por outros serviços Serviços podem ser compostos
SOA: Características Fraco Acoplamento Composição Reutilização Padronização Interoperabilidade
Ciclo de Vida de um SW Provedor do Serviço Publica 1 4 Mapeia Interface Cliente do 5 Usa Registro do Serviço Acha 2 3 Serviço Procura
SERVIÇOS WEB
Serviços Web Os SW são atualmente a tecnologia mais utilizada para a implementação da arquitetura SOA São otimizados para serem usados por outros programas e não por pessoas É o uso ubíquo de HTTP que possibilita a adoção dos Serviços Web
Serviços Web: Padrões Um SW é um sistema de software identificado por uma URI, cujas interfaces públicas e mapeamentos são definidos e descritos usando-se XML Os SW são baseados no seguintes padrões: Protocolo de comunicação: SOAP Linguagem de descrição: WSDL Registro de serviços: UDDI Linguagem de composição: WS-BPEL
PROTOCOLO DE COMUNICAÇÃO SOAP
SOAP Originalmente ele define um formato de documento XML que descreve como invocar um método de um pedaço remoto de código Define uma forma de transmitir dados através de XML e de realizar RPC usando o HTTP como protocolo base Geralmente, SOAP usa o protocolo HTTP, mas outros tipos podem ser usados
Mensagem SOAP Envelope SOAP Cabeçalho SOAP Corpo SOAP É o elemento mais elevado É equivalente a um envelope do correio convencional Autenticação Gerenciamento de transação Pagamento e outros Consiste tipicamente de uma chamada RPC, resposta RPC ou código de erro
Arquitetura do SOAP no Java Servidor Web Cliente SOAP Máquina 1 Solicitação RPC SOAP por HTTP Resposta RPC SOAP por HTTP Processador SOAP A solicitação RPC é encaminhada a um objeto Java A resposta RPC é encaminhada ao processador SOAP Java Virtual Machine Objeto Java Máquina 2
SOAP: Exemplo de Resposta HTTP/1.1 200 OK Content-Type: text/xml;charset=utf-8 X-Powered-By: Servlet/2.5 JSP/2.1 Date: Thu, 02 Sep 2010 21:43:32 GMT X-ORACLE-DMS-ECID: 0000IfKPtFxAxGWFLzaQOA1CW1dA000009 Content-Length: 237 X-HTTPAnalyzer-RuleName: Pass through : <?xml version = '1.0' encoding = 'UTF-8'?> <S:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:alovoceresponse xmlns:ns2="http://projetoalovoce/"> <return>alo, Neil!</return> </ns2:alovoceresponse> </S:Body> </S:Envelope>
Web Services Description Language LINGUAGEM DE DESCRIÇÃO WSDL
WSDL Linguagem XML que descreve a interface de um Serviço Web Um documento WSDL define o nome de um Serviço Web, os nomes de seus métodos, os argumentos dos métodos, protocolo de acesso etc. É para os SW o que a IDL é para o CORBA
<definitions> <types> Descrição dos tipos de dados </types> <messages> Parâmetros de entrada e saída </messages> <porttype> <operations> Descrição das mensagens de entrada e saída </operations> </porttype> <binding> Descrição do protocolo de invocação </binding> Arquitetura do WSDL <service> <port> Referência à localização do serviço </port> </service> </definitions>
Universal Description, Discovery, and Integration REGISTRO UDDI
UDDI UDDI é um repositório para descrever, descobrir e integrar serviços Esses serviços não são necessariamente Web, ou até mesmo não estão relacionados a computadores São estruturados de maneira semelhante a um catálogo telefônico Páginas brancas Páginas amarelas Páginas verdes tmodel
Páginas Brancas Informação sobre negócios Nome Descrição do negócio Potencialmente em vários idiomas Informação para contato Endereço, telefone etc.
Páginas Amarelas Classificação de serviços e entidades de negócios baseada em taxonomias-padrão Standard Industrial Classification (SIC) 7361 = Services - Employment Agencies 7385 = Services - Telephone Interconnect Systems Uma entidade de negócios pode fornecer vários serviços
Páginas Verdes Informações técnicas sobre o serviço Informações sobre como o serviço pode ser acessado Relacionadas aos Serviços Web Endereços Parâmetros Não relacionadas aos Serviços Web E-mail FTP CORBA Telefone
tmodels (Technical Model) tmodel associa uma descrição de interface a um mapeamento, por exemplo, WSDL Vários mapeamentos podem se referir à mesma interface (tmodel) O setor de transporte aéreo pode definir uma interface de reserva de passagens padrão que pode ser implementada por várias companhias
tmodel: Modelo de Dados <businessentity businesskey= ABC > <name>bbc</name> <description> </description> </businessentity> <tmodel tmodelkey= QRS > <overviewdoc> <overviewrl> http://bbc.co.uk/news?wsdl> </overviewrl> </overviewdoc> </tmodel> <businessservice servicekey= EFG businesskey= ABC > <name>news</name> </businessservice> <bindingtemplate bindingkey= KLM servicekey= EFG > <description> Web Service </description> <acesspoint> http://bbc.co.uk/new </acesspoint> <tmodelinstancedetails> < tmodelinstanceinfo tmodelkey= QRS /> </tmodelinstancedetails > </bindingtemplate>
APIs (Mensagens SOAP) API Pesquisa Find things find_business find_service find_binding find_tmodel Get Details about things get_businessdetail get_servicedetail get_bindingdetail get_tmodeldetail API Publicação Save things save_business save_service save_binding save_tmodel Delete things delete_business delete_service delete_binding delete_tmodel security get_authtoken discard_authtoken
Web Service Business Process Execution Language COMPOSIÇÃO DE SERVIÇOS WS-BPEL
Necessidade da Integração A composição de Serviços Web é a habilidade de um negócio em fornecer serviços com valor agregado a seus clientes através da composição de serviços básicos possivelmente ofertados por diferentes companhias
Dificuldades da Integração Coordenar a comunicação assíncrona entre serviços Relacionar trocas de mensagens entre as partes Manipular/transformar dados trocados pelos parceiros Suportar atividades e transações de negócios demoradas Prover tratamento de exceções consistentemente Lidar com alto grau de autonomia e heterogeneidade dos serviços
WS-BPEL Linguagem de descrição de processos Ambiente de execução de processos Alto desempenho na execução de processos de longa duração Monitoração de processos e gerenciamento de ciclo de vida Ambiente para projeto de processos
BPEL: Exemplo de Processo BPEL Process User Partner Link PortType <receive> <invoke> PortType Partner Link Web Service <reply>
WS-BPEL no JDeveloper
A Evolução de Estruturas Complexas a Partir de Estruturas Simples SC1 SC2 SC3 Serviços Compostos SA1 SA2 SA3 SA4 SA5 Serviços Atômicos Recursos do Sistema
CONSIDERAÇÕES FINAIS
Porque SOA?
Aplicações de Serviços Web Comércio eletrônico (e-commerce) Negócio eletrônico (e-business) Governo eletrônico (e-government) Plataformas de Desenvolvimento Java.NET
Serviços Web Semânticos Adição de semântica aos padrões atuais de Serviços Web ou mesmo o desenvolvimento de novos padrões Uso de semântica para facilitar a composição manual Uso de semântica para permitir a composição automática Animal Humano:Penélope Anfíbio Mamífero Réptil eesposade Humano:Ulisses Humano Gato Lagarto =Pessoa
Neil Paiva Tizzo neil@pucpcaldas.br
SOA O que a Web fez para a interação usuário-programa, os Serviços Web farão para a interação programaprograma