Webservices e Computação em Nuvem com PHP

81

description

Palestra sobre a API do Zend Framework para construção e consumo de webservices e serviços de computação em nuvem, realizada no IV Congresso Internacional Software Livre e Governo Eletrônico

Transcript of Webservices e Computação em Nuvem com PHP

Page 1: Webservices e Computação em Nuvem com PHP
Page 2: Webservices e Computação em Nuvem com PHP

Título daApresentação

00/00/0000Palestrante: Flávio Gomes da Silva Lisboa

Web Services e Computação em Nuvem com PHP

Page 3: Webservices e Computação em Nuvem com PHP

Palestrante

Bacharel em Ciência da Computação com pós-graduação em Aplicações Corporativas usando Orientação a Objetos e Tecnologia Java pela Universidade Tecnológica Federal do Paraná. Já atuou como programador em empresas privadas de informática e funcionário de carreira do Banco do Brasil, onde chegou a analista na diretoria internacional. Atualmente é consultor tecnológico da Coordenação Estratégica de Tecnologia do Serviço Federal de Processamento de Dados (Serpro). Foi professor na pós-graduação da UNICID e é instrutor de cursos técnicos na Tempo Real Eventos. Foi membro do time oficial de tradução do Zend Framework e autor de três livros sobre o tema. Tem experiência na área de Ciência da Computação, com ênfase em Software Livre, atuando principalmente nos seguintes temas: Java, PHP, padrões, frameworks, MVC e objetos.

Page 4: Webservices e Computação em Nuvem com PHP

Reflexão

Dr. Manhattan, created by Alan Moore and Dave Gibbons

Page 5: Webservices e Computação em Nuvem com PHP

A ideia de software como produto perde sentido em um mundo onde não é preciso instalar programas para utilizá-los.

Reflexão

Fonte: http://silvacarvalho.net

Page 6: Webservices e Computação em Nuvem com PHP

A metáfora de escrever software não se aplica a um mundo onde você precisa construir aplicações a partir de sistemas que já existem.

Reflexão

Page 7: Webservices e Computação em Nuvem com PHP

O modelo de lucro baseado em venda de licenças de software foi sobrepujado pelo modelo de venda de serviços.

Reflexão

Page 8: Webservices e Computação em Nuvem com PHP

É uma função independente, sem estado (stateless) que aceita uma ou mais requisições e devolve uma ou mais respostas através de uma interface padronizada e bem definida.

Serviços podem também realizar partes discretas de um processo tal como editar ou processar uma transação.

Serviços não devem depender do estado de outras funções ou processos.

A tecnologia utilizada para prover o serviço, tal como uma linguagem de programação, não pode fazer parte da definição do serviço.

O que é um serviço?

Page 9: Webservices e Computação em Nuvem com PHP

Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web services são componentes que permitem às aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, o formato XML.

O que é um serviço?

Page 10: Webservices e Computação em Nuvem com PHP

O que é um serviço?

Você fala XML?

SIM!

Ah, bom, então

podemos conversar.

Page 11: Webservices e Computação em Nuvem com PHP

O que é um serviço?

XMLXML

Page 12: Webservices e Computação em Nuvem com PHP

O que é um serviço?

C

PHP

Python

.NET

Ruby

Java

XML

XML

XML

XML

XML

Page 13: Webservices e Computação em Nuvem com PHP

Não é preciso ter uma aplicação escrita na mesma linguagem daquela cujos

serviços se deseja consumir

Implicação

Page 14: Webservices e Computação em Nuvem com PHP

PHP

Rasmus Lerdorf

Since 1995

Mas na hora de escrever, pense nisto:

Page 15: Webservices e Computação em Nuvem com PHP

PHP

PHP é uma linguagem

● De alta performance● Robusta● Com muitas

funcionalidades● Com extensões em C● Multiplataforma● Compilada

dinamicamente

● Multiparadigma● Que permite

separação em camadas

● Tem baixo custo de treinamento

● Não requer doutorado para usar

Page 16: Webservices e Computação em Nuvem com PHP

Fato

Muitas Bibliotecas e Farta Documentação

Page 17: Webservices e Computação em Nuvem com PHP

Fato

Domínios com PHP no mundo

14/12/2010http://phpadvent.org/2010/usage-statistics-by-ilia-alshanetsky

