SlideShare uma empresa Scribd logo
1 de 81
Baixar para ler offline
Título da
Apresentação
Web Services e
Computação em
Nuvem com PHP



Palestrante: Flávio Gomes da Silva Lisboa   00/00/0000
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.
Reflexão




  Dr. Manhattan, created by Alan Moore and Dave Gibbons
Reflexão


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




   Fonte: http://silvacarvalho.net
Reflexão


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.
O que é um serviç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?



       Você fala XML?

                              SIM!



                  Ah, bom,
                   então
                  podemos
                 conversar.
O que é um serviço?




          XML
                      XML
O que é um serviço?




  C               XML           XML         .NET




 PHP                                        Ruby
                          XML
                                      XML


                  XML
Python                                      Java
Implicação




Não é preciso ter uma aplicação escrita
 na mesma linguagem daquela cujos
     serviços se deseja consumir
PHP



Mas na hora de escrever, pense nisto:




                          Rasmus Lerdorf


    Since 1995
PHP


              PHP é uma linguagem
●   De alta performance   ●   Multiparadigma
●   Robusta               ●   Que permite
●   Com muitas                 separação em
     funcionalidades           camadas
●   Com extensões em C
                          ●   Tem baixo custo de
                               treinamento
●   Multiplataforma       ●   Não requer doutorado
●   Compilada                  para usar
     dinamicamente
Fato

Muitas Bibliotecas e Farta Documentação
Fato

Domínios com PHP no mundo




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

  Quem usa PHP
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 fracamente
     acoplada de classes PHP
Que incluem classes para expor e consumir
               webservices




By Pixar
                                            By Pixar
                        By Pixar




  Zend_XmlRpc             Zend_Soap              Zend_Rest
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


  Chamada de método remoto

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

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


 Chamada de método remoto com passagem de parâmetros
$client = new
Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');

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

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


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



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


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


    Exceções



●Zend_XmlRpc_Client_HttpException
●Zend_XmlRpc_Client_FaultException
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




    De que adianta ter
    funcionalidades se
ninguém as conhece nem
   sabe como usá-las?




                         Calvin, by Bill Watterson
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


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


             /**
              *
              * @param unknown_type $arg
              * @return unknown_type
              */
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
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 XXX
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.




Mas...
                                   Captain America and Alpha Weapon/Vindix/Guardian, by Marvel
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




Escolha a nuvem!
Mais informações


                             Zend Framework




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



                    Computação em Nuvem com PHP



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

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




      Amazon.com: 70 resultados para Zend Framework
Contato



flavio.lisboa@serpro.gov.br
            @fgsl

Mais conteúdo relacionado

Mais procurados

REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com JavaJugVale
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosLucas Vegi
 
Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHPelliando dias
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Carl Edwin
 
WebService Restful em Java
WebService Restful em JavaWebService Restful em Java
WebService Restful em Javaalexmacedo
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPRenan Gonçalves
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONMarcio Junior Vieira
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 

Mais procurados (20)

Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
 
Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHP
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
 
Web service
Web serviceWeb service
Web service
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
 
WebService Restful em Java
WebService Restful em JavaWebService Restful em Java
WebService Restful em Java
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHP
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 

Semelhante a Webservices e Computação em Nuvem com PHP

REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3Flávio Lisboa
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPEduardo Cesar
 
Linguagem PHP para principiantes
Linguagem PHP para principiantesLinguagem PHP para principiantes
Linguagem PHP para principiantesMarco Pinheiro
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5Helder da Rocha
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-phpBrenno Abreu
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao phpAdriano Castro
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da ZendDomingos Teruel
 

Semelhante a Webservices e Computação em Nuvem com PHP (20)

REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
XML-RPC.pdf
XML-RPC.pdfXML-RPC.pdf
XML-RPC.pdf
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHP
 
Palestra
PalestraPalestra
Palestra
 
Linguagem PHP para principiantes
Linguagem PHP para principiantesLinguagem PHP para principiantes
Linguagem PHP para principiantes
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
PHP nas Nuvens
PHP nas NuvensPHP nas Nuvens
PHP nas Nuvens
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Php
PhpPhp
Php
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-php
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 

