<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: ¿Servicios Web Polimórficos? (Parte 2 &#8211; Solución con WCF y Framework 3.5)</title>
	<atom:link href="http://www.miguelmatas.es/blog/2008/05/22/%c2%bfservicios-web-polimorficos-parte-2-solucion-con-wcf/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.miguelmatas.es/blog/2008/05/22/%c2%bfservicios-web-polimorficos-parte-2-solucion-con-wcf/</link>
	<description>Ingeniería de Software, Gestión de Proyectos, Programación, BPM, Arquitectura de Software, .NET, J2EE</description>
	<lastBuildDate>Thu, 05 Aug 2010 22:02:16 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Miguel</title>
		<link>http://www.miguelmatas.es/blog/2008/05/22/%c2%bfservicios-web-polimorficos-parte-2-solucion-con-wcf/comment-page-1/#comment-1164</link>
		<dc:creator>Miguel</dc:creator>
		<pubDate>Wed, 22 Apr 2009 06:45:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.miguelmatas.es/blog/?p=177#comment-1164</guid>
		<description>Hola Fernando,

Efectivamente con la solución que se ha planteado se está obligando a que si tienes 200 DAO, necesites un switch con 200 condiciones.

A priori puede parecer descabellado, pero ten en cuenta que se está gestionando de forma interna y transparente a los clientes que llaman a la capa de negocio. Puede que necesites un switch con 200 casos, pero para acceder a esos 200 objetos de negocio expones hacia fuera un único servicio con cuatro o cinco métodos que permiten hacer las operaciones básicas para cualquiera de los 200 DAO. 

De ahí la gracia de todo este sistema, que sea estupendo para preparar por ejemplo una típica aplicación de mantenimiento.

Eso sí, como bien dices, y centrándonos únicamente en el &quot;problema&quot; del switch, el manejo de la factoría es mejorable, déjame pensar en algo a ver qué se me ocurre, puede que encontremos una manera de hacer que esta parte del código aumente en mantenibilidad y legibilidad.

Cualquier aportación al respecto será bienvenida :)

Saludos!

Miguel.</description>
		<content:encoded><![CDATA[<p>Hola Fernando,</p>
<p>Efectivamente con la solución que se ha planteado se está obligando a que si tienes 200 DAO, necesites un switch con 200 condiciones.</p>
<p>A priori puede parecer descabellado, pero ten en cuenta que se está gestionando de forma interna y transparente a los clientes que llaman a la capa de negocio. Puede que necesites un switch con 200 casos, pero para acceder a esos 200 objetos de negocio expones hacia fuera un único servicio con cuatro o cinco métodos que permiten hacer las operaciones básicas para cualquiera de los 200 DAO. </p>
<p>De ahí la gracia de todo este sistema, que sea estupendo para preparar por ejemplo una típica aplicación de mantenimiento.</p>
<p>Eso sí, como bien dices, y centrándonos únicamente en el &#8220;problema&#8221; del switch, el manejo de la factoría es mejorable, déjame pensar en algo a ver qué se me ocurre, puede que encontremos una manera de hacer que esta parte del código aumente en mantenibilidad y legibilidad.</p>
<p>Cualquier aportación al respecto será bienvenida <img src='http://www.miguelmatas.es/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Saludos!</p>
<p>Miguel.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fernando</title>
		<link>http://www.miguelmatas.es/blog/2008/05/22/%c2%bfservicios-web-polimorficos-parte-2-solucion-con-wcf/comment-page-1/#comment-1163</link>
		<dc:creator>Fernando</dc:creator>
		<pubDate>Wed, 22 Apr 2009 00:59:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.miguelmatas.es/blog/?p=177#comment-1163</guid>
		<description>Esta parte suena muy bien

&quot;Como véis esto sería la leche ya que cualquier llamada al servicio sería capaz de ejecutar la acción independientemente del DTO que le llegue…

Por aquí dejo el código de la factoría, que como véis, según el DTO que recibe, retorna el DAO correspondiente.&quot;


Pero que hay de esta parte si tengo mucho objetos DAO que mantener 100 o 200, aqui tendria un case o un if de 200 posibilidades? ¿Como se podria manejar esto?

public static IDAO GetDAO(IDTO dto)
   {
       if (dto is CocheDTO)
       {
          return CocheDAO.GetInstance();
       }
       else if (dto is MarcaDTO)
       {
          return MarcaDAO.GetInstance();
       }
       throw new Exception(”no existe este dto”);
    }</description>
		<content:encoded><![CDATA[<p>Esta parte suena muy bien</p>
<p>&#8220;Como véis esto sería la leche ya que cualquier llamada al servicio sería capaz de ejecutar la acción independientemente del DTO que le llegue…</p>
<p>Por aquí dejo el código de la factoría, que como véis, según el DTO que recibe, retorna el DAO correspondiente.&#8221;</p>
<p>Pero que hay de esta parte si tengo mucho objetos DAO que mantener 100 o 200, aqui tendria un case o un if de 200 posibilidades? ¿Como se podria manejar esto?</p>
<p>public static IDAO GetDAO(IDTO dto)<br />
   {<br />
       if (dto is CocheDTO)<br />
       {<br />
          return CocheDAO.GetInstance();<br />
       }<br />
       else if (dto is MarcaDTO)<br />
       {<br />
          return MarcaDAO.GetInstance();<br />
       }<br />
       throw new Exception(”no existe este dto”);<br />
    }</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rafa</title>
		<link>http://www.miguelmatas.es/blog/2008/05/22/%c2%bfservicios-web-polimorficos-parte-2-solucion-con-wcf/comment-page-1/#comment-792</link>
		<dc:creator>Rafa</dc:creator>
		<pubDate>Thu, 22 May 2008 20:36:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.miguelmatas.es/blog/?p=177#comment-792</guid>
		<description>Ole, ole y Ole!!!</description>
		<content:encoded><![CDATA[<p>Ole, ole y Ole!!!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
