Tópicos de Sistemas de Informação A

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de Sistemas Distribuídos Web Services
Advertisements

Web Services aplicado à Computação em Grade
Sistemas Distribuídos Baseados na Web
Web Services Um Web Service é um bloco de software que pode ser acedido pela Internet e usado remotamente por outras aplicações Infra-estrutura para a.
Infra-Estrutura de TI: Hardware e Software
Bruno Rafael de Oliveira Rodrigues
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
Sistemas Distribuídos Web Services
Comunicação Distribuída
Introdução aos Serviços Web
Web Services Erika Hmeljevski Estefania Borm Leonardo Malagoli
SOA e Web Services Aluno: Thiago Caproni Tavares
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Área de Desenvolvimento de Sistemas
DAS Sistemas Distribuídos para Automação Industrial
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Sistemas Distribuídos
SOA - Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a serviços
Tópicos de Sistemas de Informação A
Tópicos de Sistemas de Informação A
Middleware e Sistemas Distribuídos
Minicurso PHP – Parte 2 João Paulo Ribeiro jpribeiro.com
Arquitetura CORBA e Objetos Distribuídos
Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação.
Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação.
Tópicos de Sistemas de Informação A
Web Services Uninorte Semana de Tecnologia da Informação
CORBA e Desenvolvimento Baseado em Componentes
Web Services Desmistificando o pré-conceito.
Marcela Bezerra da Silva Cin - UFPE
Concorrência e Java RMI
Conceitos de J2EE para a WEB
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 05.
Professor: Márcio Amador
FIPA THE FOUNDATION FOR INTELLIGENT PHYSICAL AGENTS
Universidade da Beira Interior Fiabilidade de Sistemas Informáticos Nuno Magarreiro n.º
Tecgraf PUC-Rio maio de 2011 Principais conceitos de CORBA.
CORBA Apresentação do Padrão CORBA Maurício Maron Mendes Ramiro Pereira de Magalhães
Da Introdução à Prática
Java RMI João Gabriel (jggxm).
IIS Web Server.
Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação.
RPC and Web Service André Pereira.
Comunicação.
Prof.°: João Henrique Disciplina: SOR II
Gerenciamento baseado na Web
Protocolo MODBUS [ Slide de Abertura com a presença de outras logomarcas ] A segunda opção é a mais apropriada para a presença de mais de duas marcas.
.NET com C#.  Conceitos e Características  Vantagens do SOAP  Descrição do WebService  Gerenciamento de Estados  UDDI  Novidades do Framework 2.0.
Integrando sistemas através de HTTP + XML. * Muitos processos manuais começam a ser realizados online. * Ferramentas desenvolvidas precisavam ser interoperáveis.
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Web Services: Conceitos e Transações
Universidade Federal de Alagoas Instituto de Computação - IC Redes de Computadores 2 Serviços Web Felipe Santos José Oswaldo.
SyncML Apresentação –Introdução Motivação Iniciativa SyncML –XML (eXtensible Markup Language) –Protocolos SyncML –Sincronização em duas vias –Conclusões.
WSDL Web Services Description Language. Tecnologias Relacionadas Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI.
1 Web Services Uma Introdução Jacques P. Sauvé DSC/UFCG 2003.
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Pesquisa sobre o uso de Web Service Alunos:Felipe Silveira Israel Andreis Programação Distribuída e Paralela Prof. Dr. Cláudio F. R. Geyer.
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Principais conceitos de CORBA.
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
SOA SOA – Arquitetura Orientada a Serviços Conceitos e Aplicações
YOUR LOGO Tópicos Avançados em Internet Prof. Lincoln Ferreira Dantas Sistemas de Informação UNIESP – Presidente Epitácio.
Segurança em Comércio Eletrônico Comércio tradicional realizado de maneira centralizada cercado de restrições legais Comércio eletrônico realização de.
Web Services / SOA. O cenário de TI nas corporações Novas tendências batiam à porta das corporações Migraram o foco do “gerenciamento de dados” para o.
Web Services Conceitos e Tecnologias Amanda Modesto Suzanna Sandes.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Web Services Conceitos e Tecnologias Amanda Modesto Suzanna Sandes.
Frederico Silva Guimarães OWL-S.
Transcrição da apresentação:

Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

(Web Services Definition Language) WSDL (Web Services Definition Language)

Motivação

Definição Proporciona modelo e formato XML para descrever Web Services O seu principal objetivo é descrever as interfaces apresentadas e apontar a localização dos seus serviços, permitindo que o cliente os acesse de maneira confiável. Por ser um documento XML, sua leitura se torna fácil e acessível. Versão 1.1 – Março 2001 Versão 1.2 – Working Draft - Julho 2002 Versão 2.0 Recomendação W3C em 26 de Junho de 2007 Esforço conjunto entre Microsoft, IBM e Ariba

Independência de plataforma O cliente não precisa saber qual a linguagem do programação ou plataforma de execução em que o provedor de serviços está baseado. A descrição do serviço em conjunto com a infra-estrutura SOAP adjacente encapsula detalhes tanto no lado do cliente quanto no lado do provedor.