Page 18: Webservices e Computação em Nuvem com PHP

Fato

Quem usa PHP

Page 19: Webservices e Computação em Nuvem com PHP

PHP

PHP 5 tem 13 extensões para XML.

Page 20: Webservices e Computação em Nuvem com PHP

PHP

Existem várias classes para construir webservices...

269

Page 21: Webservices e Computação em Nuvem com PHP

PHP

Mas qual usar?

Page 22: Webservices e Computação em Nuvem com PHP

PHP

Sugestão:

Page 23: Webservices e Computação em Nuvem com PHP

Uma infraestrutura completa para criar aplicações PHP

Zend Framework é uma poderosa biblioteca de classes para PHP

Page 24: Webservices e Computação em Nuvem com PHP

E também uma biblioteca fracamente acoplada de classes PHP

Page 25: Webservices e Computação em Nuvem com PHP

Que incluem classes para expor e consumir webservices

Zend_XmlRpc Zend_Soap Zend_Rest

By Pixar

By Pixar

By Pixar

Page 26: Webservices e Computação em Nuvem com PHP

Zend_XmlRpc

XML-RPC é descrito como uma "... chamada de procedimento remoto usando HTTP como transporte e XML como codificação. XML-RPC foi projetado para ser o mais simples possível, permitindo que estruturas complexas de dados sejam transmitidas, processadas e devolvidas. "

Page 27: Webservices e Computação em Nuvem com PHP

Zend_XmlRpc_Client

$client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

echo $client->call('test.sayHello');

Chamada de método remoto

Page 28: Webservices e Computação em Nuvem com PHP

Zend_XmlRpc_Client

$client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

$arg1 = 1.1;$arg2 = 'foo';

$result = $client->call('test.sayHello', array($arg1, $arg2));

Chamada de método remoto com passagem de parâmetros

Page 29: Webservices e Computação em Nuvem com PHP

Zend_XmlRpc_Client

$client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

$service = $client->getProxy(); $hello = $service->test->sayHello(1, 2);

Chamada de método remoto com o uso de um proxy

Page 30: Webservices e Computação em Nuvem com PHP

Zend_XmlRpc_Client

●Zend_XmlRpc_Client_HttpException●Zend_XmlRpc_Client_FaultException

Exceções

Page 31: Webservices e Computação em Nuvem com PHP

Zend_XmlRpc_Server

Criando um servidor XML-RPC

$server = new Zend_XmlRpc_Server();

$server->setClass('My_Service_Class');echo $server->handle();

Page 32: Webservices e Computação em Nuvem com PHP

Zend_XmlRpc_Server

Namespaces

$server->setClass('My_Service_Class', 'myservice');

$server->addFunction('somefunc', 'funcs');

Page 33: Webservices e Computação em Nuvem com PHP

Zend_XmlRpc

Observação: não exige descritor de serviços nem qualquer documentação do código PHP.

By Fox

Page 34: Webservices e Computação em Nuvem com PHP

Zend_Soap

SOAP, originado do acrônimo inglês Simple Object Access Protocol, e em português Protocolo Simples de Acesso a Objetos, é um protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída.

Ele se baseia na Linguagem de Marcação Extensível (XML) para seu formato de mensagem, e normalmente baseia-se em outros protocolos da Camada de aplicação, mais notavelmente em Chamada de Procedimento Remoto (RPC) e Protocolo de Transferência de Hipertexto (HTTP), para negociação e transmissão de mensagens.

Page 35: Webservices e Computação em Nuvem com PHP

Zend_Soap

SOAP # SOA (Service Oriented Architecture).

juddi.apache.org

Page 36: Webservices e Computação em Nuvem com PHP

Zend_Soap

Calvin, by Bill Watterson

De que adianta ter funcionalidades se

ninguém as conhece nem sabe como usá-las?

Page 37: Webservices e Computação em Nuvem com PHP

Zend_Soap

Page 38: Webservices e Computação em Nuvem com PHP

Zend_Soap_Client

Chamada de métodos remotos

$client = new Zend_Soap_Client("MyService.wsdl");

$result1 = $client->method1(10);

$result2 = $client->method2(22, 'some string');

Page 39: Webservices e Computação em Nuvem com PHP

