flozano.com: Haz commit, maldito!
Desarrollo de software y otras pérdidas de tiempo
Desarrollo de software y otras pérdidas de tiempo
Mar 2
La moda del social media empieza a tocar las narices. Las redes sociales son grafos que conectan nodos (individuales, organizaciones) mediante relaciones de distintos tipos (cosas en común, amistad, gustos…).
Lo que no entiendo es por qué se empeña la gente en crear vértices en ese grafo (crear relaciones) con cualquier pretexto. Es decir, relacionar a la gente que lava la ropa en la misma tintorería, o que usa el mismo electricista. Entiendo que las carnicerías y los electricistas intenten vender más, y que hay que intentarlo todo y apuntarse al carro de “interné”… pero señores/as tintoreros/as, fontaneros/as, verduleros/as, etc… ¿Realmente piensan que me siento identificado con su “marca”?
Una niña pija < --> Gucci
Un aficionado a las motos < --> Honda
Un banquero < --> Financial Times
Un perro-flauta < --> Papel de fumar OCB…
Un debianita < --> Free Software Foundation
¿¿¿…..??? < --> “Tintorería Conchín”
¿¿?…..??? < ---> “Papelería Amparito”
¿Quién puede querer estar en esas casillas, aparte de los sobrinos de Conchín y Amparito? Exacto, nadie.
Nov 17
El otro día, torpe de mi, estaba migrando una aplicación IIS6 a otra IIS7. Todo parecía marchar bien, a excepción del lazy-loading fuera de los límites de los métodos transaccionales… es decir, en la vista (si, se que es controvertido pasar entidades a la vista… pero mire usted, la vida es dura y no todo es como a uno le gustaría
El caso es que en IIS6 y en el servidor embebido de Visual Studio, la cosa iba perfectamente… pero en el IIS 7.5 no había manera. Entonces sonó la flauta en mi cabeza… cambié la configuración del AppPool de integrated pipeline a classic pipeline y bingo, a funcionar! Pero, obviamente, la idea es olvidarse del doble pipeline de peticiones IIS+filtro isapi, y para eso está el integrated pipeline…
Lo que ocurrió fue que “se me olvidó” que en el integrated pipeline, la sección system.web/httpModules del web.config pinta poco, y hay que mover (o copiar, si quieres que vaya en cualquier entorno) los módulos ahí declarados desde system.web/httpModules a system.webServer/modules… entre ellos, el OSIV, el loader de spring… Una vez hecho eso, el integrated y todas sus ventajas se volvieron a llevar bien con el OSIV de Spring.NET+NHibernate.
El integrated pipeline tiene otras sorpresas, como la imposibilidad de hacer, de forma natural, que haya una doble autenticación “básica” http + forms (bastante común en entornos de preproducción, “pruebas” de cliente, aceptaciones de maquetas…) Para esto he estado pensando soluciones y, la verdad la verdad, veo pocas que me gusten (que me gusten = que no involucren cambiar el código, dado que éste debe ser el mismo en desarrollo/integración que en producción, y en producción no existirá este problema…)
Oct 25
La inyección de dependencias es uno de esos patrones que realmente hay que usar en cualquier proyecto no trivial. En .NET está muy de moda Castle Windsor y algún otro contenedor ligero… pero yo estoy bastante cómodo (de momento, no descarto nada) con Spring.NET. A la hora de integrar Spring.NET con ASP.NET MVC, eché un vistazo a google y nada de lo que ví me convenció realmente (igual no busqué demasiado), así que decidí hacermelo yo.
Aprovechando la facilidad para extender el framework, en el global.asax.cs metemos una línea como esta:
1 2 | // ControllerBuilder, para que se inyecten los controladores. ControllerBuilder.Current.SetControllerFactory(new Arc.Web.Mvc.SpringControllerFactory()); |
y creamos la clase (Arc.Web.Mvc.SpringControllerFactory) tal que así:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | namespace Arc.Web.Mvc { public class SpringControllerFactory : DefaultControllerFactory, IControllerFactory { #region IControllerFactory Members public IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName) { // Probado y funciona! IController ctrl = base.CreateController(requestContext, controllerName); if(ctrl!=null) { IApplicationContext ctx = ContextRegistry.GetContext(); string objectName = controllerName + "Controller"; if (ctx.ContainsObjectDefinition(objectName)) { ctrl = (IController)ctx.ConfigureObject(ctrl, objectName); } } return ctrl; } #endregion } } |
Luego solo necesitamos definir los controllers en el application-context de spring como cualquier otro objeto:
<object name="AccountController" type="W.Web.Public.Controllers.AccountController, W.Web.Public" autowire="byName" singleton="false"/>
Y ya está
Oct 7
Llevo unas semanas tocando ASP.NET MVC, y me gustaría comentar que es un buen framework para hacer sitios Web. Sin embargo, creo que le queda un gran camino para ser útil en aplicaciones Web. Para mi, son cosas radicalmente distintas en el 95% de los casos. Hay casos en los que está más difuso, pero son pocos.
El caso es que ASP.NET MVC es bueno. Abraza el modelo stateless inherente al HTTP. Abraza también el modelo de recursos “localizables” mediante identificadores uniformes URL. ASP.NET WebForms se olvidaba de todo esto y montaba una capa de abstracción orientada a eventos y componentes, tan potente como peligrosa e inadecuada para según qué proyectos.
ASP.NET MVC tiene fallos, que se pueden solucionar en su mayoría dada su plugabilidad (toma palabro), o que se están subsanando en la versión 2 que vendrá con .NET 4.0 y VS2010 – versión de la que ya hay previews y que parece ser muy interesante.
Cosas que no me gustan de ASP.NET:
Cosas buenas:
That’s all, a ver que trae la próxima Preview de la versión 2!