Programacion Web.. ¿PHP o ASP.NET?

Si bien hace tiempo que trabajo desarrollando webs mi mayor fuerte pasa por el lado de PHP. Por una cuestión de experiencia y tiempo, podríamos decir que la tengo un poco más clara y le conozco más las mañas. Pero también empecé a incursionar en el desarrollo web usando .NET. Y si bien son muy distintos en cuanto a la forma de programar, de organizar los sitios y la complejidad, cada uno tiene sus fuertes para cada tipo de desarrollo. Ejemplifiquemos un poco esto.

PHP es un lenguaje considerado “Open Source”; quiere decir que basta con instalar un servidor Apache (el cual es gratis) para que tengamos nuestro sitio funcional 100%. Apache puede correr tanto en Windows como Linux y Mac. Con .NET ya tendremos que elegir el lenguaje primero, que puede ser C# o Visual Basic. Son similares en algunos puntos y distintos en muchos otros. C# está basado en el viejo C (con innumerables mejoras) y Visual Basic viene trayendo toda la potencia del Basic y sus sucesores. Para cualquiera de los dos necesitamos un servidor IIS (Internet Information Service) el cual viene con Windows, lo que ya nos limita a un solo sistema operativo con el agregado de que si queremos publicar el sitio lo mejor sería tener una licencia de Windows, con los costos que ello genera.

Para desarrollar webs usando PHP basta con tener un editor de texto enriquecido (Notepad++, TextPad) o alguna suite (Adobe viene con Dreamweaver, que si bien a mi no me gusta, es muy completo). También existen varios frameworks para utilizar acorde a nuestras necesidades. Es decir, herramientas que potencian el uso del lenguaje dándole una visibilidad más personalizada y de alguna manera, intentando facilitarnos las cosas. Algunas veces no lo consigue y muchas otras si, de acuerdo al trabajo que tengamos que realizar. Mayormente para realizar webs de usuario final (las clásicas paginas que uno puede ver por la web, del estilo corporativas e informativas) no son necesarios los frameworks, pero si en el caso de que queramos hacer sistemas webs, como ser gestores de contenido, administradores y demás. Incluso hay algunos especializados, por ejemplo, para construir sitios con carrito de compras (Magento y osCommerce) que vienen con un montón de herramientas y opciones de personalización.
Además con solo tener un poco de conocimiento de HTML además de PHP, podemos armar un sitio rápidamente.  El código se inserta dentro de los tags de HTML y listo. Instalado en el servidor, el sitio funciona.

Ya con .NET la cosa cambia. Primero que es necesario usar el framework para que la cosa sea sencilla. Necesitamos el Visual Studio, el .NET framework (ambos van de la mano; a mayor versión del Framework, mas nueva la versión de Visual Studio que se necesita). Por otro lado la forma de programar es diferente. Si bien se generan paginas HTML, el código propiamente dicho se programa aparte en un archivo independiente, asociado al HTML (archivo con extensión aspx; y el código o “CodeBehind” iría en un archivo de extensión cs). Con lo cual ya para cada site no solo tendremos estos 2 archivos sino un tercero que los relaciona. Aquí entra el tema de la complejidad. Seguido a esto, se suele utilizar una página maestra o “Master Page” de la cual desprenden todas las páginas del sitio. Esta es una página no visible en la web, pero su inexistencia en el servidor hará que nuestro sitio no funcione.
Por lo tanto si bien es poderoso (incluso tal vez más que PHP), .NET yo lo recomendaría para hacer sistemas webs. Sistemas complejos, con muchas relaciones y manejo de datos. Semejante complejidad solo para hacer una web corporativa, creo que no viene al caso.

Hablando de datos y ya para cerrar, debemos tocar el tema de base de datos, brevemente. En el caso de PHP se suele usar MySQL. Es fácil de integrar y nuevamente, es gratis. También se puede usar PostGre SQL, que es un poco más completo.

