Tagged with php

SOA e Silex

Nos últimos anos a arquitetura SOA (Service-oriented architecture) deixou de ser uma tendência e virou realidade em diversos projetos e empresas. A maioria dos projetos que a Coderockr desenvolveu em 2011, e tem planejada para 2012, foi desenvolvida dessa forma.

Um dos exemplos é o uFun. Basicamente, a arquitetura da aplicação é:

Imagem

 

Essa é a típica aplicação que se beneficia desse tipo de arquitetura, pois temos várias interfaces acessando os mesmos dados e lógica. Os dados trafegam na forma de JSON via protocolo HTTP. Muito fácil de trabalhar em todas as plataformas e linguagens usadas no projeto (Objective C, Java, PHP e JavaScript).

Outro assunto que me interessa muito é o de frameworks. Ultimamente tenho estudado bastante os novos micro-frameworks de PHP. A parte server do uFun foi desenvolvida pelo @xorna em Slim Framework, que comentei em outro post.  Além do Slim Framework outro framework que me pareceu interessante foi o Silex, principalmente por ser baseado em componentes do Symfony. 

Como eu tenho uma teoria de que só aprendemos alguma tecnologia quando precisamos desenvolver algo com ela eu me fiz um desafio: criar um aplicativo em Silex para facilitar a criação de serviços Rest e RPC. O resultado está no Github da Coderockr: https://github.com/Coderockr/SOA-Server

Além do Silex eu usei alguns componentes que eu achei importantes:

No README do projeto tem mais informações sobre como fazer o download e instalação. Quanto ao funcionamento:

Toda a lógica do projeto está no arquivo index.php. Essa é uma das vantagens do Silex, por ser um micro-framework. Tudo é muito simples, principalmente a criação de rotas, validações. O index.php faz o papel de bootstrap da aplicação e possui as rotas para os métodos Rest (GET, PUT, POST e DELETE) e RPC.

Para que uma entidade esteja disponível via Rest basta que seja criada uma classe no namespace model que extends model\Entity, como no exemplo. Ela é uma entidade Doctrine, então temos todas as facilidades desse excelente framework. Além disso podemos adicionar as anotações para o DMS/Filter (por exemplo o @Filter\StripTags) e as configurações para o Symfony Validator (método loadValidatorMetadata)

Para que uma classe seja acessível via RPC ela precisa ser criada no namespace procedure e estender procedure\Procedure. Como Procedure é uma classe abstrata a nova classe precisa definir o método execute e retornar sempre um array com o resultado, conforme o exemplo.

Para termos um pouco de segurança foi implementado um controle de acesso, usando-se um header HTTP, o Authorization, que é validado baseado no arquivo configs/clients.php.

Também escrevi um exemplo de como seria fácil acessar via jQuery os serviços. O mesmo pode ser facilmente feito via PHP e outras linguagens usando Curl e outras bibliotecas.

Conclusões

Me diverti bastante escrevendo e testando esses componentes. Além da diversão, acabei criando algo que pretendo usar nos próximos projetos da Coderockr. Então esse desafio cumpriu seus objetivos: aprendi algo novo (Silex nesse caso) e consegui criar algo útil. Se for útil para alguém mais só aumenta a minha recompensa :)

Se alguém quiser contribuir com códigos é só usar a metodologia pull-request do Github e sugerir melhorias e correções.

Etiquetado , , , , , , ,

Material da palestra em Bento Gonçalves

No último fim de semana estive em Bento Gonçalves,RS, para palestrar no evento do Tchelinux.
Primeiramente, gostaria de parabenizar o pessoal da organização, em especial o Rafael Jaques, pelo sucesso do evento. Ótimas palestras, boas conversas nos corredores, e a hospitalidade do pessoal do RS são sempre legais.
Coloquei o material da minha apresentação no slideshare

Etiquetado , , ,

Usando o Zend Framework via CLI

Existem várias tarefas dentro de um sistema web que podem/devem ser executadas direto no servidor, sem a interação com o usuário, como workers do Gearman, tarefas agendadas na crontab do Linux, etc.
Estas tarefas podem ser executadas com o PHP-CLI (Command Line Interface). Na documentação oficial do PHP existem exemplos bem fáceis de entender e extender. Nesse post vou comentar como usar o CLI em projetos com o Zend Framework.
O primeiro passo é criar um Bootstrap simplificado, que vou chamar de clip.php. Ele tem a mesma tarefa do Bootstrap normal de uma aplicação Zend Framework, com algumas coisas a menos como o uso das variáveis $_GET e $_POST. Eu criei dois exemplos de cli.php, um para projetos usando módulos e outro para projetos mais simples.
Para usá-los basta usar o projeto exemplo que está no Github ou baixar apenas o cli.php e customizá-lo para seu projeto. Para executar é:

