<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Elton Luís Minetto &#187; symfony</title>
	<atom:link href="http://eltonminetto.net/tag/symfony/feed/" rel="self" type="application/rss+xml" />
	<link>http://eltonminetto.net</link>
	<description>Site pessoal de Elton Minetto</description>
	<lastBuildDate>Mon, 14 May 2012 17:25:18 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='eltonminetto.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Elton Luís Minetto &#187; symfony</title>
		<link>http://eltonminetto.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://eltonminetto.net/osd.xml" title="Elton Luís Minetto" />
	<atom:link rel='hub' href='http://eltonminetto.net/?pushpress=hub'/>
		<item>
		<title>SOA e Silex</title>
		<link>http://eltonminetto.net/2012/03/13/soa-e-silex/</link>
		<comments>http://eltonminetto.net/2012/03/13/soa-e-silex/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 13:29:11 +0000</pubDate>
		<dc:creator>eminetto</dc:creator>
				<category><![CDATA[etc]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[rpc]]></category>
		<category><![CDATA[silex]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://eltonminetto.net/2012/03/13/soa-e-silex/</guid>
		<description><![CDATA[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 é:   Essa é [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eltonminetto.net&#038;blog=18808326&#038;post=921&#038;subd=eltonminetto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nos últimos anos a arquitetura SOA (<a href="http://en.wikipedia.org/wiki/Service-oriented_architecture?utm_source=twitterfeed&amp;utm_medium=twitter">Service-oriented architecture</a>) deixou de ser uma tendência e virou realidade em diversos projetos e empresas. A maioria dos projetos que a <a href="http://www.coderockr.com">Coderockr</a> desenvolveu em 2011, e tem planejada para 2012, foi desenvolvida dessa forma.</p>
<p>Um dos exemplos é o <a href="http://ufun.coderockr.com/" target="_blank">uFun</a>. Basicamente, a arquitetura da aplicação é:</p>
<p><a href="http://eltonminetto.files.wordpress.com/2012/03/captura-de-tela-2012-03-13-c3a0s-09-57-10.png"><img class="size-full wp-image" src="http://eltonminetto.files.wordpress.com/2012/03/captura-de-tela-2012-03-13-c3a0s-09-57-10.png?w=426" alt="Imagem" /></a></p>
<p> </p>
<p>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).</p>
<p>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 <a href="http://twitter.com/xorna" target="_blank">@xorna</a> em <a href="http://www.slimframework.com/" target="_blank">Slim Framework</a>, que comentei em outro <a href="http://eltonminetto.net/2011/11/29/slim-framework/" target="_blank">post</a>.  Além do Slim Framework outro framework que me pareceu interessante foi o <a href="http://silex.sensiolabs.org/" target="_blank">Silex</a>, principalmente por ser baseado em componentes do Symfony. </p>
<p>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: <a href="https://github.com/Coderockr/SOA-Server">https://github.com/Coderockr/SOA-Server</a></p>
<p>Além do Silex eu usei alguns componentes que eu achei importantes:</p>
<ul>
<li><a href="https://github.com/rdohms/DMS-Filter">DMS/Filter</a> do meu amigo <a href="http://twitter.com/rdohms">Rafael Dohms</a> para fazer o filtro dos dados usando annotations</li>
<li><a href="http://www.doctrine-project.org/">Doctrine</a> para fazer o ORM das entidades</li>
<li><a href="https://github.com/symfony/ClassLoader">Symfony ClassLoader</a>  para facilitar o carregamento dos outros componentes</li>
<li><a href="https://github.com/symfony/Validator.git">Symfony Validator</a> para fazer a validação das entidades</li>
</ul>
<p>No <a href="https://github.com/Coderockr/SOA-Server/blob/master/README.md" target="_blank">README</a> do projeto tem mais informações sobre como fazer o download e instalação. Quanto ao funcionamento:</p>
<p>Toda a lógica do projeto está no arquivo i<a href="https://github.com/Coderockr/SOA-Server/blob/master/index.php" target="_blank">ndex.php</a>. 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.</p>
<p>Para que uma entidade esteja disponível via Rest basta que seja criada uma classe no namespace model que extends model\Entity, como no <a href="//github.com/Coderockr/SOA-Server/blob/master/model/User.php">exemplo</a>. 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)</p>
<p>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 <a href="https://github.com/Coderockr/SOA-Server/blob/master/procedure/Login.php">exemplo</a>.</p>
<p>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.</p>
<p>Também escrevi um <a href="https://github.com/Coderockr/SOA-Server/blob/master/sample.html">exemplo</a> 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.</p>
<p><strong>Conclusões</strong></p>
<p>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 <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Se alguém quiser contribuir com códigos é só usar a metodologia pull-request do Github e sugerir melhorias e correções.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eltonminetto.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eltonminetto.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eltonminetto.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eltonminetto.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eltonminetto.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eltonminetto.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eltonminetto.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eltonminetto.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eltonminetto.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eltonminetto.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eltonminetto.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eltonminetto.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eltonminetto.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eltonminetto.wordpress.com/921/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eltonminetto.net&#038;blog=18808326&#038;post=921&#038;subd=eltonminetto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eltonminetto.net/2012/03/13/soa-e-silex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0227f6274b8a6cce078d7f8a91460c41?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eminetto</media:title>
		</media:content>

		<media:content url="http://eltonminetto.files.wordpress.com/2012/03/captura-de-tela-2012-03-13-c3a0s-09-57-10.png?w=426" medium="image">
			<media:title type="html">Imagem</media:title>
		</media:content>
	</item>
		<item>
		<title>Webcast sobre Frameworks</title>
		<link>http://eltonminetto.net/2011/07/19/webcast-sobre-frameworks/</link>
		<comments>http://eltonminetto.net/2011/07/19/webcast-sobre-frameworks/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 12:56:20 +0000</pubDate>
		<dc:creator>eminetto</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[screencast]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[kohana]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://eltonminetto.net/?p=774</guid>
		<description><![CDATA[Depois do sucesso do webcast sobre MySQL o pessoal da ConexTI me convidou para mais duas edições, um sobre frameworks em PHP e outro sobre Zend Framework. O primeiro, sobre frameworks, vai acontecer no dia 09/08 às 19:00. Mais detalhes no site do evento<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eltonminetto.net&#038;blog=18808326&#038;post=774&#038;subd=eltonminetto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Depois do sucesso do <a href="http://eltonminetto.net/2011/06/16/webcast-sobre-mysql/" target="_blank">webcast sobre MySQL</a> o pessoal da ConexTI me convidou para mais duas edições, um sobre frameworks em PHP e outro sobre Zend Framework. O primeiro, sobre frameworks, vai acontecer no dia 09/08 às 19:00.<br />
Mais detalhes no <a href="http://www.conextilive.com.br/index.php?option=com_content&amp;view=article&amp;id=126&amp;Itemid=60">site do evento</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eltonminetto.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eltonminetto.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eltonminetto.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eltonminetto.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eltonminetto.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eltonminetto.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eltonminetto.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eltonminetto.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eltonminetto.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eltonminetto.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eltonminetto.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eltonminetto.wordpress.com/774/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eltonminetto.wordpress.com/774/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eltonminetto.wordpress.com/774/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eltonminetto.net&#038;blog=18808326&#038;post=774&#038;subd=eltonminetto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eltonminetto.net/2011/07/19/webcast-sobre-frameworks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0227f6274b8a6cce078d7f8a91460c41?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eminetto</media:title>
		</media:content>
	</item>
		<item>
		<title>Apresentação sobre Frameworks em PHP</title>
		<link>http://eltonminetto.net/2009/11/16/apresentacao-sobre-frameworks-em-php/</link>
		<comments>http://eltonminetto.net/2009/11/16/apresentacao-sobre-frameworks-em-php/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 11:39:16 +0000</pubDate>
		<dc:creator>eminetto</dc:creator>
				<category><![CDATA[palestras]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[kohana]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.eltonminetto.net/?p=399</guid>
		<description><![CDATA[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<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eltonminetto.net&#038;blog=18808326&#038;post=399&#038;subd=eltonminetto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>No dia 14/11 eu participei como palestrante do <a href="http://www.itconf.com.br">ITconf</a>, em Maringá.<br />
O evento foi muito legal, com participação de palestrantes de renome e um público bem interessado e motivado.<br />
A organização do evento também está de parabéns.<br />
Coloquei no Slideshare a apresentação que fiz. E no Flickr algumas das fotos que tiraram.<br />
<a href="http://www.slideshare.net/eminetto/frameworks-de-desenvolvimento-em-php">Apresentação</a><br />
<a href="http://www.flickr.com/photos/eltonminetto/sets/72157622689690757/">Fotos</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eltonminetto.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eltonminetto.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eltonminetto.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eltonminetto.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eltonminetto.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eltonminetto.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eltonminetto.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eltonminetto.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eltonminetto.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eltonminetto.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eltonminetto.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eltonminetto.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eltonminetto.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eltonminetto.wordpress.com/399/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eltonminetto.net&#038;blog=18808326&#038;post=399&#038;subd=eltonminetto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eltonminetto.net/2009/11/16/apresentacao-sobre-frameworks-em-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0227f6274b8a6cce078d7f8a91460c41?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eminetto</media:title>
		</media:content>
	</item>
	</channel>
</rss>
