Siguiendo AlNet Hispano y al grupo de NHibernate, me voy enterando de
muchas cosas que necesito saber para desarrollar una aplicacion
siguiendo los mejores estandares de la industria
por ejemplo (para mi todo esto es nuevo tema y el como usar su framework)
.- IoC, ID : Castle.Windsor y Service Locator
.- Test Unitarios y de Integracion : nunit y moq
.- Persistencia : NHIbernate
.- Si mi aplicacion es para la web : Se que debo utilizar framework
que implementen el patron MVC, cual elegir ?, porque ?, todo siguiente
con el pensamiento AlNet
.- De igual forma para Programacion Orientada a Aspectos ?
.- etc, etc, hay tanto que no creo haber empezado por el principio
Gracias a todos por sus sugerencias
--
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.
El día 5 de abril de 2010 13:19, Gustavo Ringel
<gustavo...@gmail.com> escribió:
Gracias por las sugerencias
El día 5 de abril de 2010 13:17, Diego Mijelshon
<di...@mijelshon.com.ar> escribió:
El día 5 de abril de 2010 13:32, Gustavo Ringel
<gustavo...@gmail.com> escribió:
Mono Rails o ASP Net MVC
Gracias nuevamente
El día 5 de abril de 2010 14:32, Angel Java Lopez
<ajlop...@gmail.com> escribió:
porq hoy en dia el 90% de los consumidores de tu server-side API son clientes rest (AJAX con JSON o Atom)porq con MVC tenes q crear a mano tu API rest-compatible server-sideporq con MVC tenes q manualmente mantener la consistencia rest de tu API
porq con MVC rendereas "views" q son al pedo porq es preferible renderar las views client-side (perf, dinamismo, etc.)
porq con MVC tenes q crear exactamente lo mismo para cada entidad q tenes (si queres consistencia rest-like)
con EF + WCF Data Services tenes el mismo poder, con la consistencia *gratis*, y con todos los hooks q necesitas para pluggear tu custom biz logic y validacion q puedas necesitar.
y te hace JSON/Atom automaticamente.exito mundial
porq hoy en dia el 90% de los consumidores de tu server-side API son clientes rest (AJAX con JSON o Atom)porq con MVC tenes q crear a mano tu API rest-compatible server-sideporq con MVC tenes q manualmente mantener la consistencia rest de tu APIEsto es cierto en el "mundo kzu". No digo que no sea un mundo real, al contrario, pero hay otro mundo, creo que masivamente mas grande, en el que ese porcentaje bien podria invertirse. No me pidan que respalde mis afirmaciones con cifras, cada cual sabra.
porq con MVC tenes q crear exactamente lo mismo para cada entidad q tenes (si queres consistencia rest-like)Mmmm, "entidad based pprogramming no es mi estilo". Nunca "hago lo mismo" para todas las entidades, por lo tanto esta caracteristica no es ni mala ni buena para mi.
con EF + WCF Data Services tenes el mismo poder, con la consistencia *gratis*, y con todos los hooks q necesitas para pluggear tu custom biz logic y validacion q puedas necesitar.Hooks para la logica de negocios? No, gracias. Para mi la logica de negocios es lo principal, los hooks son para los cross cutting concerns. Cuando la logica de negocios es un cross cutting concern que se "hookea" no me gusta. Sera que me estoy poniendo viejo.
Con respecto a lo que planteaste en el ultimo post:<kzu>Para endulzarte con lo q se puede hacer en 30' con EF y WCF Data Services: http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowIncludingXMLAndJSONIn30Minutes.aspxY para los q sospechen q hay algo q no se pueda testear: http://blogs.msdn.com/adonet/pages/walkthrough-test-driven-development-with-the-entity-framework-4-0.aspx</kzu>Uuuuhhhh, wizzard based programming? no gracias, a mi no me gusta.
----------------------------------
Carlos Peix
--
porq hoy en dia el 90% de los consumidores de tu server-side API son clientes rest (AJAX con JSON o Atom)porq con MVC tenes q crear a mano tu API rest-compatible server-sideporq con MVC tenes q manualmente mantener la consistencia rest de tu APIEsto es cierto en el "mundo kzu". No digo que no sea un mundo real, al contrario, pero hay otro mundo, creo que masivamente mas grande, en el que ese porcentaje bien podria invertirse. No me pidan que respalde mis afirmaciones con cifras, cada cual sabra.puede ser. pero no estamos hablando de apps ya funcionando. esas tienen un mix inevitable.para "green field", yo creo q ni lo pensaria demasiado... el cliente siempre va a querer "algo de AJAX, como GMail y Google Reader, viste?" ;)
porq con MVC tenes q crear exactamente lo mismo para cada entidad q tenes (si queres consistencia rest-like)Mmmm, "entidad based pprogramming no es mi estilo". Nunca "hago lo mismo" para todas las entidades, por lo tanto esta caracteristica no es ni mala ni buena para mi.Aclaro mi punto: para cada entitidad q es un aggregate root, quise decir ;)Que cosas haces distinto para cada una de ellas? No aplicas validacion siempre, por ej.? No las accedes via un service? (en MVC rendereando json, ese es efectivamente su service).
con EF + WCF Data Services tenes el mismo poder, con la consistencia *gratis*, y con todos los hooks q necesitas para pluggear tu custom biz logic y validacion q puedas necesitar.Hooks para la logica de negocios? No, gracias. Para mi la logica de negocios es lo principal, los hooks son para los cross cutting concerns. Cuando la logica de negocios es un cross cutting concern que se "hookea" no me gusta. Sera que me estoy poniendo viejo.Entiendo entonces q tu preferencia es por rich domain objects. Como integras eso con algo como EF? Partial classes con el behavior?
A mi me gusta el command/query separation (http://martinfowler.com/bliki/CommandQuerySeparation.html), hace q tu logica sea mas escalable, en vez de terminar con un Customer q hace desde comprar cosas hasta hacerte reclamos, cargar bugs y recibir regalos de navidad :P. La ventaja tambien es q se alinea muy bien con la separacion en Astoria (WCF Data Services) entre query interceptors y change interceptors (los primeros serian los query y los segundos los commands).
En esa perspectiva, la logica de negocios es una capa sobre la de entidades, y q puede ser invocada desde cualquier lado, incluso desde las operaciones REST de un webservice de astoria. Para ponerlo mas concreto:
[ChangeInterceptor("Purchases")]public void OnPurchase(IPurchase purchase, UpdateOperations operations){if (operations == UpdateOperations.Add){// Llamas a la logica dependiendo de la operacion, por ej:new AddPurchaseCommand(purchase).Execute();// o (esto puede ser un metodo definido en la partial interface, o incluso un extension method)purchase.Create();}
Con respecto a lo que planteaste en el ultimo post:<kzu>Para endulzarte con lo q se puede hacer en 30' con EF y WCF Data Services: http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowIncludingXMLAndJSONIn30Minutes.aspxY para los q sospechen q hay algo q no se pueda testear: http://blogs.msdn.com/adonet/pages/walkthrough-test-driven-development-with-the-entity-framework-4-0.aspx</kzu>Uuuuhhhh, wizzard based programming? no gracias, a mi no me gusta.nonononono. esto es *model*-based programming.si queres niveles de productividad mayores a los q podes lograr escribiendo a mano el mundo, es un camino muy viable.yo iria pidiendo conocimientos de T4 en las entrevistas laborales ;)
/kzu
--
Que te puedo decir, querido Carlos.En una sola frase: Time To Market.ORM, models, codegen, databinding, apunta a q tengas algo en el mercado, util y con funcionalidad valiosa para el cliente, en el menor tiempo posible.En un proyecto actual donde estoy usando EF + WCF Data Service puedo decirte q me permite enfocarme en el valor agregado, pensar en mis entidades y sus relaciones, sin pensar en la DB (uso un Database Project q me actualiza la DB sola) y en la logica sobre esas entidades. Hay un porcentaje sorprendente de logica q se puede aplicar en acciones REST sobre tus entidades. Una vez q haces el switch de "custom operations" a "REST operations" sobre tus entities, te das cuenta en realidad de q tu logica q no encuadra en ese modelo es en realidad la excepcion, no la regla.Tirame ejemplos concretos y te trato de convencer ;)
/kzu
--
En una sola frase: Time To Market.ORM, models, codegen, databinding, apunta a q tengas algo en el mercado, util y con funcionalidad valiosa para el cliente, en el menor tiempo posible.
....
Loosely related, pero interesante hilo de comentario, sobre time to market y otras yerbas:
El tiempo en q se haga el codegen es irrelevante (runtime o design-time) asi como la tecnica para generarlo (reflection.emit, intercepcion via dynamicproxy, o T4 templates).
Lo relevante es el nivel de abstraccion. Un modelo te permite visualizar y laburar a un nivel un cacho mas arriba q el codigo escrito a mano. 'ta claro q en algo como un "entity model" la abstraccion es como mucho leve (es un visualizer sobre lo q ya te da el object browser, digamos), pero igualmente util y productiva (agregar y remover entidades, renombrar, re-asociar, agregar y remover properties, etc. es algo q podes hacer en 5', mientras q con codigo termina llevando mucho mas tiempo).
El valor para mi esta en q podes iterar mas rapido el disenio de tus entidades (en el caso concreto de EF) sin pensar tanto en las lineas de codigo q vas a tener q cambiar (refactors solo te ayudan hasta ahi no mas...)
> porq hoy en dia el 90% de los consumidores de tu server-side API son clientes rest (AJAX con JSON o Atom)
se podrá conseguir algo de info respaldando esto ?
> porq con MVC tenes q crear exactamente lo mismo para cada entidad q tenes (si queres consistencia rest-like)
no tengo idea de ASP.NET MVC, pero si es exactamente lo mismo entonces
no sería fácil generar esto automáticamente ? rails por nombrar un
framework MVC es REST automáticamente...cada entidad que creas ya es
REST, me imagino que en ASP.NET si no lo ponen en alguna versión
futura se podrá generar facilmente, o no ?
> para "green field", yo creo q ni lo pensaria demasiado... el cliente siempre va a querer "algo de AJAX, como GMail y Google Reader, viste?" ;)
Entiendo que si lo que quiere es "algo de AJAX" entonces no necesito
que sea todo REST, ni siquiera todo JSON, en todo caso podría
agregarlo para las entidades que lo necesito o quizás ni siquiera eso
dependiendo de los requerimientos que tenga ?
> EF + WCF Data Services + Silverlight/AJAX
tampoco tengo ni idea de Silverlight, pero no sufre de los mismos
problemas que Flash ? No es SEO friendly, no tiene deep linkink, no
tiene accesibilidad (WAI, section 508), etc.
(pero a diferencia de Flash no tiene encima la contra de que está
instalado en un porcentaje muy pequeño de computadoras ?)
Cualquier información sobre este último punto es más que bien
recibida.
Muy buena la discusión, gracias por aportar tan buena info.
Saludos,
Quique
On 5 abr, 15:27, Daniel Cazzulino <dan...@cazzulino.com> wrote:
> EF + WCF Data Services + Silverlight/AJAX (con un templating engine
> client-side) es una combinacion killer IMO.
>
> MVC es un dolor de eggs...
>
> /kzu
>
> --
> Daniel Cazzulino | Developer Lead | XML MVP | Clarius Consulting | +1
> 425.329.3471
>
> 2010/4/5 Gustavo Ringel <gustavo.rin...@gmail.com>
>
>
>
> > Cual opinion? que se usara mas si es de Microsoft? Si, las herramientas
> > creadas por microsoft tienen en general mas adeptos.
> > La idea en Alt.Net es elegir las herramientas que mas se adapten a tu forma
> > de trabajo, o sea que la pertenencia a Microsoft de algo no debiera ser algo
> > que te defina a favor o en contra de una tecnologia.
>
> > Respecto a le falta mucho que quiere decir? Trataste de hacer algo con EF y
> > no fue suficiente para lo que querias hacer? o hacer algo sencillo se
> > transformo en complicado?
>
> > Yo no he llegado a probar EF, porque me siento comodo con NH y no me he
> > encontrado con trabas o limitaciones que me inviten por el momento a buscar
> > otros ORM's. Quizas el soporte de LINQ puede ser llamativo para probar EF en
> > el estado en que esta, pero lo que hay en NH me es suficiente por ahora para
> > mi forma de trabajo.
>
> > Como te dijo Diego, elegir NH o Castle o ASP.NET MVC no es una buena
> > eleccion de por si misma, depende de que problema tenes que resolver, que
> > conocimientos tiene el grupo de trabajo, que tiempo tenes para
> > desarrollar...
>
> > Gustavo.
>
> > 2010/4/5 Edgar Ramos <eramose...@gmail.com>
>
> >> Gustavo, con respecto a tu opinion, crees valida si se tratase de
> >> NHibernate y Entity Framework ?, no conozco mucho de los dos, pero por
> >> lo que he escuchado en las VAN's sobre ORM, a EF, le falta mucho,
> >> creen ustedes que esta distancia bien marcada existe entre los dos
> >> proyectos que se menciono Monorail y ASP.NET MVC ?
>
> >> El día 5 de abril de 2010 13:32, Gustavo Ringel
> >> <gustavo.rin...@gmail.com> escribió:
> >> > Monorail es un proyect mas maduro que ASP.NET MVC, pero probablemente
> >> por
> >> > ser de Microsoft ASP.NET MVC va a ser mas adaptado, o sea que tenes una
> >> > decision "politica" tambien al elegir uno u otro.
> >> > No tengo tanta experiencia en web como para darte una buena lista, yo he
> >> > usado ASP.NET MVC principalmente para hacer proyectos pequeños y hace
> >> lo que
> >> > necesito...
> >> > Gustavo.
>
> >> > 2010/4/5 Edgar Ramos <eramose...@gmail.com>
>
> >> >> Gracias Gustavo, tu personalmente cual crees que son las fortalezas y
> >> >> debilidades de Monorail, ASP.NET MVC, esta ultima es de Microsoft
> >> >> verdad ?
>
> >> >> El día 5 de abril de 2010 13:19, Gustavo Ringel
> >> >> <gustavo.rin...@gmail.com> escribió:
> >> >> > y...las opciones son miles...de todos modos mis sugerencias
> >> >> > MVC: Monorail, ASP.NET MVC
> >> >> > AOP: Podes usar Castle Windsor, si te preocupa mucho la eficiencia
> >> podes
> >> >> > usar PostSharp
> >> >> > etc etc? Aprender lenguajes dinamicos, ver porque los que escriben en
> >> >> > algunos de ellos se rien de MVP, MVC e incluso de IoC :)
> >> >> > Gustavo.
>
> >> >> > 2010/4/5 Edgar Ramos <eramose...@gmail.com>
> >> >> >> altnet-hispan...@googlegroups.com<altnet-hispano%2Bunsubscribe@go oglegroups.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%2Bunsubscribe@go oglegroups.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%2Bunsubscribe@go oglegroups.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%2Bunsubscribe@go oglegroups.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%2Bunsubscribe@go oglegroups.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%2Bunsubscribe@go oglegroups.com>
> porq hoy en dia el 90% de los consumidores de tu server-side API son clientes rest (AJAX con JSON o Atom)se podrá conseguir algo de info respaldando esto ?
> porq con MVC tenes q crear exactamente lo mismo para cada entidad q tenes (si queres consistencia rest-like)no tengo idea de ASP.NET MVC, pero si es exactamente lo mismo entonces
no sería fácil generar esto automáticamente ? rails por nombrar un
framework MVC es REST automáticamente...cada entidad que creas ya es
REST, me imagino que en ASP.NET si no lo ponen en alguna versión
futura se podrá generar facilmente, o no ?
> para "green field", yo creo q ni lo pensaria demasiado... el cliente siempre va a querer "algo de AJAX, como GMail y Google Reader, viste?" ;)Entiendo que si lo que quiere es "algo de AJAX" entonces no necesito
que sea todo REST, ni siquiera todo JSON, en todo caso podría
agregarlo para las entidades que lo necesito o quizás ni siquiera eso
dependiendo de los requerimientos que tenga ?
> EF + WCF Data Services + Silverlight/AJAXtampoco tengo ni idea de Silverlight, pero no sufre de los mismos
problemas que Flash ? No es SEO friendly, no tiene deep linkink, no
tiene accesibilidad (WAI, section 508), etc.
(pero a diferencia de Flash no tiene encima la contra de que está
instalado en un porcentaje muy pequeño de computadoras ?)