Mais de Flávio Lisboa

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPFlávio Lisboa
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaFlávio Lisboa
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasFlávio Lisboa
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoFlávio Lisboa
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework LaminasFlávio Lisboa
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?Flávio Lisboa
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Flávio Lisboa
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamFlávio Lisboa
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosFlávio Lisboa
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosFlávio Lisboa
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasFlávio Lisboa
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadoresFlávio Lisboa
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)Flávio Lisboa
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Flávio Lisboa
 

Mais de Flávio Lisboa (20)

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHP
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com Laminas
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com método
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework Laminas
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dados
 
Amanhecer esmeralda
Amanhecer esmeraldaAmanhecer esmeralda
Amanhecer esmeralda
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadores
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)
 

Último

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 

Último (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

Webservices e Computação em Nuvem com PHP

  • 1.
  • 2. Título da Apresentação Web Services e Computação em Nuvem com PHP Palestrante: Flávio Gomes da Silva Lisboa 00/00/0000
  • 3. 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.
  • 4. Reflexão Dr. Manhattan, created by Alan Moore and Dave Gibbons
  • 5. Reflexão A ideia de software como produto perde sentido em um mundo onde não é preciso instalar programas para utilizá-los. Fonte: http://silvacarvalho.net
  • 6. Reflexão 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.
  • 7. Reflexão O modelo de lucro baseado em venda de licenças de software foi sobrepujado pelo modelo de venda de serviços.
  • 8. O que é um serviç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.
  • 9. 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.
  • 10. O que é um serviço? Você fala XML? SIM! Ah, bom, então podemos conversar.
  • 11. O que é um serviço? XML XML
  • 12. O que é um serviço? C XML XML .NET PHP Ruby XML XML XML Python Java
  • 13. Implicação Não é preciso ter uma aplicação escrita na mesma linguagem daquela cujos serviços se deseja consumir
  • 14. PHP Mas na hora de escrever, pense nisto: Rasmus Lerdorf Since 1995
  • 15. PHP PHP é uma linguagem ● De alta performance ● Multiparadigma ● Robusta ● Que permite ● Com muitas separação em funcionalidades camadas ● Com extensões em C ● Tem baixo custo de treinamento ● Multiplataforma ● Não requer doutorado ● Compilada para usar dinamicamente
  • 16. Fato Muitas Bibliotecas e Farta Documentação
  • 17. Fato Domínios com PHP no mundo 14/12/2010 http://phpadvent.org/2010/usage-statistics-by-ilia-alshanetsky
  • 18. Fato Quem usa PHP
  • 19. PHP PHP 5 tem 13 extensões para XML.
  • 20. PHP Existem várias classes para construir webservices... 269
  • 21. PHP Mas qual usar?
  • 22. PHP Sugestão:
  • 23. Uma infraestrutura completa para criar aplicações PHP Zend Framework é uma poderosa biblioteca de classes para PHP
  • 24. E também uma biblioteca fracamente acoplada de classes PHP
  • 25. Que incluem classes para expor e consumir webservices By Pixar By Pixar By Pixar Zend_XmlRpc Zend_Soap Zend_Rest
  • 26. 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. "
  • 27. Zend_XmlRpc_Client Chamada de método remoto $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc'); echo $client->call('test.sayHello');
  • 28. Zend_XmlRpc_Client Chamada de método remoto com passagem de parâmetros $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc'); $arg1 = 1.1; $arg2 = 'foo'; $result = $client->call('test.sayHello', array($arg1, $arg2));
  • 29. Zend_XmlRpc_Client Chamada de método remoto com o uso de um proxy $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc'); $service = $client->getProxy(); $hello = $service->test->sayHello(1, 2);
  • 30. Zend_XmlRpc_Client Exceções ●Zend_XmlRpc_Client_HttpException ●Zend_XmlRpc_Client_FaultException
  • 31. Zend_XmlRpc_Server Criando um servidor XML-RPC $server = new Zend_XmlRpc_Server(); $server->setClass('My_Service_Class'); echo $server->handle();
  • 33. Zend_XmlRpc Observação: não exige descritor de serviços nem qualquer documentação do código PHP. By Fox
  • 34. 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.
  • 35. Zend_Soap SOAP # SOA (Service Oriented Architecture). juddi.apache.org
  • 36. Zend_Soap De que adianta ter funcionalidades se ninguém as conhece nem sabe como usá-las? Calvin, by Bill Watterson
  • 38. 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');
  • 39. Zend_Soap_Server Criando um servidor SOAP $soap = new Zend_Soap_Server("http://example.com/soap.php?wsdl"); $soap->setClass('HelloWorldService'); $soap->handle();
  • 40. Zend_Soap_Server Gerando o WSDL automaticamente $autodiscover = new Zend_Soap_AutoDiscover(); $autodiscover->setClass('HelloWorldService'); $autodiscover->handle();
  • 41. Zend_Soap Observação: exige as tags PHPDocumentor @param e @return para a geração do WSDL /** * * @param unknown_type $arg * @return unknown_type */
  • 42. 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
  • 43. 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
  • 44. 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"
  • 45. 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();
  • 46. Zend_Rest_Client Verificação de sucesso $result = $client->sayHello('Davey', 'Day')->get(); if ($result->isSuccess()) { echo $result; // "Hello Davey, Good Day" }
  • 47. Zend_Rest_Server Criando um servidor REST $server = new Zend_Rest_Server(); $server->setClass('My_Service_Class'); $server->handle();
  • 48. Zend_Rest_Server Expondo funções $server = new Zend_Rest_Server(); $server->addFunction('sayHello'); $server->handle();
  • 49. Zend_Rest Observação: exige as tags PHPDocumentor @param e @return /** * * @param unknown_type $arg * @return unknown_type */
  • 50. Zend Framework também inclui classes prontas para consumir webservices Zend_Cloud Zend_Feed Zend_GData Zend_Service
  • 51. 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.
  • 52. Zend_Service_Akismet O serviço Akismet é usado para determinar se dados de entrada constituem-se em um potencial spam.
  • 54. 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
  • 55. Zend_Service_Amazon_S3 Amazon Simple Storage Service (S3), webservices para armazenar e recuperar qualquer quantidade de dados, a qualquer hora, de qualquer lugar.
  • 56. Zend_Service_Amazon_Sqs Amazon Simple Queue Service (SQS) é um sistema de filas de mensagens hospedadas.
  • 57. Zend_Service_Audioscrobbler Provê acesso ao banco de dados de usuários, artistas, aĺbuns, faixas, tags, grupos e fóruns da Audioscrobbler.
  • 59. Zend_Service_DeveloperGarden DeveloperGarden é a comunidade de desenvolvedores da Deutsche Telekom, que oferece serviços de chamada de voz e SMS via APIs abertas.
  • 60. Zend_Service_Ebay Optimus Prime by Hasbro Bumblebee by Hasbro
  • 62. 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.
  • 63. 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
  • 67. 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. Mas... Captain America and Alpha Weapon/Vindix/Guardian, by Marvel
  • 68. Zend_Service_Technorati Technorati é um mecanismo de busca de blogs
  • 70. Zend_Service_WindowsAzure WindowsAzure é o ambiente de gerenciamento, hospedagem e desenvolvimento de serviços em nuvem da Microsoft.
  • 72. Zend_Feed RSS (Really Simple Syndication) também é um serviço
  • 75. Computação em Nuvem web services
  • 77. Zend_Cloud Serviço de Documentos Serviço de Filas Serviço de Armazenamento
  • 79. Mais informações Zend Framework http://framework.zend.com/manual http://devzone.zend.com Computação em Nuvem com PHP http://www.ibm.com/developerworks/web/library/os-php-cloud1/index.html http://www.ibm.com/developerworks/opensource/library/os-cloud-realities1/index.html
  • 80. Literatura Zend Framework Amazon.com: 70 resultados para Zend Framework