php cli.php -e development -a default/index/index

Você precisa ter o executável do PHP em seu Path. No Windows você iria executar:

php.exe cli.php -e development -a default/index/index

Os parâmetros significam:
-e = ambiente que você está executando. Se não passar parâmetro o script vai considerar como “development”. Isso é usado para ler as configurações de caminhos e dados do config.ini
-a = o que você irá executar. O formato é modulo/controlador/acao/param/valor

Se precisar passar parâmetros para a ação é só adicioná-los no comando, da mesma forma como faria em um navegador. Exemplo:

php cli.php -e development -a default/index/index/id/10/nome/elton

Desta forma a action indexAction do controlador IndexController vai poder acessar os parâmetros id e nome usando o comando:


$id = $this->getRequest()->getParam('id');
$nome = $this->getRequest()->getParam('nome');

No caso de não estar usando módulos no seu projeto basta invocar sem o nome do módulo:

php cli.php -e development -a index/index/id/10/nome/elton

Nós usamos bastante esse recurso em diversas tarefas agendadas nos projetos da Coderockr. É algo realmente útil.

Etiquetado , ,

Apresentação sobre Frameworks em PHP

No dia 14/11 eu participei como palestrante do ITconf, em Maringá.
O evento foi muito legal, com participação de palestrantes de renome e um público bem interessado e motivado.
A organização do evento também está de parabéns.
Coloquei no Slideshare a apresentação que fiz. E no Flickr algumas das fotos que tiraram.
Apresentação
Fotos

Etiquetado , , , , , ,

Material da palestra na Udesc

Ontem ministrei a palestra “Desenvolvendo aplicações Web escaláveis com PHP” na Semana Acadêmica de Computação/Sistemas de Informação na Udesc/Joinville. Galera bem participativa e legal. Ganhei até camiseta :D
Publiquei os slides no Slideshare, então quem quiser dar uma olhada o link é esse:
http://www.slideshare.net/eminetto/desenvolvendo-aplicaes-web-escalveis-com-php

Etiquetado , , , ,

Material da palestra no PHPSC Conf 2009

Finalmente me organizei e fiz o upload dos slides da palestra que ministrei no PHPSC Conf 2009.
Coloquei no Slideshare. Se alguém precisar do arquivo em outro formato é só me avisar.
Melhorando a performance de aplicações com o uso do MemCache

Etiquetado , ,

Inscrições abertas para o PHPSC Conf 2.0

Estão abertas as inscrições para o PHPSC Conf 2.0, que vai acontecer em Itajaí nos dias 29,30 e 31 de Maio.
Nos próximos dias devemos publicar também a grade de palestras

Etiquetado ,

Meteriais das palestras em Xanxerê

Estou disponibilizando o material das duas palestras que ministrei na Unoesc Xanxerê
Zend Framework
Desenvolvendo aplicações Web escaláveis

Etiquetado ,

Palestras em Xanxerê

Fui convidado a ministrar duas palestras em Xanxerê, oeste de Santa Catarina.

Vai ser no sábado dia 25/04, no auditório da Unoesc Campus de Xanxerê, apartir das 9hrs. A entrada é franca e quem quiser certificado é 10 reais.

As palestras vão ser “Desenvolvendo aplicações Web escaláveis” e “Zend Framework”.
Quaisquer dúvidas é só entrar em contato com o Leandro Dallagnol da Unoesc Xanxerê.
Estão todos convidados.

Etiquetado , ,

Reportagem sobre CakePHP

Foi publicada na segunda edição da revista TIdigital uma reportagem sobre o framework CakePHP.

Foi feita uma entrevista com um dos criadores do framework, John David Anderson e profissionais brasileiros que usam a ferramenta: Jhony Maiki Maseto, Tulio Vitor Machado Faria, Oberaldo Büll Junior, João José Carvalho Pedrini e eu.

O PDF da reportagem está disponível neste link

Etiquetado ,
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 1.472 other followers