O uso de WSDL na arquitetura de Web Services é em geral dividido em duas partes: Abstrata: interface do serviço Abstrai a funcionalidade oferecida pelo serviço Concreta: implementação do serviço. Detalhes concretos do serviço de como e onde a funcionalidade é oferecida Cada parte pode ser definida de maneira independente e conseqüentemente reutilizada por outras aplicações.

Elementos da WSDL WSDL document Types (type information for the document, e.g., XML Schema) Message 1 Message 2 Message 3 Message 4 Message 5 Message 6 Abstract description of the service Operation 1 Operation 2 Operation 3 Interface (abstract service) binding 1 binding 2 binding 3 binding 4 endpoint 1 endpoint 2 endpoint 3 endpoint 4 Concrete description of the service Service (the interface in all its available implementations)

Interface de serviço Descrição abstrata Descreve de forma abstrata o WS em termos de mensagens que ele envia e recebe O tipo de sistema usado pra descrever as mensagens (baseado em XML Schema) As mensagens usadas para invocar o serviço Define como operação o agrupamento de uma ou mais mensagens segundo um padrão de troca de mensagens O padrão de troca de mensagens identifica a seqüência e a cardinalidade das mensagens enviadas/recebidas bem como quem está as enviando/recebendo Uma interface que agrupa as operações que constituem um serviço abstrato Semelhante a IDL (CORBA).

Implementação do serviço Descrição concreta Define um serviço como um agrupamento de pontos de serviço (endpoints) que implementam a interface Define os pontos de serviço ou endereço de rede de onde ocorre a associação Associa a interface ao protocolo de transporte A implementação de serviço é um documento WSDL que descreve como uma interface particular é implementada por um determinado provedor de serviços. 

Componentes Tipos de dados: Denominados de tipos <types>. Parâmetros de entrada e saída de um serviço: Denominados de mensagem <message>. O relacionamento entre parâmetros de entrada e saída: Assinatura do método, denominada de operações <operation>. Agrupamento lógico de operações: Denominado de tipo de porta <portType>. O protocolo a ser usado para acessar os métodos de um objeto: Denominado de vínculo, define o protocolo a ser usado para acessar os métodos de um objeto (SOAP, HTTP ou MIME). Endereço do serviço. define a localização fisica de um serviço <service>.

Elementos da Interface de Serviço Tipos (types) Definem os tipos de dados que são utilizados para descrever as mensagens. Para melhor interoperabilidade e independência de plataforma usa-se sintaxe de XSD (XML Schema Documents)

Exemplo <types> <schema targetNamespace="http://example.com/stockquote.xsd“ xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> ... </element> </schema> </types>

Elementos da Interface de Serviço Mensagens (message) Representam uma definição abstrata dos dados que serão usados em uma operação. Cada elemento message recebe um ou mais elementos <part>, que formam as partes reais da mensagem. O elemento <part> define o conteúdo da mensagem representando os parâmetros que são passados e a resposta que o serviço retorna Cada <part> pode ser comparada com os parametros de uma chamada de função em uma linguagem de programação tradicional

Exemplo <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/>

Elementos da Interface de Serviço Operações (operation) Definição abstrata de uma ação que um serviço pode executar. Indica a ordem dos parametros usados nas operações. Existem quatro diferentes tipos de mensagens de operações: Operação unidirecional: Define uma mensagem enviada de um cliente para um serviço, sem resposta. Solicitação-Resposta: O mais utilizado. O cliente envia uma solicitação a um serviço, e recebe como resultado uma mensagem de resposta com o resultado dessa solicitação. Pode ser vista como um RPC (remote procedure call). Pedido-Resposta: Não utilizada freqüentemente. Define uma mensagem enviada do serviço para o cliente, resultando em uma mensagem enviada do cliente de volta para o serviço. Notificação: É quando o serviço envia uma mensagem para o cliente

Elementos da Interface de Serviço Operação unidirecional <portType name=“....."> <operation name=“SetPrice"> <input message="tns:setPriceInput"/> <documentation> text </documentation> </operation> </portType>

Elementos da Interface de Serviço Solicitação-resposta <portType name=“....."> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> <fault message="tns:FaultMessagePrice"/> <documentation> text </documentation> </operation> </portType>

Elementos da Interface de Serviço Pedido-resposta <portType name=“....."> <operation name="GetClientPrice"> <output message="tns:RequestPrice"/> <input message="tns:GetPriceInput"/> <fault message="tns:FaultMessagePrice"/> <documentation> text </documentation> </operation> </portType>

Elementos da Interface de Serviço Notificação <portType name=“....."> <operation name=“SendNotification"> <output message="tns:NotifyClient"/> <documentation> text </documentation> </operation> </portType>

Elementos da Interface de Serviço Tipos de portas (portType) O elemento <portType> é o elementos mais importante de um WSDL Descreve um web service, as operações que podem ser efetuadas e as mensagens de entrada e saida que estão envolvidas Agrupa um conjunto de operações Pode ser comparado a um módulo ou classe em uma linguagem de programação tradicional

Exemplo <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> <operation name=“SendNotification"> <output message="tns:NotifyClient"/> </operation> </portType>

