FISL12. Web Services e Computação em Nuvem com PHP

95

description

Palestra sobre webservices e computação em nuvem com PHP proferida no FISL 12.

Transcript of FISL12. Web Services e Computação em Nuvem com PHP

Page 1: FISL12. Web Services e Computação em Nuvem com PHP
Page 2: FISL12. Web Services e Computação em Nuvem com PHP

Título daApresentação

00/00/0000

Palestrante: Flávio Gomes da Silva Lisboa

    Web Services e Computação em Nuvem

 com PHP

Page 3: FISL12. Web Services 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: FISL12. Web Services e Computação em Nuvem com PHP

Introdução

Page 5: FISL12. Web Services e Computação em Nuvem com PHP

Questão

Espere aí, Web Services e Computação em Nuvem com PHP?

Page 6: FISL12. Web Services e Computação em Nuvem com PHP

Mito

Mas PHP é coisa de sobrinho!

Page 7: FISL12. Web Services e Computação em Nuvem com PHP

Mito

Realmente, mas de sobrinho do Tio Patinhas!

Page 8: FISL12. Web Services e Computação em Nuvem com PHP

PHP

O pensamento por trás do PHPA  web  está  mudando. É  mais  dinâmica  e  mais programável do que nunca. Essa novo web programável precisa de  ferramentas e sistemas  rápidos, seguros e escaláveis que podem falar uns com os outros de uma maneira  que  é  tanto  útil  quanto  acessível. A  curva  de aprendizagem  tem  que  ser  rasa  e  os  resultados imediatos.

Rasmus Lerdorf

Page 9: FISL12. Web Services e Computação em Nuvem com PHP

PHP

O pensamento por trás do PHP

Page 10: FISL12. Web Services e Computação em Nuvem com PHP

PHP

http://streaming.serpro.gov.br/cisl/php.html

CISL

Page 11: FISL12. Web Services e Computação em Nuvem com PHP

Fatos do 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 12: FISL12. Web Services e Computação em Nuvem com PHP

Fatos do PHP

PHP tem várias extensões, para diversos propósitos

● Manipulação de formatos de áudio

● Serviços de autenticação

● Calendário e eventos

● Linha de comando

● Compressão de arquivos

● Processamento de cartão de crédito

● Criptografia

● Web services

● Banco de dados

● Sistema de arquivos

● Linguagem humana

● Processamento e geração de imagens

● E­mail

● Matemática

● Controle de Processo

● Processamento de texto

● etc

Page 13: FISL12. Web Services e Computação em Nuvem com PHP

Fatos do PHP

Muitas Bibliotecas e Farta Documentação

Page 14: FISL12. Web Services e Computação em Nuvem com PHP

Fatos do PHP

Domínios com PHP no mundo

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

Page 15: FISL12. Web Services e Computação em Nuvem com PHP

Fatos do PHP

Quem usa PHP

Page 16: FISL12. Web Services e Computação em Nuvem com PHP

Fato

OK, JÁ ENTENDI!

PODEMOS IR PARA OS WEB SERVICES?

Page 17: FISL12. Web Services 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 18: FISL12. Web Services 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 19: FISL12. Web Services 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 20: FISL12. Web Services 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 21: FISL12. Web Services 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 22: FISL12. Web Services e Computação em Nuvem com PHP

O que é um serviço?

Você fala XML?

SIM!

Ah, bom, então 

podemos conversar.

Page 23: FISL12. Web Services e Computação em Nuvem com PHP

O que é um serviço?

XMLXML

Page 24: FISL12. Web Services e Computação em Nuvem com PHP

O que é um serviço?

C

PHP

Python

.NET

Ruby

Java

XML

XML

XML

XML

XML

Page 25: FISL12. Web Services 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 26: FISL12. Web Services e Computação em Nuvem com PHP

PHP

PHP 5 tem 13 extensões para XML.

Page 27: FISL12. Web Services e Computação em Nuvem com PHP

PHP

Existem várias classes para construir webservices...

269

Page 28: FISL12. Web Services e Computação em Nuvem com PHP

PHP

Mas qual usar?

Page 29: FISL12. Web Services e Computação em Nuvem com PHP

PHP

Sugestão:

Page 30: FISL12. Web Services 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 31: FISL12. Web Services e Computação em Nuvem com PHP

