• Home
  • Projetos
  • Palestras
  • Artigos
  • Livros

PHP-GTK Interoperabilidade com Web Services

PHP-GTK Interoperabilidade com Web Services

Para receber o artigo, informe abaixo seu email:
Email:

Keyworkds:

Introdução No artigo anterior estudamos como armazenar as informações de nossa aplicação PHP-GTK em um banco de dados SQLite. No quinto e último artigo da série, estudaremos formas de trocar informações entre aplicações distantes geograficamente por meio de Web Services. Para tal, iremos criar uma aplicação cliente em PHP-GTK que se comunica com um servidor rodando Apache e PHP. A nossa aplicação cliente PHP-GTK irá oferecer ao usuário uma interface que solicitará a execução de um método da aplicação servidora, que também será escrita em PHP. Antes de escrever a aplicação, vamos explicar alguns conceitos. Web Services Web Services é uma tecnologia que permite aplicações se comunicarem umas com as outras, combinando funcionalidades de forma independente de plataforma ou linguagem. Os Web Services são disponibilizados pela internet por meio de um conjunto de tecnologias como XML e SOAP, que permitem interoperabilidade por meio da publicação de serviços. Web Services podem ser utilizados para diversos fins. Desde criar novas aplicações baseadas em componentes de sistemas legados, criar um serviço on-line de consulta à cotações da bolsa, criar uma aplicação cliente para um serviço de consulta a entrega dos correios, criar uma aplicação cliente para um sistema remoto de registro de horas no ponto ou até criar um sistema de chat, com um programa cliente que conversa com uma aplicação servidora responsável por registrar as mensagens de todos participantes. Enfim, as possibilidades são enormes. Na Figura 1 temos uma representação simplificada da aplicação que iremos construir neste artigo. Ambas aplicações cliente e servidora devem rodar em um dispositivo que permita uma conexão à internet por meio do protocolo TCP/IP. A aplicação cliente faz uma requisição à servidora por meio de um pacote XML (eXtensible Markup Language) de acordo com o protocolo SOAP (Simple Object Access Protocol), a aplicação servidora processa esta requisição de acordo com suas regras internas e devolve a resposta para a aplicação cliente também no formato de um pacote XML. Figura 1. Representação de Web Services Aplicação Cliente O PHP5 possui classes nativas que dão suporte ao protocolo SOAP. Iremos utilizar tais classes para criar nossa aplicação, que será extremamente simples. Ela será formada por uma aplicação cliente, na qual o usuário irá informar o código de uma pessoa e ao clicar no botão "Buscar", um Web Service será acionado. Basicamente este Web Service irá comunicar-se com a aplicação servidora, onde existe um banco de dados de pessoas. A aplicação servidora irá buscar em seu banco de dados interno qual o registro que possui aquele código e retorná-lo para a aplicação cliente. Então, a aplicação cliente irá então exibir o nome da pessoa retornada logo abaixo do botão "Buscar". Veja a aplicação cliente na Figura 2. Nela, criamos uma janela e dentro dela, colocamos uma caixa vertical. Dentro da caixa vertical colocamos nossos objetos GtkLabel (Código, Nome), dois GtkEntry ($codigo, $nome) e um botão para buscar o registro. Tornamos o campo para digitação do nome não-editável pois ele irá apresentar somente o resultado da pesquisa ao servidor. Figura 2. Programa em execução Quando o botão "Buscar" for clicado, o método onBuscar() será executado. Sua função é acionar o Web Service por meio da classe do PHP SoapClient. Esta classe disponibiliza para a aplicação um objeto cujos métodos são exatamente os mesmos disponibilizados pelo servidor do Web Service. Aqui estamos executando o método buscar(), passando como parâmetro o ID da pessoa. Veja que no parâmetro "location", passado ao instanciar o SoapClient, identificamos a localização do servidor do Web Service. Neste exemplo, é um endereço local, mas poderia ser qualquer endereço IP. set_size_request(200,120); // cria os campos $codigo = new GtkEntry; $nome = new GtkEntry; $nome->set_sensitive(FALSE); // cria o botão $botao = new GtkButton('Buscar'); $botao->connect('clicked', 'onBuscar'); // coloca campos na caixa vertical $vbox = new GtkVBox; $vbox->add(new GtkLabel('Código')); $vbox->add($codigo); $vbox->add($botao); $vbox->add(new GtkLabel('Nome')); $vbox->add($nome); // exibe a janela $janela->add($vbox); $janela->show_all(); // aciona o web service function onBuscar() { global $codigo, $nome; // declara parametros do WS $param=array(); $param['encoding'] ='ISO-8859-1'; $param['location'] ='http://127.0.0.1/server.php'; $param['exceptions']= TRUE; $param['uri'] = 'http://test-uri/'; // instancia cliente SOAP $client=new SoapClient(NULL, $param); // executa o método remoto $id = $codigo->get_text(); $resp=$client->buscar($id); $nome->set_text($resp['nome']); } Gtk::Main(); ?> Aplicação Servidora A aplicação servidora irá responder à aplicação cliente. Para disponibilizar métodos para a aplicação cliente, utilizamos a classe SoapServer. Esta classe possui o método addFunction() que adiciona funções ao Web Service. Estas funções são disponibilizadas como métodos do objeto SoapClient. No lado da aplicação servidora, existirá um banco de dados em PostgreSQL contendo uma tabela de pessoas, onde temos campos como "id" e "nome". O papel do método buscar() é receber o código de uma pessoa e retornar o registro da pessoa composto por seu nome à aplicação cliente. addFunction('buscar'); // começa a "ouvir" requisições $server->handle(); ?> Conclusão Neste último artigo da série vimos como trocar informações entre aplicações por meio de Web Services. Com isto completamos nosso objetivo que era de informar o leitor sobre aspectos diferentes relacionados ao PHP-GTK para que o mesmo pudesse buscar maiores informações acerca de um assunto específico quando necessário. Espero que a leitura tenha sido agradável e convido a todos a participarem de nossa comunidade virtual [PHP-GTK Brasil]. Referências e links sugeridos [PHP-GTK Brasil] - http://www.php-gtk.com.br [Livro PHP-GTK] - http://www.php-gtk.com.br/book [Site do Autor] - http://www.pablo.blog.br Sobre o Autor Pablo Dall'Oglio é bacharel em Informática pela UNISINOS. Autor dos projetos Agata Report e Tulip, e dos livros "PHP Programando com Orientação a Objetos" e "PHP-GTK Criando Aplicações Gráficas com PHP", pela editora Novatec. Mantenedor da comunidade brasileira de PHP-GTK. Atualmente, é proprietário da Adianti Solutions (www.adianti.com.br). Pode ser contatado pelo e-mail pablo@php.net.

