Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Desde la experiencia

    (Puntos:3, Interesante)
    por knocte (3563) el Miércoles, 17 Agosto de 2005, 10:26h (#573217)
    ( http://knocte.blogspot.com/ )
    Buenas. Desde la experiencia, os corroboro EMO que PHP deberíamos usarlo sólo en proyectos pequeños.

    Yo lo primero que utilicé fue ASP a secas. En cuanto el proyecto crecía, era muy difícil su mantenibilidad, por problemas derivados de su rapidez y potencia del lenguaje (VB Script).

    Más tarde, reescribí el proyecto ASP anterior en PHP [php.net], esperando que con software libre obtuviera resultados mejores. Y lo fueron: PHP, además de ser libre, era más potente, disponía de más herramientas para facilitar el trabajo, más funcionalidades, etc.

    Sin embargo, a medida que se va profundizando en PHP y los proyectos PHP van creciendo, se empiezan a ver proyectos para PHP que permiten tener más estructuradas las cosas: sistemas de plantillas como Smarty [php.net], frameworks MVC (Modelo Vista Controlador), e incluso la propia actualización de PHP4 a PHP5. Hasta que te das cuenta de que PHP, y todo su plataforma de desarrollo conjunta formada por estas herramientas, tiende a parecerse a cosas más robustas y estructuradas como las que existen para el mundo Java.

    También he tocado Java con aplicaciones web, un poquito de JSP's y demás, pero no demasiado. Porque la verdad, yo también soy un poco reticente a Java, por el hecho de que no es software libre (no quiero iniciar un flame please).

    Por eso, como veía que mi tendencia era llegar a Java sin usar Java, eché un vistazo a .NET. La plataforma .NET sin duda ofrece mucha productividad y el lenguaje C# se puede codear perfectamente con Java (incluso es mejor en algunas cosas EMNTHO, pero esto ya es discutible). Sin embargo, lo que echaba de menos con .NET eran dos cosas:

    a) Una plataforma de desarrollo multiplataforma.
    b) La tendencia "inherente" a los proyectos y plataformas de desarrollo del mundo Java de estructurar completamente y de forma exquisita el código, obteniendo capas de abstracción de la más mínima cosa.

    El punto (b) viene fundado, sobre todo, por la tecnología ASP.NET con la que irremediablamente he tenido que tratar a la ahora de utilizar la plataforma .NET. La versión 1.1 para empezar tiene importantes fallos concernientes a la arquitectura, como que resulta difícil hacer páginas web que validen con los estándares, y sobre todo, páginas web accesibles, en las que el JavaScript sea solamente una opción. Ofrece una capa de abstracción que hace que el programador se olvide de todo, y que incluso no necesite saber ni CSS ni JavaScript. Esto es en mi opinión un error. Además, desde el punto de vista del backend de una aplicación web, con ASP.NET es más difícil elaborar una estructura MVC (al parecer, Microsoft se enorgullece de hacer desaparecer, por arte de magia, la capa del Controlador).

    Sin embargo, en el mundo Java, un ejemplo del punto (b) puede ser el proyecto Maverick [sourceforge.net], que ofrece un framework MVC para desarrollar aplicaciones web. Algo bastante elegante.

    ¿Qué decisión tomé entonces? Una intermedia: no usar Java (J2EE), pero tampoco ASP.NET, ni nada que tenga que ver con Microsoft. Actualmente estoy utilizando un framework MVC denominado "Maverick.NET" [sourceforge.net], el cual es un port de Maverick de Java a C#, y me está dando unos resultados muy buenos. Para desarrollar utilizo MonoDevelop [monodevelop.org], y para los deployments utilizo el runtime de Mono [mono-project.com], Apache 2.0 [apache.org] y el módulo mod_mono [mono-project.com] que permite reenviar las peticiones al servidor XSP [go-mono.com] de Mono.

    Para la vista estoy utilizando serialización XML de las clases del controlador de manera que su resultado es transformado en XHTML mediante XSLT. Para la vista también utilizo CSS2/CSS3 (usando IE7/FixIE/IEpatch [edwards.name]) y JavaScript no intrusivo (Unobstrusive JavaScript) [blogspot.com], al igual que JavaScript agnósitco ("crossbrowser") para la captura e implementación de eventos, y demás cosas, e incluso un poquito de AJAX [wikipedia.org]...

    Para el controlador uso lenguaje C# compilado en una librería .DLL. No necesito a Microsoft para nada porque he conseguido hacer funcionar Maverick.NET con Mono.

    Y para el modelo, me había planteado utilizar algún sistema de mapeado objeto-relacional, como NHibernate [sourceforge.net], pero me estoy dando cuenta de que al final lo más eficiente, y EMO lo que es el futuro, son las bases de datos ya de por sí orientadas a objetos como DB4O [mono-project.com] (¡y te olvidas del SQL!).

    Agradecería, pues, cualquier sugerencia/comentario/crítica, para mejorar la arquitectura y forma de desarrollar que he escogido por el momento ;)

    Saludos.

    PD: Artículo original [blogspot.com].
    Puntos de inicio:    3  puntos
    Modificador extra 'Interesante'   0  

    Total marcador:   3  
  • por noone (17162) el Miércoles, 17 Agosto de 2005, 18:17h (#573517)
    deployment -> despliegue (en castellano).
    [ Padre ]
  • por ktzar (2730) <{miguelmail} {at} {gmail.com}> el Jueves, 18 Agosto de 2005, 13:14h (#574015)
    ( http://ktzar.com/ )
    Sísísí, lo has puesto dos veces para poder decir que claro, como no va con Mono pues va mal...
    ;)
    --
    kTzAR
    [ Padre ]
  • 2 respuestas por debajo de tu umbral de lectura actual.