E também uma biblioteca de classes PHP com baixo acoplamento

Page 32: FISL12. Web Services e Computação em Nuvem com PHP

E também uma biblioteca de classes PHP com baixo acoplamento

Acoplamento das classes Zend Framework

Page 33: FISL12. Web Services e Computação em Nuvem com PHP

Baixo acoplamento é importante!

Page 34: FISL12. Web Services e Computação em Nuvem com PHP

Zend Framework possui classes para expor e consumir webservices em vários formatos

Zend_XmlRpc Zend_Soap Zend_Rest

By Pixar

By PixarBy Pixar

Referência: Zend Framework versão 1.11

Page 35: FISL12. Web Services 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 36: FISL12. Web Services 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 37: FISL12. Web Services 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 38: FISL12. Web Services 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 39: FISL12. Web Services e Computação em Nuvem com PHP

Zend_XmlRpc_Client

●Zend_XmlRpc_Client_HttpException●Zend_XmlRpc_Client_FaultException

Exceções

Page 40: FISL12. Web Services 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 41: FISL12. Web Services e Computação em Nuvem com PHP

Zend_XmlRpc_Server

Namespaces

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

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

Page 42: FISL12. Web Services 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 43: FISL12. Web Services 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 44: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Soap

SOAP # SOA (Service Oriented Architecture).

juddi.apache.org

Page 45: FISL12. Web Services 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 46: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Soap

Page 47: FISL12. Web Services 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 48: FISL12. Web Services 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 49: FISL12. Web Services 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 50: FISL12. Web Services 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 51: FISL12. Web Services 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 52: FISL12. Web Services 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 53: FISL12. Web Services 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 54: FISL12. Web Services 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 55: FISL12. Web Services 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 56: FISL12. Web Services 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 57: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Rest_Server

Expondo funções

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

Page 58: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Rest_Server

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

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

Page 59: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Json

Quase esquecemos do JSON!

Page 60: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Json_Server

Criando um servidor JSON

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

Page 61: FISL12. Web Services 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 62: FISL12. Web Services 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 63: FISL12. Web Services 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 64: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Amazon

Permite utilizar os webservices da Amazon

Page 65: FISL12. Web Services 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 66: FISL12. Web Services 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 67: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Amazon_Sqs

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

Page 68: FISL12. Web Services 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 69: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Delicious

Registro de bookmarks

Page 70: FISL12. Web Services 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 71: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Ebay

Optimus Prime by Hasbro Bumblebee by Hasbro

Page 72: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Flickr

Page 73: FISL12. Web Services 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 74: FISL12. Web Services 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 75: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Recaptcha

X X X X

Page 76: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_ShortUrl

Page 77: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Slideshare

Page 78: FISL12. Web Services 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 79: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Technorati

Technorati é um mecanismo de busca de blogs

Page 80: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Twitter

Page 81: FISL12. Web Services 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 82: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Service_Yahoo

Page 83: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Feed

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

Page 84: FISL12. Web Services e Computação em Nuvem com PHP

Zend_GData

Page 85: FISL12. Web Services e Computação em Nuvem com PHP

Computação em Nuvem

Page 86: FISL12. Web Services e Computação em Nuvem com PHP

Computação em Nuvem

web services

Page 87: FISL12. Web Services e Computação em Nuvem com PHP

Zend_GData

Page 88: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Cloud

Serviço de Documentos Serviço de Filas

Serviço de Armazenamento

Page 89: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Cloud

Serviço de Documentos Serviço de Filas

Serviço de Armazenamento

Zend_Cloud_Adapter

Serviço de documentos Serviço de filas Serviço de armazenamento

Page 90: FISL12. Web Services e Computação em Nuvem com PHP

Zend_Cloud

Escolha a nuvem!

Page 91: FISL12. Web Services e Computação em Nuvem com PHP

Dica: para brincar

Page 92: FISL12. Web Services 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 93: FISL12. Web Services e Computação em Nuvem com PHP

Literatura Zend Framework

Amazon.com: 70 resultados para Zend Framework

Page 94: FISL12. Web Services e Computação em Nuvem com PHP

QuestõesALGUMA PERGUNTA

?

Page 95: FISL12. Web Services e Computação em Nuvem com PHP

Contato

[email protected]@fgsl

www.fgsl.eti.brhttp://romocavaleirodoespaco.blogspot.com