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
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.
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
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);
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.
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"
}
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.
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
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
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