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

Post on 26-May-2015

1.739 views 0 download

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

Título daApresentação

00/00/0000

Palestrante: Flávio Gomes da Silva Lisboa

    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.

Introdução

Questão

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

Mito

Mas PHP é coisa de sobrinho!

Mito

Realmente, mas de sobrinho do Tio Patinhas!

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

PHP

O pensamento por trás do PHP

PHP

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

CISL

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

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

Fatos do PHP

Muitas Bibliotecas e Farta Documentação

Fatos do PHP

Domínios com PHP no mundo

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

Fatos do PHP

Quem usa PHP

Fato

OK, JÁ ENTENDI!

PODEMOS IR PARA OS WEB SERVICES?

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

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

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

Reflexão

É  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?

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?

O que é um serviço?

Você fala XML?

SIM!

Ah, bom, então 

podemos conversar.

O que é um serviço?

XMLXML

O que é um serviço?

C

PHP

Python

.NET

Ruby

Java

XML

XML

XML

XML

XML

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

serviços se deseja consumir

Implicação

PHP

PHP 5 tem 13 extensões para XML.

PHP

Existem várias classes para construir webservices...

269

PHP

Mas qual usar?

PHP

Sugestão:

Uma infraestrutura completa para criar aplicações PHP

Zend Framework é uma poderosa biblioteca de classes para PHP 

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

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

Acoplamento das classes Zend Framework

Baixo acoplamento é importante!

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

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. "

Zend_XmlRpc_Client

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

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

Chamada de método remoto

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

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

Zend_XmlRpc_Client

●Zend_XmlRpc_Client_HttpException●Zend_XmlRpc_Client_FaultException

Exceções

Zend_XmlRpc_Server

Criando um servidor XML­RPC

$server = new Zend_XmlRpc_Server();

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

Zend_XmlRpc_Server

Namespaces

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

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

Zend_XmlRpc

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

By Fox

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. 

Zend_Soap

SOAP # SOA (Service Oriented Architecture).

juddi.apache.org

Zend_Soap

Calvin, by Bill Watterson

De que adianta ter funcionalidades se 

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

Zend_Soap

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');

Zend_Soap_Server

Criando um servidor SOAP

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

$soap->setClass('HelloWorldService');

$soap->handle();

Zend_Soap_Server

Gerando o WSDL automaticamente

$autodiscover = new Zend_Soap_AutoDiscover();

$autodiscover->setClass('HelloWorldService');

$autodiscover->handle();

Zend_Soap

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

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

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

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

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"

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();

Zend_Rest_Client

Verificação de sucesso

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

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

}

Zend_Rest_Server

Criando um servidor REST

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

Zend_Rest_Server

Expondo funções

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

Zend_Rest_Server

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

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

Zend_Json

Quase esquecemos do JSON!

Zend_Json_Server

Criando um servidor JSON

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

Zend Framework também inclui classes prontas para consumir webservices

Zend_Cloud Zend_Feed Zend_GData

Zend_Service

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.

Zend_Service_Akismet

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

Zend_Service_Amazon

Permite utilizar os webservices da Amazon

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

Zend_Service_Amazon_S3

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

Zend_Service_Amazon_Sqs

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

Zend_Service_Audioscrobbler

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

Zend_Service_Delicious

Registro de bookmarks

Zend_Service_DeveloperGarden

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

Zend_Service_Ebay

Optimus Prime by Hasbro Bumblebee by Hasbro

Zend_Service_Flickr

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.

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

Zend_Service_Recaptcha

X X X X

Zend_Service_ShortUrl

Zend_Service_Slideshare

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...

Zend_Service_Technorati

Technorati é um mecanismo de busca de blogs

Zend_Service_Twitter

Zend_Service_WindowsAzure

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

Zend_Service_Yahoo

Zend_Feed

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

Zend_GData

Computação em Nuvem

Computação em Nuvem

web services

Zend_GData

Zend_Cloud

Serviço de Documentos Serviço de Filas

Serviço de Armazenamento

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

Zend_Cloud

Escolha a nuvem!

Dica: para brincar

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

Literatura Zend Framework

Amazon.com: 70 resultados para Zend Framework

QuestõesALGUMA PERGUNTA

?

Contato

flavio.lisboa@serpro.gov.br@fgsl

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