View
2.037
Download
1
Category
Preview:
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
Citation preview
Título daApresentação
00/00/0000Palestrante: 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.
Reflexão
Dr. Manhattan, created by Alan Moore and Dave Gibbons
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
Rasmus Lerdorf
Since 1995
Mas na hora de escrever, pense nisto:
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
Fato
Muitas Bibliotecas e Farta Documentação
Fato
Domínios com PHP no mundo
14/12/2010http://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
Zend_XmlRpc Zend_Soap Zend_Rest
By Pixar
By Pixar
By Pixar
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
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 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
Escolha a nuvem!
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
Recommended