En el caso de .NET por defecto usa SQLServer, pero también se puede asociar con Oracle y muchos otros motores mas, lo que lo hace nuevamente muy complejo, solo para hacer webs corporativas de usuario final, en lugar de sistemas webs.

En tu caso, si desarrollas webs, ¿cuál de las dos tecnologías preferís?


Comentarios

17 respuestas a «Programacion Web.. ¿PHP o ASP.NET?»

  1. Yo siempre programé en PHP (aunque hace un tiempo que lo abandoné por motivos profesionales.) Sin embargo en las últimas semanas empecé a aprender Python y su correspondiente Django. Sinceramente me parecieron increíbles.
    De todas formas, para no irme con respecto a la pregunta, como defensor del Open Source (y aunque no lo fuera), siempre me gustó PHP, la comunidad de desarrolladores es muy grande y el lenguaje es muy versátil.

  2. Coincido casi en el 100% de lo que dice Fabio, exceptuando que la diferencia de licencias personalmente a mi no me cambia nada, igual no lo voy a pagar y que a mi PHP hace muuuucho que no me divierte. Masomenos desde que apareció esa obsesión por el patrón MVC que no siempre es la mejor solución. Ojo, no digo meter todo en un archivo de corrido o desastres así, esta bien siempre separar la vista, en casos grandes también veo bien el MVC completo, pero tampoco la obsesión que tienen algunos que para hacer un Hello World arman una estructura de 20 archivos con 32 clases.

    Otra cosa que no me gusta de PHP es que no sea tipado. Pero por otro lado, cuando en C# no existía el dynamic a veces extrañaba mucho esa misma característica de PHP. Hoy creo que el tipado dinamico es excelente como RECURSO, pero lo prefiero mil veces implementado sobre un sistema de tipado estatico y eso PHP no me lo da.

    Por otro lado, en ASP.Net es mucho mas fácil perder el control sobre el layout, si bien podemos hacer todo a manopla, creo que donde mayor ventaja le saca a PHP es en la facilidad de desarrollo usando controles visuales, pero esto trae consigo que el HTML muchas veces diste muchisimo de lo que uno querría. En cambio con PHP esto lo tenemos mucho mas controlado.

    Creo que para cada caso hay que analizar bien cual conviene mas, o porque no, los dos juntos. Recuerdo un proyecto de un juego online que al final quedo en ideas, en el cual después de analizarlo bastante nos pareció que lo mejor era armar un buen motor en .net exponiendo determinados web services, y que diferentes clientes (nativos para las distintas plataformas mobiles y uno web en php) simplemente consumieran esos web services. De esa forma dejabamos el frontend en manos de PHP y jQuery puramente escrito por nosotros y no por un framework, pero manteniendo la posibilidad de desarrollar el engine con toda la robustez extra que ofrece un lenguaje como C#.

    Igual, si tengo que hacer mi propia regla general, creo que sería algo así:
    Proyecto para Intranet o internet pero solo para uso interno de los empleados => ASP.net
    Proyecto para el público general donde el layout y los estandares web cobran mucha mas importancia => PHP

    No opino sobre JAVA porque nunca lo trabaje en la web, es una asignatura pendiente.

    @Ceci: Leí en twitter que estabas empezando a aprender a programar, imagino que lo haces pensando en programar para la web y sobretodo en tus blogs, en ese caso, definitivamente para aprender es mejor PHP, en ASP.Net apenas empezás te salen unos asistentes al mejor estilo plantillas de Word y uno queda hipnotizado por lo fácil que hace las cosas, pero la verdad es que de programación no aprendió nada. PHP en cambio sigue siendo fácil, pero el código lo tiene que escribir uno y por ende no te queda otra que aprender. Ahora, si no estas aprendiendo solo para la web y te interesan también las aplicaciones en serio, empezá por C++ o JAVA.

  3. Me mataron!!! Intente ser parcial. Di mi experiencia en el uso de ambas tecnologias. No inclui Java, porque no lo use para desarrollo Web. Apenas muy poco para otro tipo de aplicaciones, pero coincido con Fabio en que si bien es potente, la gente que lo usa se olvida de la programacion como tal.

    Tambien se que se pueden integrar uno con el otro, pero en general trato de aprovechar las virtudes de cada uno como tal; con esto quiero decir, por ejemplo, que .NET se lleva "mejor" con Windows y SQLServer y PHP con MySQL y Linux. Con lo cual para el que sale de los Frameworks y quiere arrancar derecho con uno u otro, es mas factible ir por el camino conocido y facil. Para complicarse la vida integrando y mezclandolos, hay tiempo jeje..

    Repito, sin animos de ofender a nadie, fue solo mi humilde opinion desde la experiencia de haber usado (y usar) ambas tecnologias 😀

    Saludos!

    1. Avatar de Cristian

      "La gente que lo usa se olvida de la programacion como tal" ¿WTF?
      Me animo a hacer una simple pregunta, para ambos: ¿Por que? ¿Que es lo que les hace pensar eso? 😀

      1. Creo que apuntamos a que la gran mayoria (no todos) de los developers Java se preocupan mas por los patrones de diseño, los objetos y demas yerbas, que porque la aplicacion que construyan sea robusta.
        Muchas veces con mas sencillez y premisas basicas se consigue lo mismo.

        No digo que sea tu caso, pero se de gente que se preocupa mas por esto. Y luego se olvidan de como hacer un "foreach" jaja.

        1. Avatar de Cristian

          Bueno, en realidad yo actualmente no estoy laburando en java. 😛

          Pero, tomando como premisa que: "Un buen programador sabe resolver problemas, y el lenguaje es solo una herramienta para resolverlo": te contesto.

          Los patrones de diseño, son patrones de programación. O sea, si sabes un patrón, estas aplicando algo de programación. Y los puedo aplicar en cualquier lenguaje de programación. Un tipo que entiende y sabe como y donde aplicar esos patrones, es un tipo que no solo sabe programar, sino que entiende una capa de abstracción mas allá.
          Contrataría a cualquiera que sepa patrones de diseño sobre uno que no.

          Lo de "los objetos y demás yerbas", bueno… Eso es un paradigma de programación, y creo que a muchos desarrolladores les haría bien programar un tiempo en SmallTalk, así aprenden a programar mejor. Te da una capacidad de abstracción a los problemas, que laburando estructuradamente no se puede.

          A lo que te referís vos, supongo, es al overdesign. Es un mal muy frecuente en muchos buenos desarrolladores (De cualquier lenguaje), programar algo "por si alguien en algún momento quiere…". Y ese algún momento nunca llegó. Jajaja. Igual a veces prefiero eso que los desarrollos muy "ad-hoc", que luego hay que emparchar sobre parche.

          Ahora bien, siendo analíticos sobre "las herramientas", creo que la comunidad alrededor de java, creo que es la que mas posibilidades te da. Pero requiere una curva de aprendizaje mucho mas alta, y puede llegar a ser bastante tedioso en algunos casos.

          En fin, esto es para ponerse a charlar y filosofar con unas birras encima, y creo que escapa el motivo del post. ¿no? 😉

  4. Recojo el guante de Dan 😛

    He trabajado en ambientes corporativos con ambas plataformas y debo discentir con MUCHAS de las "conclusiones" del artículo.

    Primero que nada, si coincidimos en la diferencia de licencias y es ese el punto más fuerte, .NET es un sistema que depende de Microsoft y lo que esta decida, PHP no tiene esas restricciones de licencias, no hay que pagar una ni para usarlo profesionalmente ni para nada por el estilo.

    Pero básicamente son iguales en muchos de sus fines, lo que cambia es el esquema, el escenario, donde trabajamos, no, no es que si quiero algo "baratito" uso uno y si quiero para la empresa uso el otro, ambos sirven para contextos empresariales o privados menores, da igual.

    Por ejemplo, en el artículo se asume que para .NET es necesario SQL Server u opciones más costosas. Falso. Tanto PHP como .NET se pueden conectar a TODAS las opciones de bases de datos existentes, hay wrappers para todo.

    Segundo, se obvia en este artículo JAVA que es una de las opciones corporativas más utilizadas, okey, nadie en su sano juicio decidiría por JAVA si va a plantar un blog, pero no estamos hablando de un uso en particular, así que nos está faltando la tercer, y tal vez más importante, pata del desarrollo web a nivel corporativo.

    También se asume que un servidor es necesariamente un IIS, yo uso Apache tanto en Windows como Linux así que no se restrinjan a esa porquería de server.

    Pero más aun, uno puede programar cualquier cosa en C# que no sea necesariamente web, puede crear una API que sea consultada desde… PHP! así es, es totalmente factible mezclar ambas plataformas, sólo hay que programar bien, eso ya es todo un tema 😛

    También se puede consultar PHP desde .NET, se que suena medio loco, porque no hay necesidad real, pero a veces te enfrentás con cada tema…

    Volviendo a la cuestión, la decisión de aprender una u otra cosa va en cada uno, hace 4 años si decías "se PHP" te miraban como bicho raro en algunos laburos, hoy sobran anuncios pidiendo programadores y si bien me encanta es perfecto para hacer mal lo que se podría hacer bien. .NET se paga bien, pero me acostumbré a que sea el nicho de aquellos que estudiaron sistemas creyendo que iban a hacerse millonarios, JAVA por otra parte es el mundillo de los que creen que los objetos y los patrones son el paraíso, pero se olvidaron de cómo se programa 😀

    Entonces ¿cual elijo? el más divertido!

    así es, porque programo por placer y diversión, así que voy al que más me satisface, PHP, pero sólo por esa razón 😛

    Dan, los que usan frameworks son putos, ya deberías haberlo notado 😀

    1. Avatar de Cristian

      Jajajajajaja! Tus conclusiones son muy graciosas.

      Igual, de las cosas menos divertidas y mas horribles que me pasaron en la vida fueron programar en PHP. Todas las cosas que vi desarrolladas en PHP están desarrolladas bastante como el culo (incluyendo wordpress).

      Me siento en los 90 cada vez que programo en PHP. Esta para que haga el tutorial Mattew Perry. 😛

      Como divertido, para programar, me quedo toda la vida con Ruby (RoR) o Python.
      Como para hacer cosas escalables, mantenibles, robustas y seguras me quedo con Java y los frameworks para putos. 😉

  5. Totalmente deacuerdo. Me gusto la imparcialidad del arcticulo. Saludos desde Nicaragua.

  6. Oigan! Para los que no somos programadores vienen bien estas cosas por más "básicas" que parezcan. 😛

    1. en realidad para los básicos, sirve mas un framework con un entorno controlado como wordpress o drupal que lanzarse de una a php.

      en mi caso que soy básico, siempre encontré mil dramas en ir al php o al .net directo, por eso termino en frameworks que cubren muchas necesidades y me evitan pensar como diablos hacer un query a la base.

      si hay que elegir, php toda la vida. Mañana a MS se le canta sacan algo nuevo al .net y chau código, a migrar todo. Fue lo que paso con el asp.

  7. Ruby o Python.

    En esta discusión del 2003: PHP

  8. perdón? este post quedo pendiente de 2003?

    php o .net es algo como genérico y standard hoy en día, mas cuando la tendencia últimamente es generar soluciones web con frameworks propios (creados a partir de php) o comunitarios como ser Drupal, WordPress y Django (Python).

    Personalmente prefiero Drupal para websites escalables, Django para cuando hay que usar georef, en verdad todo es combinable, siempre que definas bien el alcance.

    Pero claro, amariaaaaa leer la opinión de @fabiomb 😉

  9. Siempre apoyaré a PHP, sin embargo python se crece notablemente es una alternativa interesante

  10. Avatar de Jonatan Ariste
    Jonatan Ariste

    Es un tema ya viejito este, obvio que le vamos a PHP 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *