Castle o Spring.Net

12 views
Skip to first unread message

Alejandro Labra

unread,
Sep 2, 2010, 9:59:30 AM9/2/10
to AltNet-Hispano
Hola a todos,

He estado leyendo sobre comparativas entre Castle y Spring.Net y me
gustaría conocer sus experiencias con estos frameworks, si han usado
alguno y por que...

Por ejemplo, según leí en http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx,
Castle Windsor, provee un contenedor IoC que soporta configuración a
través de XML y declaraciones fuertemente tipificadas, en cambio
Spring.Net solamente se puede configurar vía XML. La ventaja, de
Castle Windsor, es que se puede encontrar errores en tiempo de
compilación.

Ariel Piñeiro

unread,
Sep 2, 2010, 10:03:30 AM9/2/10
to altnet-...@googlegroups.com
Sin duda y sin pensarlo Spring.

2010/9/2 Alejandro Labra <alejand...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispan...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.


José F. Romaniello

unread,
Sep 2, 2010, 10:09:55 AM9/2/10
to altnet-...@googlegroups.com
Podrías ampliar un poco más? Ya que muchos de nosotros usamos Castle y estamos más que felices :)

2010/9/2 Ariel Piñeiro <arie...@gmail.com>

jose ubaldo carvajal

unread,
Sep 2, 2010, 10:32:08 AM9/2/10
to altnet-...@googlegroups.com
Actualmente estoy trabajando con Spring y la verdad me anda de perlas (básicamente estoy aprovechando muchas de sus carácteristcas, SPRING.AOP, SPRING.ORM Integration, SPRING NUnit, SpringWeb-SpringControllerFactory para integración y administración de la sesión NH en ASP.NET - MVC, ya son 7 meses y ha sido fundamental en nuestro desarrollo de un proyecto grande además.

No tengo experiencia con castle.

Edgar Ramos

unread,
Sep 2, 2010, 10:34:18 AM9/2/10
to altnet-...@googlegroups.com
Y todo lo que mencionas los has tenido que configurar en archivos xml ?

Saludos

Edgar

El 2 de septiembre de 2010 09:32, jose ubaldo carvajal <pro...@gmail.com> escribió:
Actualmente estoy trabajando con Spring y la verdad me anda de perlas (básicamente estoy aprovechando muchas de sus carácteristcas, SPRING.AOP, SPRING.ORM Integration, SPRING NUnit, SpringWeb-SpringControllerFactory para integración y administración de la sesión NH en ASP.NET - MVC, ya son 7 meses y ha sido fundamental en nuestro desarrollo de un proyecto grande además.

No tengo experiencia con castle.

--

Edgar Ramos

unread,
Sep 2, 2010, 10:35:46 AM9/2/10
to altnet-...@googlegroups.com
Imagino tambíen que si utilizas Spring para IoC estas inyectando tus dependencias via propiedad y no via constructor ?

Saludos

Edgar

jose ubaldo carvajal

unread,
Sep 2, 2010, 10:37:24 AM9/2/10
to altnet-...@googlegroups.com
Efectivamente, vía XML, haciando DI por propiedades, una vez bien estructurada tu arquitectura, no es ningún dolor de cabeza mantener los XML.

Alejandro Labra

unread,
Sep 2, 2010, 10:42:09 AM9/2/10
to AltNet-Hispano
Jose,
y encontrar los errores, es muy problemático?

jose ubaldo carvajal

unread,
Sep 2, 2010, 10:52:04 AM9/2/10
to altnet-...@googlegroups.com
Va siendo cuestión de experiencia y de las elecciones que hagas (ej. AOP declarativa por regex o por demarcación de atributos, tampoco son muchas las opciones, entonces no es mucho por aprender...). Naturalmente, cuando empecé era un poco más difícil pero no hubo un error (empezando...) que me tomara más de 20 min. para descubrirlo y corregirlo, ahora ya no tengo errores relacionados con SPRING, de nuevo, una vez bien organizada tu arquitectura, el mantenimiento no me ha parecido difícil. y es una cuestión más de cultura, saber que, por ejemplo cuando defines una nueva dependencia en una clase de tu domínio (simplemente, la inyectas en la definición XML del IoC) y listo!

Un saludo.


Carlos Peix

unread,
Sep 2, 2010, 11:26:55 AM9/2/10
to altnet-hispano
Gracias Jose,

Esta descripcion que hiciste a mi me sirvio, aunque sea usuario de Windsor, principalmente.

Un abrazo

----------------------------------
Carlos Peix

2010/9/2 jose ubaldo carvajal <pro...@gmail.com>
Va siendo cuestión de experiencia y de las elecciones que hagas (ej. AOP declarativa por regex o por demarcación de atributos, tampoco son muchas las opciones, entonces no es mucho por aprender...). Naturalmente, cuando empecé era un poco más difícil pero no hubo un error (empezando...) que me tomara más de 20 min. para descubrirlo y corregirlo, ahora ya no tengo errores relacionados con SPRING, de nuevo, una vez bien organizada tu arquitectura, el mantenimiento no me ha parecido difícil. y es una cuestión más de cultura, saber que, por ejemplo cuando defines una nueva dependencia en una clase de tu domínio (simplemente, la inyectas en la definición XML del IoC) y listo!

Un saludo.


Cristian Prieto

unread,
Sep 2, 2010, 12:19:28 PM9/2/10
to altnet-...@googlegroups.com
sin dudarlo, en mi caso, Castle...

Cristian Prieto


2010/9/2 Carlos Peix <carlo...@gmail.com>

Ariel Piñeiro

unread,
Sep 2, 2010, 1:14:14 PM9/2/10
to altnet-...@googlegroups.com
Fijate acá, tengo un ejemplo simple de un aplicación que estaba haciendo con Quartz.NET.


Es un ejemplo simple de no más de 2 o 3 tipos de objetos inyectados desde un archivo de configuración. Y hay una app. de consola que levanta todos esos datos.



2010/9/2 Cristian Prieto <keme...@gmail.com>

Ariel Piñeiro

unread,
Sep 2, 2010, 1:15:40 PM9/2/10
to altnet-...@googlegroups.com
Y acá está la clase que obtiene el object context del XML.


Leonardo Micheloni

unread,
Sep 2, 2010, 1:17:19 PM9/2/10
to altnet-...@googlegroups.com
Yo también prefiero Castle

2010/9/2 Cristian Prieto <keme...@gmail.com>:

Edgar Ramos

unread,
Sep 2, 2010, 1:20:23 PM9/2/10
to altnet-...@googlegroups.com
Me sumo a la preferencia de Castle, en lo personal prefiero configurar via programación que via xml (con referencia a spring)

Saludos

Edgar

Walter Poch

unread,
Sep 2, 2010, 1:24:50 PM9/2/10
to altnet-...@googlegroups.com
No conozco Spring, pero si algo de Unity(configurado por XML) y realmente es complicado. Prefiero Castle con una clase de configuración (GuyWire/Bootstraper).

Saludos,
Saludos,

Walter G. Poch
Sr. .Net Developer
--------------------------------------------
Cell: +54 (9 341) 3353273
walte...@gmail.com

Alejandro Labra

unread,
Sep 2, 2010, 3:05:17 PM9/2/10
to AltNet-Hispano
Ariel, veo tus ejemplos y no se ve fácil y limpio....

Donde veo la diferencia, según sus comentarios, radica en la
configuración a través de XML en ves de clases.
y creo que la pregunta a hacer es que ganancia/perdida se tiene con
una configuración realizada en xml.

A mi parecer veo lo siguiente:
Ventajas:
* Modificación sin tener que compilar nuevamente.

Desventajas
* Difícultad para mantener
* Dificultad para encontrar errores


No se que opinan....

On 2 sep, 13:24, Walter Poch <walter.p...@gmail.com> wrote:
> No conozco Spring, pero si algo de Unity(configurado por XML) y realmente es
> complicado. Prefiero Castle con una clase de configuración
> (GuyWire/Bootstraper).
>
> Saludos,
>
> El 2 de septiembre de 2010 14:20, Edgar Ramos <eramose...@gmail.com>escribió:
>
>
>
>
>
>
>
>
>
> > Me sumo a la preferencia de Castle, en lo personal prefiero configurar via
> > programación que via xml (con referencia a spring)
>
> > Saludos
>
> > Edgar
>
> > El 2 de septiembre de 2010 12:17, Leonardo Micheloni <
> > leonardogabrielmichel...@gmail.com> escribió:
>
> > Yo también prefiero Castle
>
> >> 2010/9/2 Cristian Prieto <kement...@gmail.com>:
> >> > sin dudarlo, en mi caso, Castle...
> >> > Cristian Prieto
>
> >> > 2010/9/2 Carlos Peix <carlos.p...@gmail.com>
>
> >> >> Gracias Jose,
> >> >> Esta descripcion que hiciste a mi me sirvio, aunque sea usuario de
> >> >> Windsor, principalmente.
> >> >> Un abrazo
>
> >> >> ----------------------------------
> >> >> Carlos Peix
>
> >> >> 2010/9/2 jose ubaldo carvajal <prox...@gmail.com>
> >> >>> altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >> >>> Para tener acceso a más opciones, visita el grupo en
> >> >>>http://groups.google.com/group/altnet-hispano?hl=es.
>
> >> >> --
> >> >> Has recibido este mensaje porque estás suscrito al grupo
> >> "AltNet-Hispano"
> >> >> de Grupos de Google.
> >> >> Para publicar una entrada en este grupo, envía un correo electrónico a
> >> >> altnet-...@googlegroups.com.
> >> >> Para anular tu suscripción a este grupo, envía un correo electrónico a
> >> >> altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >> >> Para tener acceso a más opciones, visita el grupo en
> >> >>http://groups.google.com/group/altnet-hispano?hl=es.
>
> >> > --
> >> > Has recibido este mensaje porque estás suscrito al grupo
> >> "AltNet-Hispano" de
> >> > Grupos de Google.
> >> > Para publicar una entrada en este grupo, envía un correo electrónico a
> >> > altnet-...@googlegroups.com.
> >> > Para anular tu suscripción a este grupo, envía un correo electrónico a
> >> > altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >> > Para tener acceso a más opciones, visita el grupo en
> >> >http://groups.google.com/group/altnet-hispano?hl=es.
>
> >> --
> >> Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano"
> >> de Grupos de Google.
> >> Para publicar una entrada en este grupo, envía un correo electrónico a
> >> altnet-...@googlegroups.com.
> >> Para anular tu suscripción a este grupo, envía un correo electrónico a
> >> altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >> Para tener acceso a más opciones, visita el grupo en
> >>http://groups.google.com/group/altnet-hispano?hl=es.
>
> >  --
> > Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano"
> > de Grupos de Google.
> > Para publicar una entrada en este grupo, envía un correo electrónico a
> > altnet-...@googlegroups.com.
> > Para anular tu suscripción a este grupo, envía un correo electrónico a
> > altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> > Para tener acceso a más opciones, visita el grupo en
> >http://groups.google.com/group/altnet-hispano?hl=es.
>
> --
> Saludos,
>
> Walter G. Poch
> Sr. .Net Developer
> --------------------------------------------
> Cell: +54 (9 341) 3353273
> walter.p...@gmail.com

Ariel Piñeiro

unread,
Sep 2, 2010, 3:32:11 PM9/2/10
to altnet-...@googlegroups.com
Alejandro,
            dominás bien el paradigma de objetos? Hay 2 clases, y una contiene una lista de la otra, necesitás que lo baje más?

De las desventajas, ninguna es cierta, el mantenimiento es más que simple, si tu dominio está bien modelado, y los errores son muy fáciles de percibir, es muy raro que se "equivoque" Spring.

        public class PendingTask
        {
            public List<EasyJob> Jobs { get; set; }
        }
 
        public class EasyJob
        {
               //
               ..
               //
        }



2010/9/2 Alejandro Labra <alejand...@gmail.com>

Edgar Ramos

unread,
Sep 2, 2010, 3:55:15 PM9/2/10
to altnet-...@googlegroups.com
Ariel

Para los xml de spring posees intelligent sense ?
Cuan extenso se vuelve tu archivo xml si tu contexto involucra mas clases, interfaces, etc ?

Es simple curiosidad :)

Saludos

Edgar

2010/9/2 Ariel Piñeiro <arie...@gmail.com>

Walter Poch

unread,
Sep 2, 2010, 3:59:07 PM9/2/10
to altnet-...@googlegroups.com
Es buen punto saber si Spring tiene un schema .xsd que te permita el uso de Intellisense y disminuir la posibilidad de typos. 

Alejandro Labra

unread,
Sep 2, 2010, 4:17:34 PM9/2/10
to AltNet-Hispano
Ariel, parece que hay una confusión, se escapo un NO en el anterior
comentario escrito...
reescribo:

"Ariel, veo tus ejemplos y se ve fácil y limpio....
Donde veo la diferencia, según sus comentarios, radica en la "....

En cuanto a la dificultad para encontrar errores, la pregunta va
orientada a los comentarios anteriores, de Walter y Edgar, si tu sabes
si existe schema .xsd que te permita el uso de Intellisense....

saludos

On 2 sep, 15:59, Walter Poch <walter.p...@gmail.com> wrote:
> Es buen punto saber si Spring tiene un schema .xsd que te permita el uso de
> Intellisense y disminuir la posibilidad de typos.
>
> El 2 de septiembre de 2010 16:55, Edgar Ramos <eramose...@gmail.com>escribió:
>
>
>
>
>
>
>
>
>
> > Ariel
>
> > Para los xml de spring posees intelligent sense ?
> > Cuan extenso se vuelve tu archivo xml si tu contexto involucra mas clases,
> > interfaces, etc ?
>
> > Es simple curiosidad :)
>
> > Saludos
>
> > Edgar
>
> > 2010/9/2 Ariel Piñeiro <ariel...@gmail.com>
>
> >> Alejandro,
>
> >>             dominás bien el paradigma de objetos? Hay 2 clases, y una
> >> contiene una lista de la otra, necesitás que lo baje más?
>
> >> De las desventajas, ninguna es cierta, el mantenimiento es más que simple,
> >> si tu dominio está bien modelado, y los errores son muy fáciles de percibir,
> >> es muy raro que se "equivoque" Spring.
>
> >>         public class PendingTask
> >>         {
> >>             public List<EasyJob> Jobs { get; set; }
> >>         }
>
> >>         public class EasyJob
> >>         {
> >>                //
> >>                ..
> >>                //
> >>         }
>
> >> 2010/9/2 Alejandro Labra <alejandro.la...@gmail.com>
> >>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>
>
> >>> > >> >>> Para tener acceso a más opciones, visita el grupo en
> >>> > >> >>>http://groups.google.com/group/altnet-hispano?hl=es.
>
> >>> > >> >> --
> >>> > >> >> Has recibido este mensaje porque estás suscrito al grupo
> >>> > >> "AltNet-Hispano"
> >>> > >> >> de Grupos de Google.
> >>> > >> >> Para publicar una entrada en este grupo, envía un correo
> >>> electrónico a
> >>> > >> >> altnet-...@googlegroups.com.
> >>> > >> >> Para anular tu suscripción a este grupo, envía un correo
> >>> electrónico a
> >>> > >> >> altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>
>
> >>> > >> >> Para tener acceso a más opciones, visita el grupo en
> >>> > >> >>http://groups.google.com/group/altnet-hispano?hl=es.
>
> >>> > >> > --
> >>> > >> > Has recibido este mensaje porque estás suscrito al grupo
> >>> > >> "AltNet-Hispano" de
> >>> > >> > Grupos de Google.
> >>> > >> > Para publicar una entrada en este grupo, envía un correo
> >>> electrónico a
> >>> > >> > altnet-...@googlegroups.com.
> >>> > >> > Para anular tu suscripción a este grupo, envía un correo
> >>> electrónico a
> >>> > >> > altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>
>
> >>> > >> > Para tener acceso a más opciones, visita el grupo en
> >>> > >> >http://groups.google.com/group/altnet-hispano?hl=es.
>
> >>> > >> --
> >>> > >> Has recibido este mensaje porque estás suscrito al grupo
> >>> "AltNet-Hispano"
> >>> > >> de Grupos de Google.
> >>> > >> Para publicar una entrada en este grupo, envía un correo electrónico
> >>> a
> >>> > >> altnet-...@googlegroups.com.
> >>> > >> Para anular tu suscripción a este grupo, envía un correo electrónico
> >>> a
> >>> > >> altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>
>
> >>> > >> Para tener acceso a más opciones, visita el grupo en
> >>> > >>http://groups.google.com/group/altnet-hispano?hl=es.
>
> >>> > >  --
> >>> > > Has recibido este mensaje porque estás suscrito al grupo
> >>> "AltNet-Hispano"
> >>> > > de Grupos de Google.
> >>> > > Para publicar una entrada en este grupo, envía un correo electrónico
> >>> a
> >>> > > altnet-...@googlegroups.com.
> >>> > > Para anular tu suscripción a este grupo, envía un correo electrónico
> >>> a
> >>> > > altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>

