Processamento Paralelo Web Services Aula de hoje: Web Services (Serviços Web) Evolução da Web para apoiar interação entre componentes Tecnologias para Web Services Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) 2008/01 - INF02799 Com slides de Luís Ferreira Pires Universidade de Twente Aplicações na Internet Internet evolvou a partir da ARPANet TCP/IP Serviços de aplicação e comunicação desenvolvidos usando TCP/IP Protocolos de aplicação mais antigos SMTP (Simple Mail Transfer Protocol) FTP (File Transfer Protocol) Web HTTP (HyperText Transfer Protocol) (HyperText Markup Language) Tecnologias básicas da Web Browser GET HTTP RESPONSE TCP HTTP Tecnologias básicas da Web HTTP 1.0 One TCP connection for each request HTTP 1.1 Connection persistence Proxies, gateways and tunnels: Intermediaries between clients and servers for load balancing, security, data translations, etc. Security handled using Secure Sockets Layer (SSL) and HTTPS (Secure HTTP) Cookies can be used to store information on the client side (tracking) Benefícios da Web como plataforma aplicações Aplicação do cliente (navegador/browser) de uso geral e relativamente barato (open source no Linux por exemplo) e estável Permitiu e permite o desenvolvimento de milhares de aplicações... Internet banking, Internet shopping, etc. A Web foi projetada originalmente para umentos HTTP foi projetado para isso (uma estrutura de cliente/servidor bem definida, com clientes thin ), mas é claro uma tecnologia de sucesso acaba sendo adotada além dos seus propósitos originais, 1
side extension side extensions Browser JVM Java Applet CGI-URL CGI program Browser CGI = Common Gateway Interface Limitações CGI Application server Escalabilidade limitada Normalmente um processo é iniciado para cada nova requisição A aplicação do cliente é um navegador, que espera receber páginas Ou seja, não é uma aplicação cliente específica, mas está ligada diretamente à apresentação para usuários component runtime environment Application server other middleware databases J2EE Application server Oferece suporte para várias tecnologias de middleware e de servidor (tudo baseado em Java) Java pages Servlets EJB beans CORBA Web services (, ) Web protocols () XML support (DOM and SAX) Java Message Service (JMS) etc. Tecnologias (padrões) básicos XML Extensible Markup Language como linguagem de especificação Protocol para interações 1. Formato de mensagems 2. Padrões interação 3. Bindings para vários protocolos que podem ser usados para a troca de mensagens (HTTP, SMTP) Descrições de serviço ( interfaces ) Naturalmente, o mundo não Java tem suas tecnologias equivalentes (.NET managed objects, ASP,...) 2
Tecnologias (padrões) básicos side Stub specification compiler side Service provider Skeleton Linguagem para especificar as interfaces de serviços Especificações são umentos XML Define que mecanismos devem ser usados para acessar os serviços Já que Web Services podem usar vários protocolos para a troca de mensagems! Define a localização de serviços Web protocol entity messages protocol entity Inclui interfaces e bindings (mecanismos para acessar o serviço) suporta diferentes paradigmas de interação (síncrono e assíncrono) Desenvolvedor do serviço publica uma descrição do serviço para clientes em potencial Como um cliente vê um serviço web? Exemplo getbookprice isbn price message operation BookQuote WS message Types Messages Operations Port Types Bindings Protocol, SMTP Encoding Ports Service interface definition (abstract part) endpoint definition (concrete part) Port type logical collection of operations Operation simple message exchange Message unit of communication XML schemas are used as a type system for common understanding of data also uses the built-in basic data types to define more complex data types 3
Messages have a name and parts (simple or complex data types) Operations can be of four basic types: One-way (asynchronous, client initiated) Notification (asynchronous, service initiated) Request-response (synchronous, client initiated) Solicit-response (synchronous, service initiated) example <?xml version="1.0" encoding="utf-8"?> <definitions name="bookquotews" targetnamespace="http://www.example.com/bookquote" xmlns:mh="http://www.example.com/bookquote" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns="http://schemas.xmlsoap.org/wsdl/"> <!-- Message describes input and output parameters --> <message name="getbookpricerequest"> <part name="isbn" type="xsd:string"/> </message> <message name="getbookpriceresponse"> <part name="price" type="xsd:float"/> </message> example (cont.) <!-- PortType describes abstract interface of Web service --> <porttype name="bookquote"> <operation name="getbookprice"> <input name="isbn" message="mh:getbookpricerequest"/> <output name="price" message="mh:getbookpriceresponse"/> </operation> </porttype> concrete part Bindings message encodings and protocol bindings of a port type Operations in RPC style or ument-style Protocols (e.g., / HTTP, / SMTP) or literal encodings Ports (endpoints) Combine bindings with network address Services Logical groupings of ports example <!-- Binding defines the protocols and encoding styles --> <binding name="bookpricebinding" type="mh:bookquote"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getbookprice"> <soap:operation style="rpc"/> <input> <soap:body use="literal" namespace="http://www.example.com/bookquote"/> </input> <output> <soap:body use="literal" example <!-- Service defines the address of Web service --> <service name="bookpriceservice"> <port name="bookpriceport" binding="mh:bookpricebinding"> <soap:address location="http://www.example.com/bookquote"/> </port> </service> </definitions> namespace="http://www.example.com/bookquote"/> </output> </operation> </binding> 4
Summary: J2EE Web Services JSE (JAX-RPC service endpoint) Implementação simples com Java package helloservice.endpoint; import javax.jws.webservice; skeleton JAX-RPC servlet container WS @WebService() public class Hello { private String message = new String("Hello, "); J2EE Application server JAX-RPC (stubs) SAAJ () JAXP (XML) stub application XML public void Hello() { @WebMethod() public String sayhello(string name) { return message + name + ".";, vs. CORBA Correspondência com CORBA (não muito precisa) (XML) IDL + IOR GIOP/IIOP? Encoding CDR APIs específicas interfaces POA/ORB/Stubs Web Services x Middleware de Objetos Web services não são substitutos para middleware como um todo Não há ambiente de execução padronizado Não há portabilidade! Só define as regras para interoperabilidade Não assume nada sobre o ambiente de execução! Não há mapeamentos padronizados para linguagens de programação Não há access transparency! Apesar de que várias APIs (como Java), já surgiram para lidar com esse problema Não dá para ter componentes reusáveis; a filosofia é diferente, orientada a serviços Middleware evolution Middleware evolution EJB B2B, Global Enterprise Single Domain(Enterpris e) Complex Application Application Program Integration between domains between application (inside one Inside one domain) application (more than one process) Inside one process CORBA DCO M EAI Tight Coupled Loose 5
Middleware evolution CORBA DCO M EJB Web Services Utilities (UDDI) EAI Conceito de Serviço É oferecido por um provedor para um cliente Diferentes donos ou domínios administrativos Serviço agrega valor para o cliente, gera valor para o provedor (troca de valor) Serviço tem propósito Serviço é oferecido por interfaces ( service delivery channel ) sem revelar organização interna Serviço pode ser compartilhado, reutilizado Serviço pode ser composto (ecossistema de serviços) Serviço pode ser descrito Pode ser descoberto Serviço tem nível de qualidade possivelmente definido em contrato entre provedor e cliente Service-Oriented Computing Software as a Service (SaaS) Platform as a Service (PaaS) http://en.wikipedia.org/wiki/google_app_engine Application containers Infrastructure as a Service (IaaS) Cloud Computing Ausência ou redução de custos fixos Virtualização Economias de escala Perda de controle (também sobre os dados) 2ª Prova Parcial Conceitos de Speed-up, Eficiência Padrões de Projeto para Sistemas Distribuídos Event/Notification Service (5.4, 20.3.2, 20.3.3) The Many Faces of Publish/Subscribe (artigo) Técnicas de Decomposição de Problemas: Capítulo 3 de Ananth Grama, Anshul Gupta, George Karypis, and Vipin Kumar Introduction to Parallel Computing, Addison Wesley, 2003. Decomposição de dados, exploratória, recursiva, especulativa Arquitetura Mestre-Escravo (2º Trabalho) 2º Trabalho http://java.sun.com/s/books/tutorial/essenti al/concurrency/sync.html http://java.sun.com/s/books/tutorial/collecti ons/implementations/index.html Synchronized Methods public class SynchronizedCounter { private int c = 0; public synchronized void increment() { c++; public synchronized void decrement() { c--; public synchronized int value() { return c; 6
Synchronized Statements public class SynchronizedCounter { private int c = 0; public void increment() { synchronized(this) { c++; // fazer outras coisas não sincronizadas aqui public synchronized void decrement() { c--; Roteiro Terça-feira 07/07 Demo-day, obrigatório como parte da avaliação do 2º trabalho Quinta-feira 09/07 2ª prova parcial Terça-feira 14/07 Entrega dos Resultados Quinta-feira 16/07 Prova final 7