Livros


  • Outros

    • Galeria de Fotos
    • Posts no Codare

    Arquivo

    • 2009
    • 2008
    • 2007
    • 2006
    • 2005
    • 2004
  • Google

    Blogroll

    • Adler Medrado
    • Aurélio Jargas
    • Andrei Zmievski
    • Eduardo Maçan
    • Efetividade
    • Er Galvão
    • Joel on Software
    • Marcelio Leal
    • Martin Fowler
    • Miguel de Icasa
    • Newton Wagner
    • Rafael Dohms
    • Rasmus Lerdorf
    • Sérgio Crespo
    • Timoty Ney

    Posts Aleatórios

    • Agata/GNUTeca em Goias
    • Escritório de nerd imitando de executivo
    • 1o GoPHPConf
    • Gerando Thumbs em PHP
    • Enviando emails em PHP
    • Férias 2010
    • As novidades do PHP5
    • 1o PHPDF Road Show
    • Calcular o caminho euleriano em PHP
    • Piratas do Vale do Silício
    • 7o Fórum Internacional de Software Livre
    • CODARE
    • PHP Programando com Orientação a Objetos :: Segunda Edição
    • Palestra PHP: da web ao desktop no Uniinfo2008
    • Nova versão do Agata Report
    • Palestra em Belém
    • Cafeomancia
    • 6o. Fórum Internacional de Software Livre
    • Passeio nas Missões
    • Implantação do GNUTeca na ESMP
 
Designed by Wolfgang Bartelme Designed by Wolfgang Bartelme

© 2006 Wordpress Themes | Theme (Not so) Fresh
XHTML CSS