Zend_Soap_Server

Criando um servidor SOAP

$soap = new Zend_Soap_Server("http://example.com/soap.php?wsdl");

$soap->setClass('HelloWorldService');

$soap->handle();

Page 40: Webservices e Computação em Nuvem com PHP

Zend_Soap_Server

Gerando o WSDL automaticamente

$autodiscover = new Zend_Soap_AutoDiscover();

$autodiscover->setClass('HelloWorldService');

$autodiscover->handle();

Page 41: Webservices e Computação em Nuvem com PHP

Zend_Soap

Observação: exige as tags PHPDocumentor @param e @return para a geração do WSDL

/** * * @param unknown_type $arg * @return unknown_type */

Page 42: Webservices e Computação em Nuvem com PHP

Zend_Rest

REST (Representational State Transfer) é um estilo arquitetural para sistemas hipermídia distribuídos. Teve origem na tese de doutorado de Roy T. Fielding.

A REST é pretendida como uma imagem do design da aplicação se comportará: uma rede de websites (um estado virtual), onde o usuário progride com uma aplicação selecionando as ligações (transições do estado), tendo como resultado a página seguinte (que representa o estado seguinte da aplicação) que está sendo transferida ao usuário e apresentada para seu uso.

Roy Thomas Fielding

Page 43: Webservices e Computação em Nuvem com PHP

Zend_Rest

O termo REST (...) na atualidade se usa no sentido mais amplo para descrever qualquer interface web simples que utiliza XML e HTTP (ou YAML, JSON, ou texto puro), sem as abstrações adicionais dos protocolos baseados em padrões de trocas de mensagem como o protocolo de serviços web SOAP.

SOAP REST

Page 44: Webservices e Computação em Nuvem com PHP

Zend_Rest_Client

Chamada de métodos remotos

$client = new Zend_Rest_Client('http://framework.zend.com/rest');

echo $client->sayHello('Davey', 'Day')->get(); // "Hello Davey, Good Day"

Page 45: Webservices e Computação em Nuvem com PHP

Zend_Rest_Client

Chamada de métodos remotos

$client = new Zend_Rest_Client('http://framework.zend.com/rest');

$client->sayHello('Davey', 'Day');echo $client->get();

Page 46: Webservices e Computação em Nuvem com PHP

Zend_Rest_Client

Verificação de sucesso

$result = $client->sayHello('Davey', 'Day')->get();if ($result->isSuccess()) {

echo $result; // "Hello Davey, Good Day"

}

Page 47: Webservices e Computação em Nuvem com PHP

Zend_Rest_Server

Criando um servidor REST

$server = new Zend_Rest_Server();$server->setClass('My_Service_Class');$server->handle();

Page 48: Webservices e Computação em Nuvem com PHP

Zend_Rest_Server

Expondo funções

$server = new Zend_Rest_Server();$server->addFunction('sayHello');$server->handle();

Page 49: Webservices e Computação em Nuvem com PHP

Zend_Rest

Observação: exige as tags PHPDocumentor @param e @return

/** * * @param unknown_type $arg * @return unknown_type */

Page 50: Webservices e Computação em Nuvem com PHP

Zend Framework também inclui classes prontas para consumir webservices

Zend_Cloud Zend_Feed Zend_GData

Zend_Service

Page 51: Webservices e Computação em Nuvem com PHP

Zend_Service

Zend_Service é uma classe abstrata que serve como base para implementações de serviços Web, como SOAP ou REST.

As implementações de Zend_Service que vem com Zend Framework provêem suporte para webservices populares.

Page 52: Webservices e Computação em Nuvem com PHP

Zend_Service_Akismet

O serviço Akismet é usado para determinar se dados de entrada constituem-se em um potencial spam.

Page 53: Webservices e Computação em Nuvem com PHP

Zend_Service_Amazon

Permite utilizar os webservices da Amazon

Page 54: Webservices e Computação em Nuvem com PHP

Zend_Service_Amazon_Ec2

Amazon Elastic Cloud Computing (EC2), um webservice que permite lançar e gerenciar instâncias de servidores nos data centers da Amazon.

Green Lantern, by DC Comics

Page 55: Webservices e Computação em Nuvem com PHP

Zend_Service_Amazon_S3

