UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services
Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação de método remoto (RMI) Chamada de procedimento remoto (RPC) CORBA Web Services Permite que clientes e servidores interajam de forma mais flexível que os navegadores Uso de XML e do protocolo HTTP
Surgimento do Web Services 1997 A Sun distribui o JDK 1.1 que inclui o Remote Method Invocation (RMI) que define um modelo de computação distribuída usando objectos Java. O RMI é semelhante ao CORBA e ao DCOM mas funciona só com objetos Java. Microsoft desenvolveu o COM+ sucessor do DCOM muito próximo do modelo CORBA.
Surgimento do Web Services 1999 A SUN distribui o Java 2 Platform Entreprise Edition (J2EE) que integra o RMI e o IIOP tornando mais simples a interoperação de sistemas entre sistemas Java e CORBA. O Simple Object Acess Protocol SOAP apareceu pela primeira vez. 2001 A IBM e a Microsoft propõem os primeiros protocolos de Web Services à W3C (World Wide Web Consortium)
O que é Web Services? Um serviço que permite troca de dados através da Web Principalmente mas não baseado em: XML para codificação de dados HTTP para transporte de dados Permite uma maior interoperabilidade entre clientes e servidores
Interoperabilidade Capacidade de dois sistemas comunicarem entre si De forma transparente (ou próximo a isso) Mesmo que ambos os sistemas sejam diferentes Dar suporte para padrões abertos Dar suporte para modelo de dados que representem um conjunto de conceitos
O que é Web Services? Não se deve confundir servidor web com web services Servidor Web fornece um serviço HTTP básico de páginas web Web Service fornece serviços para clientes de forma mais diversificada e estruturada Possibilidade de serviços possam se integrar a outros serviços
Diferença entre Web server e Web services Servidor Web é um programa servidor que retorna páginas HTML, figuras JPG/GIF, etc para um cliente web geralmente através de um navegador Utilizando sempre o protocolo HTTP Web services também é um programa servidor que permite retornar outros tipos de dados, além do HTML, para um cliente Cliente pode utilizar outros aplicativos ao invés de navegadores Web services não está restrito ao HTTP
Web Services Web Services são identificados através de URI URI é um identificador de recursos universal Pode ser uma URL ou URN URL é usado para acessar páginas na Web (ex.: http://www.paginaweb.com/recurso ) URN identifica um recurso de forma persitente e independente de sua localização
Componentes de um Web Service
Componentes de um Web Service Web services e aplicações podem ser implementadas a partir de outros web services Alguns web services fornece funcionalidades genéricas Serviços de diretório, segurança, etc. SOAP: serve para criar mensagens em XML e transmití-las via HTTP ou algum outro protocolo WSDL: serve para descrever um serviço XML
Web Services Description Language Representação XML para descrever serviços disponíveis em uma rede Descreve a interface, protocolo de acesso e fornecimento de serviços Fornece uma maneira uniforme de descrever serviços abstratos
UDDI Universal Description, Discovery and Integration Diretório independente de plataforma para descrição de serviços Web Método padrão para publicar e descobrir serviços Web e fornecedores Dá suporte a vários tipos de descrição de serviços
Modelo de um Web Service
Exemplo de requisição e resposta
Exemplo de combinação de web services Considere que pessoas usam web sites para reservar voos, alugar veículos e outras coisas Se estes web sites fornecerem uma interface de serviços padrão, estes serviços podem ser combinados
Web services - Características Padrão de comunicação em web services pode ser síncrono ou assíncrono Um padrão baseado em eventos pode ser adotado também Independentes de linguagens de programação e sistema operacional Mudanças na implementação de uma função de um servidor não implica em mudança na invocação
Web services - Características Mensagens codificadas em texto para passar através das firewalls Usa de forma direta o HTTP e HTTPS como protocolos de transferência de informação Usa URL e URI para ter acesso a objetos Permitir a transferência de todo o tipo de informação desde estruturas de dados a documentos estruturados e informação multimídia.
SOAP - Simple Object Access Protocol Protocolo de comunicação distribuído permitindo o envio de qualquer tipo de informação entre aplicações usando XML Define um modelo que permite criar mensagens que utilizam diferentes protocolos (HTTP, TCP, UDP) HTTP é o mais utilizado O SOAP possui suporte de várias linguagens de programação tais como Java, Perl, C#, etc. Permite a adição de serviços tais como segurança e tolerância a falhas
Mensagens SOAP No SOAP a mensagem está dentro de um envelope Dentro do envelope temos: Header (opcional) que contém informação pode ser utilizado por algum serviço (segurança, logs) Body que carrega os dados (documentos) a serem transmitidos Pode haver mais de um Header e mais de um Body dentro de uma mensagem
Mensagens SOAP A mensagem pode transmitir um documento informando os seus nomes e tipos de forma síncrona ou assíncrona ou A mensagem poder realizar uma requisição ou obter uma resposta
Exemplo de uma requisição SOAP É necessário um URL de destino e o nome de uma operação Na requisição o envelope não possui Header Os parâmetros: São passados por cópia Não existem referências para os objectos remotos criadas automaticamente como em Corba ou Java. Informação contextual, como a informação de segurança
Exemplo de uma requisição SOAP Função Remota sayhello que passa um parâmetro friend e recebe como resposta um Hello friend
Exemplo de uma resposta SOAP
Mensagem de erro SOAP A resposta também é retornada sem o Header Se a requisição falhar, uma resposta é retornada ao cliente informando o motivo e detalhes específicos da aplicação
Comparação entre Web services e RMI No RMI, um cliente precisa de uma referência de objeto remoto para acessar um método num objeto remoto No Web services, o cliente usa uma URI para invocar uma operação no recurso representado por esta URI No entanto referências remotas e URIs não são muitos similares Referências podem ser criadas assim que objetos são instanciados Web services não podem criar objetos remotos