<?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>Wed, 01 Feb 2012 15:39:10 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Christian</title>
		<link>http://www.miguelmatas.es/blog/2008/05/22/%c2%bfservicios-web-polimorficos-parte-2-solucion-con-wcf/comment-page-1/#comment-1345</link>
		<dc:creator>Christian</dc:creator>
		<pubDate>Wed, 07 Sep 2011 20:46:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.miguelmatas.es/blog/?p=177#comment-1345</guid>
		<description>la continuacion.... MARCADAO
        Public Function OtroMetodo(ByVal cadena As String) As String

            Try
                &#039;Lo que le quiere hacer a la cadena xD
                cadena = cadena &amp; &quot; .&quot;
                Return cadena

            Catch ex As Exception

                Throw New Exception(&quot;Error en nuevo metodo!&quot;)

            End Try
        End Function

Como ya te dije nose si realmente respecto lo de las capas, pero creo que buscaria por ese lado... el segundo tema te lo dejo de tarea ja!

Saludos!</description>
		<content:encoded><![CDATA[<p>la continuacion&#8230;. MARCADAO<br />
        Public Function OtroMetodo(ByVal cadena As String) As String</p>
<p>            Try<br />
                &#8216;Lo que le quiere hacer a la cadena xD<br />
                cadena = cadena &amp; &#8221; .&#8221;<br />
                Return cadena</p>
<p>            Catch ex As Exception</p>
<p>                Throw New Exception(&#8220;Error en nuevo metodo!&#8221;)</p>
<p>            End Try<br />
        End Function</p>
<p>Como ya te dije nose si realmente respecto lo de las capas, pero creo que buscaria por ese lado&#8230; el segundo tema te lo dejo de tarea ja!</p>
<p>Saludos!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christian</title>
		<link>http://www.miguelmatas.es/blog/2008/05/22/%c2%bfservicios-web-polimorficos-parte-2-solucion-con-wcf/comment-page-1/#comment-1344</link>
		<dc:creator>Christian</dc:creator>
		<pubDate>Wed, 07 Sep 2011 20:43:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.miguelmatas.es/blog/?p=177#comment-1344</guid>
		<description>Miguel excelentisimo post estos de DAO + DTO. 
Me confundo un poco todavia pero creo q es practica nomas.

German, cn respecto a tu pregunta; la verdad nose VB Net pero como me gusto el tema me puse a ver q onda tu problema. No te aseguro que este bien... pero no podrias resolverlo asi:

Tratar Metodos Propios:
SERVICE:
Public Function getString(ByVal cadena As String) As String

            Dim _newCadena As String
            Dim _marcaDTO As MarcaDTO

            Dim objMarcaDao As MarcaDAO = DAOFactory.GetDAO(_marcaDTO)
            _newCadena = objMarcaDao.OtroMetodo(cadena)

            Return _newCadena

        End Function</description>
		<content:encoded><![CDATA[<p>Miguel excelentisimo post estos de DAO + DTO.<br />
Me confundo un poco todavia pero creo q es practica nomas.</p>
<p>German, cn respecto a tu pregunta; la verdad nose VB Net pero como me gusto el tema me puse a ver q onda tu problema. No te aseguro que este bien&#8230; pero no podrias resolverlo asi:</p>
<p>Tratar Metodos Propios:<br />
SERVICE:<br />
Public Function getString(ByVal cadena As String) As String</p>
<p>            Dim _newCadena As String<br />
            Dim _marcaDTO As MarcaDTO</p>
<p>            Dim objMarcaDao As MarcaDAO = DAOFactory.GetDAO(_marcaDTO)<br />
            _newCadena = objMarcaDao.OtroMetodo(cadena)</p>
<p>            Return _newCadena</p>
<p>        End Function</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Germán Caballero</title>
		<link>http://www.miguelmatas.es/blog/2008/05/22/%c2%bfservicios-web-polimorficos-parte-2-solucion-con-wcf/comment-page-1/#comment-1328</link>
		<dc:creator>Germán Caballero</dc:creator>
		<pubDate>Thu, 04 Aug 2011 08:58:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.miguelmatas.es/blog/?p=177#comment-1328</guid>
		<description>Estimado Miguel, primero que todo, felicitaciones por el artículo, mi consulta es la siguiente, ¿como puedo implementar los métodos que son propios de una clase?, se muestra el funcionamiento de implementación de los métodos de la interface, pero no se como tratar los métodos propios. Y segundo, Si tengo un método del tipo: &quot;public System.Collections.Generic.List Get()&quot; como lo paso a su correspondiente tipo de clase para devolverlo al controlador.

Gracias</description>
		<content:encoded><![CDATA[<p>Estimado Miguel, primero que todo, felicitaciones por el artículo, mi consulta es la siguiente, ¿como puedo implementar los métodos que son propios de una clase?, se muestra el funcionamiento de implementación de los métodos de la interface, pero no se como tratar los métodos propios. Y segundo, Si tengo un método del tipo: &#8220;public System.Collections.Generic.List Get()&#8221; como lo paso a su correspondiente tipo de clase para devolverlo al controlador.</p>
<p>Gracias</p>
]]></content:encoded>
	</item>
	<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>