Carlos Peix

unread,
Sep 2, 2010, 4:26:34 PM9/2/10
to altnet-hispano
Yo uso Castle Windsor y uso un poco de configuracion por fluent y otro poco por XML.

Windsor te permite mezclar ambas, la configuracion de componentes mediante XML me gusta mas para los componentes que requieren parametros configurables, por ejemplo, datos de server SMTP en un servicio de envio SMTP.

Por otro lado, me parece que no vale la pena discutir mucho, es sabido que ambos IoC containers son muy buenos, lo demas es cuestion de preferencias o costumbres (este ultimo es mi caso).

----------------------------------
Carlos Peix

2010/9/2 Alejandro Labra <alejand...@gmail.com>

Ariel Piñeiro

unread,
Sep 2, 2010, 4:31:58 PM9/2/10
to altnet-...@googlegroups.com
SIIII tiene XSD ! Anda muy bien por suerte, de hecho trae también trae templates estándars para crear nuevos proyectos!

2010/9/2 Walter Poch <walte...@gmail.com>

Alejandro Labra

unread,
Sep 2, 2010, 4:34:08 PM9/2/10
to AltNet-Hispano
Gracias a todos por sus comentarios....
me quedo más claro el tema...

saludos...
On 2 sep, 16:31, Ariel Piñeiro <ariel...@gmail.com> wrote:
> SIIII tiene XSD ! Anda muy bien por suerte, de hecho trae también trae
> templates estándars para crear nuevos proyectos!
>
> 2010/9/2 Walter Poch <walter.p...@gmail.com>
>
>
>
>
>
>
>
> > Es buen punto saber si Spring tiene un schema .xsd que te permita el uso de
> > Intellisense y disminuir la posibilidad de typos.
>
> > El 2 de septiembre de 2010 16:55, Edgar Ramos <eramose...@gmail.com>escribió:
>
> > Ariel
>
> >> Para los xml de spring posees intelligent sense ?
> >> Cuan extenso se vuelve tu archivo xml si tu contexto involucra mas clases,
> >> interfaces, etc ?
>
> >> Es simple curiosidad :)
>
> >> Saludos
>
> >> Edgar
>
> >> 2010/9/2 Ariel Piñeiro <ariel...@gmail.com>
>
> >>> Alejandro,
>
> >>>             dominás bien el paradigma de objetos? Hay 2 clases, y una
> >>> contiene una lista de la otra, necesitás que lo baje más?
>
> >>> De las desventajas, ninguna es cierta, el mantenimiento es más que
> >>> simple, si tu dominio está bien modelado, y los errores son muy fáciles de
> >>> percibir, es muy raro que se "equivoque" Spring.
>
> >>>         public class PendingTask
> >>>         {
> >>>             public List<EasyJob> Jobs { get; set; }
> >>>         }
>
> >>>         public class EasyJob
> >>>         {
> >>>                //
> >>>                ..
> >>>                //
> >>>         }
>
> >>> 2010/9/2 Alejandro Labra <alejandro.la...@gmail.com>
> >>>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>
>
> >>>> > >> >>> Para tener acceso a más opciones, visita el grupo en
> >>>> > >> >>>http://groups.google.com/group/altnet-hispano?hl=es.
>
> >>>> > >> >> --
> >>>> > >> >> Has recibido este mensaje porque estás suscrito al grupo
> >>>> > >> "AltNet-Hispano"
> >>>> > >> >> de Grupos de Google.
> >>>> > >> >> Para publicar una entrada en este grupo, envía un correo
> >>>> electrónico a
> >>>> > >> >> altnet-...@googlegroups.com.
> >>>> > >> >> Para anular tu suscripción a este grupo, envía un correo
> >>>> electrónico a
> >>>> > >> >> altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >>>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>
>
> >>>> > >> >> Para tener acceso a más opciones, visita el grupo en
> >>>> > >> >>http://groups.google.com/group/altnet-hispano?hl=es.
>
> >>>> > >> > --
> >>>> > >> > Has recibido este mensaje porque estás suscrito al grupo
> >>>> > >> "AltNet-Hispano" de
> >>>> > >> > Grupos de Google.
> >>>> > >> > Para publicar una entrada en este grupo, envía un correo
> >>>> electrónico a
> >>>> > >> > altnet-...@googlegroups.com.
> >>>> > >> > Para anular tu suscripción a este grupo, envía un correo
> >>>> electrónico a
> >>>> > >> > altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >>>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>
>
> >>>> > >> > Para tener acceso a más opciones, visita el grupo en
> >>>> > >> >http://groups.google.com/group/altnet-hispano?hl=es.
>
> >>>> > >> --
> >>>> > >> Has recibido este mensaje porque estás suscrito al grupo
> >>>> "AltNet-Hispano"
> >>>> > >> de Grupos de Google.
> >>>> > >> Para publicar una entrada en este grupo, envía un correo
> >>>> electrónico a
> >>>> > >> altnet-...@googlegroups.com.
> >>>> > >> Para anular tu suscripción a este grupo, envía un correo
> >>>> electrónico a
> >>>> > >> altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >>>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>
>
> >>>> > >> Para tener acceso a más opciones, visita el grupo en
> >>>> > >>http://groups.google.com/group/altnet-hispano?hl=es.
>
> >>>> > >  --
> >>>> > > Has recibido este mensaje porque estás suscrito al grupo
> >>>> "AltNet-Hispano"
> >>>> > > de Grupos de Google.
> >>>> > > Para publicar una entrada en este grupo, envía un correo electrónico
> >>>> a
> >>>> > > altnet-...@googlegroups.com.
> >>>> > > Para anular tu suscripción a este grupo, envía un correo electrónico
> >>>> a
> >>>> > > altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsu...@googlegroups.com>
> >>>> <altnet-hispano%2Bunsu...@googlegroups.com<altnet-hispano%252Buns...@googlegroups.com>
> ...
>
> leer más »