Amazon Simple Storage Service (S3), webservices para armazenar e recuperar qualquer quantidade de dados, a qualquer hora, de qualquer lugar.

Page 56: Webservices e Computação em Nuvem com PHP

Zend_Service_Amazon_Sqs

Amazon Simple Queue Service (SQS) é um sistema de filas de mensagens hospedadas.

Page 57: Webservices e Computação em Nuvem com PHP

Zend_Service_Audioscrobbler

Provê acesso ao banco de dados de usuários, artistas, aĺbuns, faixas, tags, grupos e fóruns da Audioscrobbler.

Page 58: Webservices e Computação em Nuvem com PHP

Zend_Service_Delicious

Page 59: Webservices e Computação em Nuvem com PHP

Zend_Service_DeveloperGarden

DeveloperGarden é a comunidade de desenvolvedores da Deutsche Telekom, que oferece serviços de chamada de voz e SMS via APIs abertas.

Page 60: Webservices e Computação em Nuvem com PHP

Zend_Service_Ebay

Optimus Prime by Hasbro Bumblebee by Hasbro

Page 61: Webservices e Computação em Nuvem com PHP

Zend_Service_Flickr

Page 62: Webservices e Computação em Nuvem com PHP

Zend_Service_LiveDocx

LiveDocx permite gerar documentos a partir de um template. Templates em DOCX, DOC, RTF e TXD podem gerar saída em HTML, PDF e TXT. Imagens BMP, GIF, JPG, PNG e TIFF podem ser intercambiadas para qualquer um desse formatos, incluindo WMF.

Page 63: Webservices e Computação em Nuvem com PHP

Zend_Service_Nirvanix

Provê um Internet Media File System (IMFS), um serviço de armazenamento de arquivos via Internet.

Asterix, Obelix, Ideiafix and Panoramix, by Goscinny and Uderzo

Page 64: Webservices e Computação em Nuvem com PHP

Zend_Service_Recaptcha

X X X X

Page 65: Webservices e Computação em Nuvem com PHP

Zend_Service_ShortUrl

Page 66: Webservices e Computação em Nuvem com PHP

Zend_Service_Slideshare

Page 67: Webservices e Computação em Nuvem com PHP

Zend_Service_Strikeiron

Provê serviços de verificação de e-mail, verificação de endereços, verificação de número de telefones, cálculo de taxa de entrega, alertas e notificações SMS.

Captain America and Alpha Weapon/Vindix/Guardian, by Marvel

Mas...

Page 68: Webservices e Computação em Nuvem com PHP

Zend_Service_Technorati

Technorati é um mecanismo de busca de blogs

Page 69: Webservices e Computação em Nuvem com PHP

Zend_Service_Twitter

Page 70: Webservices e Computação em Nuvem com PHP

Zend_Service_WindowsAzure

WindowsAzure é o ambiente de gerenciamento, hospedagem e desenvolvimento de serviços em nuvem da Microsoft.

Page 71: Webservices e Computação em Nuvem com PHP

Zend_Service_Yahoo

Page 72: Webservices e Computação em Nuvem com PHP

Zend_Feed

RSS (Really Simple Syndication) também é um serviço

Page 73: Webservices e Computação em Nuvem com PHP

Zend_GData

Page 74: Webservices e Computação em Nuvem com PHP

Computação em Nuvem

Page 75: Webservices e Computação em Nuvem com PHP

Computação em Nuvem

web services

Page 76: Webservices e Computação em Nuvem com PHP

Zend_GData

Page 77: Webservices e Computação em Nuvem com PHP

Zend_Cloud

Serviço de Documentos Serviço de Filas

Serviço de Armazenamento

Page 78: Webservices e Computação em Nuvem com PHP

Zend_Cloud

Escolha a nuvem!

Page 79: Webservices e Computação em Nuvem com PHP

Mais informações

http://framework.zend.com/manual http://devzone.zend.com

http://www.ibm.com/developerworks/opensource/library/os-cloud-realities1/index.html

http://www.ibm.com/developerworks/web/library/os-php-cloud1/index.html

Zend Framework

Computação em Nuvem com PHP

Page 80: Webservices e Computação em Nuvem com PHP

Literatura Zend Framework

Amazon.com: 70 resultados para Zend Framework