Elementos da Interface de Serviço Ligações (binding) O elemento binding mapeia os elementos operation em um elemento portType, para um protocolo especifico. Associa o elemento portType ao protocolo SOAP, utilizando-se de um elemento de extensão SOAP chamado <wsdlsoap:binding>, através de dois parâmentos: protocolo de transporte e o estilo da requisição (rpc ou document).

Exemplo <binding name='ExemploBinding' type='tns:ExemploPortType'>   <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>   <operation name='getNome'>     <soap:operation soapAction='exemplo#getNome'/>     <input>        <soap:body use='encoded' namespace='exemplo‘          encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>      </input>      <output>        <soap:body use='encoded' namespace='exemplo‘    encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>     </output>   </operation> </binding>

Implementação do Serviço Porta (port) Especifica um endereço para uma ligação, definindo então um endpoint único.

Exemplo <port name='ExemploPort' binding='ExemploBinding'>     <soap:address location='http://127.0.0.1/servidor.php'/>   </port>

Implementação do Serviço Serviço (service) Define um ws agregando um conjunto de portas relacionados entre si. Exemplo <service name='ExemploService'> <documentation>My first service</documentation>   <port name='ExemploPort' binding='ExemploBinding'>      <soap:address location='http://127.0.0.1/servidor.php'/>    </port> </service>

Resumo dos elementos Types– define os tipos de dados usados nas trocas de mensagens Message– representa de forma abstrata os dados que estão sendo transmitidos Operation– descrição abstrata de uma ação suportada pelo serviço Port Type– um conjunto abstrato de operações suportadas por um ou mais pontos de serviço Binding– associa concretamente o elemento portType a um protocolo (geralmente SOAP) Port– um único ponto de servico (endpoint) definido como uma combinação de pontos de ligação (binding) e endereços de rede (network address). Service– um conjunto de pontos de serviços (endpoints).

Exemplo prático A seguir é apresentado um exemplo prático de um ws. Primeiro é definido o arquivo wsdl É apresentada a implementação do servidor Por fim o código fonte do cliente usado para consumir o ws

<?xml version ='1.0' encoding ='ISO­8859­1' ?> <definitions name='Exemplo'    targetNamespace='http://example.org/Exemplo'    xmlns:tns='http://example.org/Exemplo'    xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'    xmlns:xsd='http://www.w3.org/2001/XMLSchema'    xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'    xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'    xmlns='http://schemas.xmlsoap.org/wsdl/'> <message name='getNomeRequest'>    <part name='codigo' type='xsd:string'/> </message> <message name='getNomeResponse'>    <part name='resultado' type='xsd:string[]'/> <portType name='ExemploPortType'>     <operation name='getNome'>       <input message='tns:getNomeRequest'/>      <output message='tns:getNomeResponse'/>    </operation> </portType> Codigo fonte do arquivo exemplo.wsdl

Continuação do codigo fonte do arquivo exemplo.wsdl <binding name='ExemploBinding' type='tns:ExemploPortType'>    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>    <operation name='getNome'>      <soap:operation soapAction='exemplo#getNome'/>      <input>        <soap:body use='encoded' namespace='exemplo'          encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>      </input>      <output>        <soap:body use='encoded' namespace='exemplo'          encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>      </output>    </operation> </binding> <service name='ExemploService'>    <port name='ExemploPort' binding='ExemploBinding'>      <soap:address location='http://127.0.0.1/servidor.php'/>    </port> </service> </definitions> Continuação do codigo fonte do arquivo exemplo.wsdl

Codigo fonte do arquivo servidor.php function getNome($codigo) {    if (!$codigo)             throw new SoapFault('Client','Parametro nao preenchido');      // conecta ao Banco de Dados     $id = @pg_connect("dbname=samples user=postgres");     if (!$id)         throw new SoapFault("Server", "Conexao nao estabelecida");     // realiza consulta ao Banco de Dados     $result = pg_query($id, "select * from clientes " .                             "where codigo=$codigo");     $matriz = pg_fetch_all($result);      if ($matriz == null)   throw new SoapFault("Server", "Cliente nao encontrado");     // retorna os dados.     return $matriz[0]; } // instancia servidor SOAP $server = new SoapServer("exemplo.wsdl", array('encoding'=>'ISO­8859­1'));  $server­>addFunction("getNome");  $server­>handle();  ?> Codigo fonte do arquivo servidor.php

Codigo fonte do arquivo cliente.php ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache $client = new SoapClient("http://127.0.0.1/exemplo.wsdl", array( "trace" => 1, "exceptions" => 1)); try { print "<b>Funcoes do disponiveis<br></b><pre>"; print_r($client->__getFunctions()); print “</pre>    // realiza chamada remota de método    // $retorno = $client­>getNome(3);   // echo 'Código' . $retorno['codigo']   . '<br/>';      // echo 'Nome’ . $retorno['nome']     . '<br/>'; } catch (SoapFault $exception) { print "<pre>"; print_r($exception); print "</pre>"; } ?> Codigo fonte do arquivo cliente.php