<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2" -->
<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/"
	>

<channel>
	<title>programania &#187; WEBDEV</title>
	<link>http://www.programania.net</link>
	<description>programación &#124; metodologías ágiles &#124; zend framework</description>
	<pubDate>Fri, 08 Aug 2008 10:00:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>
	<language>en</language>
			<item>
		<title>PHP 4 ha muerto</title>
		<link>http://www.programania.net/webdev/php-4-ha-muerto/</link>
		<comments>http://www.programania.net/webdev/php-4-ha-muerto/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 10:00:53 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.programania.net/webdev/php-4-ha-muerto/</guid>
		<description><![CDATA[Anoche fue actualizado por última vez y a partir de ahora será discontinuado.
Éste es un aviso para todo aquel que todavía programe en PHP4: ¡olvídalo!
Y éste es un aviso para todo aquel que tenga clientes con cosas programadas en PHP4: ¡corre a saber cuándo tu hosting migra a PHP5 o te hundes!
Me voy de vacaciones. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.suspekt.org/2008/08/08/php-4-requiescat-in-pace/">Anoche fue actualizado por última vez y a partir de ahora será discontinuado.</a></p>
<p>Éste es un aviso para todo aquel que todavía programe en PHP4: ¡olvídalo!</p>
<p>Y éste es un aviso para todo aquel que tenga clientes con cosas programadas en PHP4: ¡corre a saber cuándo tu hosting migra a PHP5 o te hundes!</p>
<p>Me voy de vacaciones. Nos vemos en unas semanas&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/webdev/php-4-ha-muerto/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SpringSource Application</title>
		<link>http://www.programania.net/programacion/orientada-a-aspectos/springsource-application/</link>
		<comments>http://www.programania.net/programacion/orientada-a-aspectos/springsource-application/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 14:05:33 +0000</pubDate>
		<dc:creator>Raul Vicente</dc:creator>
		
		<category><![CDATA[orientada a aspectos]]></category>

		<category><![CDATA[PROGRAMACION]]></category>

		<category><![CDATA[orientada a objetos]]></category>

		<category><![CDATA[Inyección de dependencias]]></category>

		<category><![CDATA[Software libre]]></category>

		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[Ingenieria de Software]]></category>

		<category><![CDATA[Spring Framework]]></category>

		<category><![CDATA[DESARROLLO DE SOFTWARE]]></category>

		<category><![CDATA[DISEÑO WEB]]></category>

		<category><![CDATA[PATRONES DE DISEÑO]]></category>

		<category><![CDATA[ESTANDARES WEB]]></category>

		<category><![CDATA[JAVA]]></category>

		<category><![CDATA[METODOLOGÍAS ÁGILES]]></category>

		<guid isPermaLink="false">http://www.programania.net/programacion/orientada-a-aspectos/springsource-application/</guid>
		<description><![CDATA[Nuevo estándar para desplegar aplicaciones Java]]></description>
			<content:encoded><![CDATA[<p>Hacía tiempo que no escribía y lo primero que quería hacer es disculparme con todos los que leen programania porque la he descuidado en los últimos tiempos, Luis cariñosamente - y no tan cariñosamente - ya me hizo saber su pesar y he decidido volver a la carga con más fuerza que nunca.</p>
<p>Tuvimos una hecatombe en el correo que habitualmente utilizamos los programaniacos y perdí la dirección de algunos post que me serían de gran utilidad, así que por una vez y sin que sea de precedente, voy a hacer algunas afirmaciones sin que pueda dar la URL de donde las he extraído, no obstante, creo que es mejor un post un pelín amarillista que nada.</p>
<p>En fin, hace mucho leí un post que me paso  Luis acerca de un nuevo servidor de aplicaciones Java que no cumplía el estándar JEE. El nombre del proyecto es JavaSource y es un servidor de aplicaciones que entronca con una nueva forma de entender las aplicaciones Java. Es mucho más ágil y ligero y permite personalizar más el despliegue de aplicaciones que en los grandes servidores convencionales como WebSphere por ejemplo.</p>
<p>Está basado en Spring y por tanto sólo se pueden desplegar aplicaciones realizadas con este framework y copia algunas ideas de la arquitectura OSGI. Una de las grandes ventajas es que se permite desplegar una aplicación Web o un servicio Web como tal, dado que este tipo de aplicaciones tienen sus características especiales y no como antes que todo eran EJBs.</p>
<p>Como os imaginaréis el servidor trajo cola y los hooligans de una y otra parte tuvieron más que palabras en la blogesfera, hasta el punto que los creadores de Spring se tuvieron que pronunciar en contra de este framework y en favor de su arquitectura OSGI, que por lo que he leído, permite personalizar mucho más el despliegue de aplicaciones pero debe hacer el mismo mucho más infernal que el viejo estándar JEE. A mí, en particular, me sonó un poco corporativista ya que asegurar que esta idea era mala porque les gustaba más la suya no me suena muy serio, claro los niños de uno siempre son los más guapos.</p>
<p>Puede que el estándar JEE se haya quedado anticuado pero me parece que puestos a cambiarlo se debería pactar el nuevo estándar en la comunidad Java y no dejar que cada uno despliegue aplicaciones como le de la gana porque eso si que puede llevar al caos.</p>
<p>Os dejo la dirección dónde se habla de este framework y me gustaría que los que lo hayáis utilizado dejéis vuestras impresiones, si no lo habéis utilizado y queréis hacer una crítica constructiva también me gustaría leerla.</p>
<p><a href="http://www.springsource.com/products/suite/applicationplatform" title="SpringSlurce" target="_blank">http://www.springsource.com/products/suite/applicationplatform </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/programacion/orientada-a-aspectos/springsource-application/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Inyección de dependencias y Zend Framework</title>
		<link>http://www.programania.net/diseno-de-software/ingenieria-de-software/inyeccion-de-dependencias-y-zend-framework/</link>
		<comments>http://www.programania.net/diseno-de-software/ingenieria-de-software/inyeccion-de-dependencias-y-zend-framework/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 09:58:46 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
		<category><![CDATA[Ingenieria de Software]]></category>

		<category><![CDATA[Inyección de dependencias]]></category>

		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[ZEND FRAMEWORK]]></category>

		<category><![CDATA[Spring Framework]]></category>

		<category><![CDATA[PATRONES DE DISEÑO]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[DESARROLLO DE SOFTWARE]]></category>

		<guid isPermaLink="false">http://www.programania.net/diseno-de-software/ingenieria-de-software/inyeccion-de-dependencias-y-zend-framework/</guid>
		<description><![CDATA[Quizá lo que más me gusta del Zend Framework es que, aunque programe con él el programador más inexperto, está utilizando algunas de las mejores prácticas de programación en PHP. Es el caso del uso de inyección de dependencias, del que varias veces ha tratado Raúl cuando habla de Java Spring.
Es usar las mejores prácticas [...]]]></description>
			<content:encoded><![CDATA[<p>Quizá lo que más me gusta del Zend Framework es que, aunque programe con él el programador más inexperto, está utilizando algunas de las mejores prácticas de programación en PHP. Es el caso del uso de <a href="http://www.ibuildings.com/blog/archives/1181-Dependency-Injection-and-Zend-Framework-Controllers.html">inyección de dependencias,</a> del que <a href="http://www.programania.net/category/patrones-de-diseno/inyeccion-de-dependencias/">varias veces ha tratado Raúl cuando habla de Java Spring</a>.</p>
<p>Es usar <a href="http://phpsenior.blogspot.com/2008/07/estndares-o-muerte-para-php.html">las mejores prácticas para programar en PHP es estrictamente necesario</a>, con más o menos matices, y Zend Framework te ayuda a hacerlo aunque no tengas ni idea de lo que haces. <img src='http://www.programania.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/diseno-de-software/ingenieria-de-software/inyeccion-de-dependencias-y-zend-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP 6 traerá &#8220;traits&#8221;</title>
		<link>http://www.programania.net/programacion/orientada-a-objetos/php-6-traera-traits/</link>
		<comments>http://www.programania.net/programacion/orientada-a-objetos/php-6-traera-traits/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 09:02:34 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
		<category><![CDATA[orientada a objetos]]></category>

		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[PROGRAMACION]]></category>

		<category><![CDATA[PHP 6]]></category>

		<category><![CDATA[JAVA]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.programania.net/programacion/orientada-a-objetos/php-6-traera-traits/</guid>
		<description><![CDATA[Según anuncia Sebastian Bergmann PHP implementará &#8220;traits&#8221; (rasgos) en PHP 6. Bien y, ¿Qué son los traits? Pues al parecer ofrece una nueva posibilidad de reutilización de código a caballo entre la &#8220;herencia multiple&#8221; y los &#8220;mixing&#8221; de Ruby.
La verdad es que no he encontrado mucha información sobre ellos en internet. Me quedo con la [...]]]></description>
			<content:encoded><![CDATA[<p>Según anuncia <a href="http://sebastian-bergmann.de/archives/809-Speaking-at-IPC-2008.html">Sebastian Bergmann PHP implementará &#8220;traits&#8221; (rasgos) en PHP 6.</a> Bien y, ¿Qué son los traits? Pues al parecer ofrece una nueva posibilidad de reutilización de código a caballo entre la &#8220;herencia multiple&#8221; y los &#8220;mixing&#8221; de Ruby.</p>
<p>La verdad es que no he encontrado mucha información sobre ellos en internet. Me quedo con <a href="http://www.scala-lang.org/intro/traits.html">la página de Scala donde explican su implementación</a>.</p>
<p>Lecturas:</p>
<ul>
<li><a href="http://www.innovationontherun.com/why-rubys-mixins-gives-rails-an-advantage-over-java-frameworks/">Ventajas de los Ruby mixing frente a Java</a>.</li>
<li><a href="http://www.programania.net/java/jruby/%c2%bfruby-on-rails-esta-muerto/">El análisis que hicimos en programanía del &#8220;efecto Ruby&#8221; sobre otros lenguajes como PHP.</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/programacion/orientada-a-objetos/php-6-traera-traits/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Closures en PHP 5.3</title>
		<link>http://www.programania.net/webdev/closures-en-php-53/</link>
		<comments>http://www.programania.net/webdev/closures-en-php-53/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 06:49:35 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[orientada a objetos]]></category>

		<category><![CDATA[PROGRAMACION]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.programania.net/webdev/closures-en-php-53/</guid>
		<description><![CDATA[Me quedo sorprendido al enterarme de que, probablemente, las &#8220;closures&#8221; serán implementadas en PHP 5.3.
Las closures son la posibilidad de pasar como argumento un trozo de código. Es una de las principales ventajas de Ruby frente a PHP y amplía enormemente las posibilidades de reutilización de código&#8230;
Parece que la publicación de PHP 5.3 va a [...]]]></description>
			<content:encoded><![CDATA[<p>Me quedo sorprendido al enterarme de que, probablemente, las &#8220;closures&#8221; serán implementadas en <a href="http://www.toosweettobesour.com/2008/07/21/php-53-and-closures/">PHP 5.3</a>.</p>
<p>Las closures son la posibilidad de pasar como argumento un trozo de código. Es una de las principales ventajas de <a href="http://www.programania.net/java/jruby/%c2%bfruby-on-rails-esta-muerto/">Ruby frente a PHP</a> y amplía enormemente las posibilidades de reutilización de código&#8230;</p>
<p>Parece que la publicación de PHP 5.3 va a ser un acontecimiento casi tan importante como la publicación de PHP 5.0&#8230;</p>
<p><strong>Actualización:</strong></p>
<p><strong>Venkman</strong> me corrije en los comentarios (mejorando tanto la definición chorrifláutica que había puesto de closures, que lo voy a poner en el propio post):</p>
<p><em>Una &#8220;closure&#8221; es una construcción que existe en tiempo de ejecución que vincula una función con un entorno (scope) diferente -y ya cerrado- al entorno en el que se ejecuta.</p>
<p>Es decir, es la construcción que abarca una función (que puede ser anónima o no serlo; es decir, puede ser un &#8220;trozo de código&#8221; o no) y un entorno de resolución (scope) que está accesible para esa función pero no para el resto porque ya está &#8220;cerrado&#8221;. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/webdev/closures-en-php-53/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Domain Specific Language Java</title>
		<link>http://www.programania.net/programacion/domain-specific-language-java/</link>
		<comments>http://www.programania.net/programacion/domain-specific-language-java/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 17:01:56 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
		<category><![CDATA[PROGRAMACION]]></category>

		<category><![CDATA[Inyección de dependencias]]></category>

		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[DSL - Domain Specific Language]]></category>

		<category><![CDATA[Struts Framework]]></category>

		<category><![CDATA[JAVA]]></category>

		<category><![CDATA[Ingenieria de Software]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.programania.net/programacion/domain-specific-language-java/</guid>
		<description><![CDATA[Los DSL o Domain Specific Languages es uno de esos conceptos con los que me encuentro regularmente y me suele valer la pena reflexionar. Hace ya algún tiempo Raúl me pasaba éste artículo sobre los DSL´s en Java.
Existen dos tipos:

Los Internal DSL: están escritos en el propio lenguaje padre. Son basicamente lo que siempre hemos [...]]]></description>
			<content:encoded><![CDATA[<p>Los DSL o Domain Specific Languages es uno de esos conceptos con los que me encuentro regularmente y me suele valer la pena reflexionar. Hace ya algún tiempo Raúl <a href="http://www.infoq.com/articles/internal-dsls-java">me pasaba éste artículo sobre los DSL´s en Java</a>.</p>
<p>Existen dos tipos:</p>
<ul>
<li><strong>Los Internal DSL</strong>: están escritos en el propio lenguaje padre. Son basicamente lo que siempre hemos conocido como &#8220;API&#8221; aunque utilizando &#8220;fluent interface&#8221; y atendiendo más a la semántica de los métodos. Un ejemplo en Java sería la generación de SQL por parte de Hibernate:</li>
</ul>
<p><code>SQLQuery sql = new SQLQuery();<br />
sql.Select("Id").Select("FirstName").Select("LastName").From("Person").Where("Id = 1").Where("FirstName = 'Chris'").OrderBy("LastName").OrderBy("FirstName");<br />
string strSqlString = sql.ToString();</code></p>
<ul>
<li><strong>Los External DSL</strong>: No están escritos en el mismo Java. Se utiliza un lenguaje externo. En el caso de Java han triunfado especialmente los External DSL escritos en XML. Un caso sería el MVC de Struts, que se declara así:</li>
</ul>
<p><code>&lt;action-mappings &gt;<br />
&lt;action path="/listar"  type="org.springframework.web.struts.DelegatingActionProxy"&gt;<br />
&lt;forward name="listar" path="lista.aplicaciones"/&gt;<br />
&lt;/action&gt;<br />
&lt;action path="/formularioNuevaAplicacion" type="org.springframework.web.struts.DelegatingActionProxy"&gt;<br />
&lt;forward name="mostrar" path="nueva.aplicacion"/&gt;<br />
&lt;/action&gt;<br />
&lt;action path="/nuevaAyuda" attribute="aplicacionForm" name="aplicacionForm" type="org.springframework.web.struts.DelegatingActionProxy" scope="request" input="nueva.aplicacion"&gt;<br />
&lt;forward name="nueva" path="/listar.do"/&gt;<br />
&lt;/action&gt;<br />
&lt;/action-mappings&gt;</code></p>
<p>El artículo cuenta cómo la experiencia ha demostrado que los DSL que realmente funcionan son los Internal, que están escritos en el propio Java. Es inviable aprender cincuenta minilenguajes externos. Además compilan y se adaptan muy bien  a las estructuras existentes.</p>
<p>Los external en XML tuvieron mucho éxito en Java porque se resolvían en tiempo de ejecución y permitían cambiar cosas sin recompilar. En el caso de lenguajes dinámicos como PHP, Ruby, etc&#8230; esto no tiene sentido. Además los XML´s habría que cargarlos en cada request, con la recarga de servidor que supondría eso&#8230;</p>
<p>Gracias a <a href="www.programania.net/raul-vicente/ ">Raúl</a> por pasarme el artículo y ayudarme con los ejemplos en Java, que no es mi fuerte.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/programacion/domain-specific-language-java/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getters y setters son el mal</title>
		<link>http://www.programania.net/webdev/getters-y-setters-son-el-mal/</link>
		<comments>http://www.programania.net/webdev/getters-y-setters-son-el-mal/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 16:50:26 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[orientada a objetos]]></category>

		<category><![CDATA[PROGRAMACION]]></category>

		<category><![CDATA[DESARROLLO DE SOFTWARE]]></category>

		<guid isPermaLink="false">http://www.programania.net/webdev/getters-y-setters-son-el-mal/</guid>
		<description><![CDATA[Es interesante la reflexión que hace Greg Jorgensen en su blog. Y es que hay mucho programador con la costumbre de crear getters y setters para todos los atributos de su clase sin plantearse si son necesarios o no. ¿Qué diferencia habría entonces con hacer esos atributos públicos y no privados?
Quizá resulte muy radical ver [...]]]></description>
			<content:encoded><![CDATA[<p>Es interesante <a href="http://typicalprogrammer.com/?p=23">la reflexión que hace Greg Jorgensen en su blog</a>. Y es que hay mucho programador con la costumbre de crear getters y setters para todos los atributos de su clase sin plantearse si son necesarios o no. ¿Qué diferencia habría entonces con hacer esos atributos públicos y no privados?<br />
Quizá resulte muy radical ver la implementación de un getter como un &#8220;fallo de encapsulación&#8221; pero si es verdad que, idealmente, una clase debería tener una serie de métodos públicos, ningún getter/setter, y todos los atributos privados&#8230; así desconoceríamos la representación real de los datos y sólo tendríamos acceso al comportamiento (máxima encapsulación).</p>
<p>¿Hasta qué punto atendéis a la encapsulación en vuestros diseños?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/webdev/getters-y-setters-son-el-mal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>La orientación a objetos llega a PHP</title>
		<link>http://www.programania.net/programacion/orientada-a-objetos/la-orientacion-a-objetos-llega-a-php/</link>
		<comments>http://www.programania.net/programacion/orientada-a-objetos/la-orientacion-a-objetos-llega-a-php/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 16:44:01 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
		<category><![CDATA[orientada a objetos]]></category>

		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[PROGRAMACION]]></category>

		<category><![CDATA[Ingenieria de Software]]></category>

		<category><![CDATA[PATRONES DE DISEÑO]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[DESARROLLO DE SOFTWARE]]></category>

		<guid isPermaLink="false">http://www.programania.net/programacion/orientada-a-objetos/la-orientacion-a-objetos-llega-a-php/</guid>
		<description><![CDATA[Hablaba hace un tiempo de la eclosión de los CMS orientado a objetos. Pues parece que la tendencia se va extendiendo a otro tipo de soluciones también. Poco a poco se está haciendo más y más conocida Magento E-Commerce, que viene a sustituir a OsCommerce y Zen Cart (sorprendentemente infernales a la hora de personalizar, [...]]]></description>
			<content:encoded><![CDATA[<p>Hablaba hace un tiempo de<a href="http://www.programania.net/webdev/eclosion-de-los-cms-orientados-a-objetos/"> la eclosión de los CMS orientado a objetos</a>. Pues parece que la tendencia se va extendiendo a otro tipo de soluciones también. Poco a poco se está haciendo más y más conocida <a href="http://www.magentocommerce.com/">Magento E-Commerce</a>, que viene a sustituir a OsCommerce y Zen Cart (sorprendentemente infernales a la hora de personalizar, mi compañero Asier puede dar fé de lo que cuesta modificar unas simples plantillas), y <a href="http://www.tine20.org/">Tine 2.0,</a> que viene a sustituir a eGroupWare. Ambas están reescritas en el Zend Framework&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/programacion/orientada-a-objetos/la-orientacion-a-objetos-llega-a-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Aclarando las posibilidades de acceso a datos.</title>
		<link>http://www.programania.net/webdev/aclarando-las-posibilidades-de-acceso-a-datos/</link>
		<comments>http://www.programania.net/webdev/aclarando-las-posibilidades-de-acceso-a-datos/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 08:05:09 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[ZEND FRAMEWORK]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[PATRONES DE DISEÑO]]></category>

		<guid isPermaLink="false">http://www.programania.net/webdev/aclarando-las-posibilidades-de-acceso-a-datos/</guid>
		<description><![CDATA[Row Data Gateway, Table Data Gateway, Active Record, Data Mapper, Hibernate, DAO]]></description>
			<content:encoded><![CDATA[<p><a href="http://martinfowler.com/eaaCatalog/tableDataGateway.html"><strong>Table Data Gateway</strong></a><br />
Se encarga de generar todo el SQL para acceder a una sola tabla: select, insert, update y delete. También puede tener otros métodos para interactuar con la base de datos. En principio, no representa mayor lógica de negocio.</p>
<p><a href="http://martinfowler.com/eaaCatalog/rowDataGateway.html"><strong>Row Data Gateway</strong></a><br />
Te permite disponer de un objeto que representa directamente una fila e la base de datos. Todo el acceso a la fila queda oculto tras la interfaz de la clase. En principio, no representa mayor lógica de negocio.</p>
<p><a href="http://martinfowler.com/eaaCatalog/activeRecord.html"><strong>Active Record</strong></a><br />
Te permite disponer de un objeto que tiene tanto la lógica de acceso a datos como la lógica de dominio.</p>
<p><a href="http://martinfowler.com/eaaCatalog/dataMapper.html"><strong>Data Mapper</strong></a><br />
Te permite disponer de dos objetos. El primero representa la lógica de negocio. El segundo el acceso a datos. Se trata de realizar una correlación entre objetos de lógica de negocio y tablas de la base de datos.</p>
<p>Table Data Gateway y Row Data Gateway son los dos patrones conlos que no se realiza ningún tipo de mapeo entre la base de datos y la lógica de negocio. La principal ventaja es que te permite, escribiendo muy poco código, disponer de un acceso a base de datos limpio y bien estructurado. La desventaja es que presenta bastantes dificultades a la hora de incluir lógica de negocio y crear un auténtico Model.</p>
<p>Active Record y Data Mapper, en cambio, sí ofrecen la posibilidad de incluir fácilmente lógica de negocio junto con el acceso a datos. En el caso de Active Record esa lógica de negocio se mezclará con el acceso a datos en la misma clase. Si el mapeo entre las clases y las tablas de la base de datos es sencillo, será suficiente. En caso contrario, habrá que separar ambas lógicas (lógica de negocio de lógica de acceso a datos) utilizando Data Mapper.</p>
<ul>
<li>Tabla Data Gateway y Row Data Gateway son la opción utilizada por el <a href="http://zendframework.programania.net/" title="zend framework">Zend Framework</a>.</li>
<li>Active Record es una solución típica en Ruby on rails.</li>
<li>Y Data Mapper sería propio de soluciones <a href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html">DAO</a>, muy vistas en Java. En Java son populares frameworks de mapeo de clases como <a href="http://www.hibernate.org/">Hibernate</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/webdev/aclarando-las-posibilidades-de-acceso-a-datos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ez Components junto a Zend Framework</title>
		<link>http://www.programania.net/webdev/ez-components-junto-a-zend-framework/</link>
		<comments>http://www.programania.net/webdev/ez-components-junto-a-zend-framework/#comments</comments>
		<pubDate>Fri, 30 May 2008 10:26:41 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
		<category><![CDATA[WEBDEV]]></category>

		<category><![CDATA[EZ Components]]></category>

		<category><![CDATA[ZEND FRAMEWORK]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[DESARROLLO DE SOFTWARE]]></category>

		<guid isPermaLink="false">http://www.programania.net/webdev/ez-components-junto-a-zend-framework/</guid>
		<description><![CDATA[ez components y zend framework integrados]]></description>
			<content:encoded><![CDATA[<p>Al grano, ésta es la manera de integrar los Ez Components con el ZF durante el bootstraping:<br />
<code>require_once "Base/base.php";<br />
spl_autoload_register(array('ezcBase', 'autoload'));<br />
include "Zend/Loader.php";<br />
spl_autoload_register(array('Zend_Loader', 'autoload'));<br />
</code></p>
<p>Los Ez Components tienen muchos componentes que te ofrecen lo mismo que el Zend Framework. Pero hay unos cuantos que no:</p>
<ul>
<li><a href="http://ezcomponents.org/docs/tutorials/Graph">Ez Graph</a>: para la generación de gráficos. Funciona muy bien, te permite bastantes formatos y los gráficos son visualmente bastante atractivos.</li>
<li><a href="http://ezcomponents.org/docs/api/latest/introduction_Database.html">Ez Database</a>: ofrece lo mismo que las del ZF pero además puedes hacer algún tipo de ORM.</li>
<li><a href="http://ezcomponents.org/docs/api/latest/classtrees_Workflow.html">Ez Workflow</a>: éste me parece muy interesante. Te permite configurar flujos de trabajo (roles, documentos, estados) para implementar procesos.</li>
</ul>
<p>Otra ventaja más del ZF: se puede combinar con Ez Components para aprovechar las ventajas de los dos y simplificar más todavía el desarrollo de aplicaciones&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programania.net/webdev/ez-components-junto-a-zend-framework/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