Nelo Pauselli

unread,
Sep 2, 2010, 6:16:09 PM9/2/10
to altnet-...@googlegroups.com
Hola Alejandro... parece que mi comentario va algo rezagado...

por lo que veo, todos estamos hablando de IoC / DI ¿correcto?, porque
ambos frameworks tienen mas cosas que eso...

siendo este el caso, te diría que le des una mirada a Common Service
Locator (http://commonservicelocator.codeplex.com/) que te va a
permitir cambiar entre spring, castle y varios otros sin tener que
modificar muchas líneas de código y podés hacer tus pruebas y sacar
tus conclusiones.

Aquí parece que cada quien tiene su preferencia, y algunos hasta su
corazón, puesto en alguno de los dos ("sin pensarlo..."). He trabajado
con ambos y creo que el punto fuerte de spring es la documentación
mientras que de castle la usabilidad y evolución.

Hay cosas en castle que no se si spring las soporta como por ejemplo
poder registrar todos tus repositorios con una sola sentencia:

Container.Register(AllTypes.Of<IRepository>().FromAssembly(typeof
(MyRepository).Assembly).WithService.FromInterface());

si te manejas con este tipo de configuraciones, en unas pocas líneas
tenes el 80% de tus clases registradas y no tenés que configurar cada
nueva clase que crees, siempre y cuando implemente IRepository.

Saludos.
Nelo.


2010/9/2 Alejandro Labra <alejand...@gmail.com>:

Jorge Rowies

unread,
Sep 2, 2010, 7:23:36 PM9/2/10
to altnet-...@googlegroups.com
En donde yo trabajo estamos actualmente utilizando spring.net y puedo decir por experiencia que la configuración via xml se hace bastante engorrosa a la hora de hacer refactor (cambiar clases de lugar, rename de todo tipo, etc..), hay un proyecto para agregar a spring.net configuración fluent llamado Recoil pero está medio muerto.

En lo que respecta a potencia la verdad que spring es muy bueno, pero no he utilizado tanto Castle como para saber cuál de los dos es más potente.

Por otro lado, en un post de este thread lei:

"Imagino tambíen que si utilizas Spring para IoC estas inyectando tus dependencias via propiedad y no via constructor ?"
No se bien a que se refiere este comentario, pero spring soporta inyección tanto via properties como también via constructor y a mi entender, via constructor es el tipo de inyección más recomendable siempre (a menos que haya algún motivo que justifique inyección via properties).

Saludos


2010/9/2 Nelo Pauselli <nelopa...@gmail.com>

Cristian Prieto

unread,
Sep 2, 2010, 8:15:27 PM9/2/10
to altnet-...@googlegroups.com
Yep, mi corazoncito esta con Castle... y un Service Locator es considerado hasta un antipatron (http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx y http://blog.ploeh.dk/2010/08/30/DontCallTheContainerItllCallYou.aspx

No conozco spring.net, y probablemente mi "amor" por castle se deba a que como menciona Nello es "más que un contenedor" (antes de eso habia usado Ninject) por ejemplo, para desarrollo web Castle (en parte debido a su historia y attachment con cosas como Monorail) tiene ya creada una buena cantidad de "facilities" que te _facilitan_ (valga la "casi" redundancia) el pegarte con concerns de infraestructura, a eso le sumamos cosas como buena documentación (si, le falta aún pero el wiki de Castle va creciendo poco a poco) y la flexibilidad de uso....

Es importante hacer notar que muchos proyectos importantes si bien no se han "casado" con ninguno de ellos, suelen usar uno de los containers y facilidades incluídas en alguno de ellos, por ejemplo, NServiceBus, Orchard, MassTransit, FubuMVC, etc...

Recalco, no conozco spring, pero Castle me ha funcionado rebien en estos últimos años...

Saludos!

Cristian Prieto


2010/9/2 Nelo Pauselli <nelopa...@gmail.com>

Nelo Pauselli

unread,
Sep 2, 2010, 9:03:51 PM9/2/10
to altnet-...@googlegroups.com
Hola Cristian, creo que usar CommonServiceLocator desparramado por
todo el código en lugar de DI es el antipattern (o un código "feo"
bajo el nombre de un patrón), pero usar
commonServiceLocator.GetInstance en los lugares donde usarías
container.Resolve o context.GetObject no lo veo mal. Es mas, lo veo
prácticamente igual salvo que te estás "independizando" en ese momento
del contenedor y podés hacer fácilmente pruebas a ver cual te "gusta"
mas.

También es verdad que en algunos casos hasta podés evitar usar
cualquiera de los tres, por ejemplo con ASP.NET MVC y la factory de
controllers. Pero en otros no, como por ejemplo en servicios (web o
wcf), pues en algún momento tenés que hacer el get del
"ApplicationService" el cual si viene todo inyectado.

Saludos.
Nelo.

PD: yo también me quedo con castle ;).

2010/9/2 Cristian Prieto <keme...@gmail.com>:

Edgar Ramos

unread,
Sep 2, 2010, 9:10:32 PM9/2/10
to altnet-...@googlegroups.com
Efectivamente spring soporte ID via constructor y via setter, con el comentario solo ratificaba la estadística (empírica de mi modo de ver) de que en java (por los ejemplos que vi en blogs y en la documentacion de spring en java) spring populariza I.D. via propiedades

Saludos

Edgar

Ariel Piñeiro

unread,
Sep 2, 2010, 9:16:18 PM9/2/10
to altnet-...@googlegroups.com
Usar DI en un constructor no me parece buena práctica al menos para mí.

2010/9/2 Edgar Ramos <eramo...@gmail.com>

Carlos Peix

unread,
Sep 2, 2010, 10:06:56 PM9/2/10
to altnet-...@googlegroups.com
Hola Ariel,

Podrias ampliar sobre los motivos? me interesa saberlo porque yo uso inyeccion via constructor y no le veo contras.

Gracias por anticipado

----------------------------------
Carlos Peix

2010/9/2 Ariel Piñeiro <arie...@gmail.com>

Jorge Rowies

unread,
Sep 3, 2010, 8:31:30 AM9/3/10
to altnet-...@googlegroups.com
Ariel, yo lo veo justamente al revés, porqué dices que no es buena práctica?

2010/9/2 Ariel Piñeiro <arie...@gmail.com>

Leonardo Micheloni

unread,
Sep 3, 2010, 8:44:30 AM9/3/10
to altnet-...@googlegroups.com
yo también, si una clase depende si o si de otra para hacer un trabajo
por qué no poner la dependencia en el constructor?

2010/9/3 Jorge Rowies <jorge....@gmail.com>:

Alejandro Labra

unread,
Sep 3, 2010, 9:36:38 AM9/3/10
to AltNet-Hispano
Gracias Nelo por tu comentario....voy a echarle un vistazo al proyecto
http://commonservicelocator.codeplex.com/

saludos...

Carlos Peix

unread,
Sep 3, 2010, 10:31:40 AM9/3/10
to altnet-hispano
Hola Alejandro,

Me gustaria aclarar explicitamente lo que Nelo sugirio y agrego mi propio enfasis: "usar algo parecido a service locator es un antipatron, siempre es preferible usar inyeccion de dependencias". Cunado no queda otra alternativa, entonces es preferible usar ServiceLocator en lugar de la referencia directa al container.

Por ejemplo, yo lo uso en WebServices (.asmx) donde no tengo control de la creacion de la instancia para inyectar dependencias. Supongo que a la gente que usa WebForms debe pasarle algo parecido.

Un abrazo

----------------------------------
Carlos Peix

2010/9/3 Alejandro Labra <alejand...@gmail.com>
Gracias Nelo por tu comentario....voy a echarle un vistazo al proyecto
http://commonservicelocator.codeplex.com/

saludos...

--

Cristian Prieto

unread,
Sep 3, 2010, 12:11:02 PM9/3/10
to altnet-...@googlegroups.com
En eso concordamos, así que creo que debo ampliar un poco mi posición al respecto...

Un Common Service Locator (o simplemente Service Locator) debe ser la "Atomic Bomb" o el "Last Resource" cuando de injectar dependencias se trata...

Angel Java Lopez

unread,
Sep 3, 2010, 12:18:01 PM9/3/10
to altnet-...@googlegroups.com

Edgar Ramos

unread,
Sep 3, 2010, 1:04:10 PM9/3/10
to altnet-...@googlegroups.com
Carlos y Cristian

Haber si entendi bien, resulta que tengo preferencia por un contenedor X, y al parecer luego de algun tiempo este no tiene mas soporte, y decido utilizar un Contenedor Y, al haber utilizado en un principio Common Service Locator, para abstraerme de uno u otro contenedor, estoy utilizandolo como un antipatron ?


Saludos

Edgar

Leonardo Micheloni

unread,
Sep 3, 2010, 1:16:59 PM9/3/10
to altnet-...@googlegroups.com
en mi experiencia, si usas en una aplicación un contenedor x es raro
que después de un tiempo lo quieras cambiar, me parece que es parecido
a "nhibernate te sirve por si un día cambia el motor de base de datos"
esos casos son contados con los dedos de una mano (desde mi
experiencia), por lo menos yo, si algo funciona no lo cambio porque
aparece uno mejor o deja de tener soporte, por ejemplo Windsor está
super probado, no veo en qué puede influir esto.

2010/9/3 Edgar Ramos <eramo...@gmail.com>:

Edgar Ramos

unread,
Sep 3, 2010, 1:22:15 PM9/3/10
to altnet-...@googlegroups.com
Leonardo algun bug prioritario y que no se resuelve puede sonar como causal ?, no lo se ?, desacoplamiento de mi aplicacion ?,

Saludos

Edgar

Leonardo Micheloni

unread,
Sep 3, 2010, 1:29:51 PM9/3/10
to altnet-...@googlegroups.com
no sé, no me topé con casos de frameworks que uso con bugs tan
prioritarios que me obliguen a cambiarlo, en general uso versiones muy
estables.

2010/9/3 Edgar Ramos <eramo...@gmail.com>:

Cristian Prieto

unread,
Sep 3, 2010, 1:45:12 PM9/3/10
to altnet-...@googlegroups.com
Bien, imaginemos que "ese" es tu preocupación...

Ojo, cuando menciono que un Service Locator es la "Atomic Bomb" en cuanto a DI/IoC me refiero exactamente a eso: uno no va a la guerra con una bomba atómica "por si acaso", se usa (en teoría) como el "último" recurso en caso de estar perdiendo... Ya aprendimos esa lección en Hiroshima y Nagasaki, pero otro día hablamos acerca de historia de las guerras mundiales (un tema del que personalmente soy mega fan).

Entonces, aclarado eso, si lo que te preocupa es "one ring to rule them all", es sencillo, no te bases en una implementación "concreta" del service locator (como lo es el common service locator, intención buena, ejecución un poco desviada), si no en una "abstracta", recuerda, programar sobre abstraciones, no sobre implementaciones concretas.

Por ejemplo, no cae mal entonces tener un IServiceLocator y que luego "injectes" esa interface en el consumidor del locator, como lo explica "ploeh" en su blog al final http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx

Bien hay momentos donde un concrete service locator (nuevamente, como el Common Service Locator) es necesario, como por ejemplo en atributos de .Net (donde no "directamente" controlamos su creación e instancia, por ejemplo, en ASP.NET MVC -ojo, no es este caso en la MVC3 que viene) pero como menciono arriba, nuevamente este es un caso tipo "Hiroshima".

Saludos!

Cristian Prieto


2010/9/3 Edgar Ramos <eramo...@gmail.com>

Edgar Ramos

unread,
Sep 3, 2010, 1:53:17 PM9/3/10
to altnet-...@googlegroups.com
Extraído del blog que emitio Cristian

Ariel

---------
With this variation it becomes necessary to inject the Service Locator into the consumer. Constructor Injection is always a good choice for injecting dependencies
---------


Saludos

Edgar

Carlos Peix

unread,
Sep 3, 2010, 1:58:24 PM9/3/10
to altnet-hispano
Hola Edgar,

No esta mal que uses Common Service Locator para abstraerte de la implementacion especifica de tu IoC, en general todos buscamos abstraernos de implementaciones concretas.

Lo que esta mal o, en todo caso, no se recomienda, es acceder directamente al IoC (sea a traves del Common Service Locator o no) al IoC para buscar una referencia a un servicio. Me explico con un ejemplo:

// NO RECOMENDADO
public class CarlosController {
    private IRepository _repository;

    public CarlosController() {
      _repository = ServiceLocator.Resolve<IRepository>(); // Common Service Locator
    }
}


// RECOMENDADO
public class CarlosController {
    private IRepository _repository;

    public CarlosController(IRepository repository) {
      _repository = repository;
    }
}

Insisto, el primero no esta mal porque uses Common Service Locator, esta mal porque vas activamente al IoC en busca del componente, lo que implica que, para tus tests, tengas que tener el IoC funcionando.

----------------------------------
Carlos Peix

2010/9/3 Edgar Ramos <eramo...@gmail.com>

José F. Romaniello

unread,
Sep 3, 2010, 2:07:27 PM9/3/10
to altnet-...@googlegroups.com
El 3 de septiembre de 2010 14:58, Carlos Peix <carlo...@gmail.com> escribió:
Insisto, el primero no esta mal porque uses Common Service Locator, esta mal porque vas activamente al IoC en busca del componente, lo que implica que, para tus tests, tengas que tener el IoC funcionando.

Totalmente de acuerdo con lo que dice Carlos, hay como un dicho que dice que vos no tenes que llamar al container, el container te llama a vos.
Salvo en lugares muy específicos como lo puede ser el ControllerFactory de MVC...no es aconsejable que llames al SL.

Snahider

unread,
Sep 5, 2010, 8:35:16 PM9/5/10
to AltNet-Hispano
Yo también me inclino por Castle; aunque, si aún trabajas con
WebForms, Spring.net te ayuda bastante al momento de realizar las
inyecciones al code behind de los aspx

Saludos

On 2 sep, 17:16, Nelo Pauselli <nelopause...@gmail.com> wrote:
> Hola Alejandro... parece que mi comentario va algo rezagado...
>
> por lo que veo, todos estamos hablando de IoC / DI ¿correcto?, porque
> ambos frameworks tienen mas cosas que eso...
>
> siendo este el caso, te diría que le des una mirada a Common Service
> Locator (http://commonservicelocator.codeplex.com/) que te va a
> permitir cambiar entre spring, castle y varios otros sin tener que
> modificar muchas líneas de código y podés hacer tus pruebas y sacar
> tus conclusiones.
>
> Aquí parece que cada quien tiene su preferencia, y algunos hasta su
> corazón, puesto en alguno de los dos ("sin pensarlo..."). He trabajado
> con ambos y creo que el punto fuerte de spring es la documentación
> mientras que de castle la usabilidad y evolución.
>
> Hay cosas en castle que no se si spring las soporta como por ejemplo
> poder registrar todos tus repositorios con una sola sentencia:
>
> Container.Register(AllTypes.Of<IRepository>().FromAssembly(typeof
> (MyRepository).Assembly).WithService.FromInterface());
>
> si te manejas con este tipo de configuraciones, en unas pocas líneas
> tenes el 80% de tus clases registradas y no tenés que configurar cada
> nueva clase que crees, siempre y cuando implemente IRepository.
>
> Saludos.
> Nelo.
>
> 2010/9/2 Alejandro Labra <alejandro.la...@gmail.com>:
> ...
>
> leer más »
Reply all
Reply to author
Forward
0 new messages