¿Cuándo usar PHP o ASP.NET? [cerrado]

46

He trabajado mucho en el desarrollo de aplicaciones web usando PHP y ASP.NET, pero una de las preguntas que constantemente me hacen los clientes es si seguir adelante con un sitio web php o un sitio web asp.net.

Entonces, naturalmente, lo primero que viene a la mente es responder la pregunta de esta manera:

PHP es de código abierto y ASP.NET es de Microsoft.

Por lo general, después de decir algo así, el cliente tiene una mirada en blanco en su cara. Aparentemente, el hecho de que uno sea de código abierto y el otro no lo es realmente no los perturba. Y por una buena razón, porque cuando lo escuché por primera vez, realmente no me dice mucho.

Por trabajar con ambos, sé que cada uno tiene sus diferencias cuando se trata de desarrollar sitios web.

Mi pregunta es cuáles son las diferencias entre ASP.NET y PHP en cuanto a

  1. Caracteristicas
  2. Seguridad
  3. Extensibilidad
  4. Marcos
  5. Tiempo promedio de desarrollo

Estoy tratando de compilar una lista de hechos para poder comparar con el cliente y poder hacer una elección informada sobre la plataforma de desarrollo adecuada.

Eduardo
fuente
77
He usado ambos, creo que Visual Studio y ASP.NET son mucho más robustos. El IDE solo me gana.
The Muffin Man el
77
PHP siempre tendrá un punto débil para mí porque fue mi primer lenguaje de programación web ... pero después de 2 años de ASP.NET C # simplemente no hay forma de que pueda volver ... ¡Visual Studio IDE es maravilloso!
Dal
Sí, desearía que php tuviera algún tipo de IDE principal, pero supongo que eso acabaría con el espíritu de PHP siendo de código abierto. Definitivamente un factor a tener en cuenta.
Edward
2
6. Costo durante la vida del proyecto?
VirtuosiMedia
@VirtuosiMedia otro factor importante que no mencioné.
Edward

Respuestas:

39

Las características , la seguridad y la capacidad de ampliación serán más o menos lo mismo. Lo que se puede hacer con PHP se puede hacer con ASP.NET.

Marcos : una vez más, cuando se trata de características de marcos, será más o menos lo mismo. Sin embargo, al ser más específico que el lenguaje en sí, querrás considerar:

  • Con qué se sienten más cómodos sus desarrolladores. Conocimiento = eficiencia .
  • Proyecto por proyecto, un marco en un idioma podría ser una mejor opción natural que un marco en otro. Ser más específico que el lenguaje en sí mismo significa que un marco de trabajo no puede ser más que adecuado para algunas tareas y menos adecuado para otras.

Tiempo de desarrollo promedio : su tiempo de desarrollo promedio para un proyecto muy pequeño podría ser mejor con PHP ya que los servidores web son muy fáciles de encontrar y las máquinas de desarrollo son muy fáciles de configurar. Sin embargo, con algo más grande, siempre que tenga buenos desarrolladores, o ya esté configurado para cualquiera de ellos, probablemente será un lavado.


La consideración principal que debe hacer es qué pila de tecnología quiere que su cliente esté vinculado a seguir adelante. Ninguno de los dos se mezcla bien (fácilmente) con el otro. Pueden tener desarrolladores que estén familiarizados con uno u otro.

  • Si a su cliente le gusta la idea de estar conectado a Microsoft, vaya con ASP.NET. Algunos clientes se sentirán más cómodos con respecto a soporte futuro, actualizaciones, etc. con MS.

  • Si les gusta la idea de los servidores de código abierto y Linux, opten por PHP . Esto puede interesar a algunos clientes debido a la capacidad de transferencia de servidores web, software libre, etc.

Y, por último, si no les importa, entonces ve con lo que te resulte más cómodo . No hay mucho más que eso.

Nicole
fuente
8
+1 para "La principal consideración que debe hacer es qué pila de tecnología quiere que su cliente esté vinculado a seguir adelante".
Sistema
bifurcando la seguridad ¿no hay recursos para ver cómo ha funcionado cada plataforma?
Edward
3
@loyalpenguin: esa es una pregunta en sí misma. No estoy seguro de lo que quiere decir con "cómo ha funcionado cada plataforma", pero si está hablando de agujeros de seguridad de la plataforma (que casi siempre se reparan rápidamente) esa es la menor de sus preocupaciones. En su mayor parte, cada idioma es tan "seguro" como el desarrollador que escribe el código.
Nicole
buen punto. Solo una última pregunta ¿Cómo saldría de la pregunta que es más segura entonces?
Edward
@loyalpenguin cuando digo que es una pregunta diferente, quiero decir que la pregunta es "¿Son los problemas de seguridad de la plataforma una causa importante de preocupación en las aplicaciones web? Si es así, ¿cómo analizo cuál tiene una mejor historia entre varias plataformas, como PHP, ASP.NET, Java, Ruby on Rails, etc. Para mí, no estoy tan seguro de que en realidad sea un gran motivo de preocupación.
Nicole
29

Solo para dar una idea de en qué estoy basando mis respuestas, he desarrollado PHP profesionalmente durante más de 6 años, he estado jugando con ASP.NET MVC durante los últimos 3-4 meses, y he estado haciendo C # programación durante aproximadamente el mismo tiempo que la programación PHP.

Para mí, esto es más un argumento PHP vs C # que un PHP vs ASP.NET.

Característica /
capacidad de ampliación Creo que ASP.NET gana aquí y esto es más debido a la capacidad de usar un lenguaje como C #. C # es un lenguaje mucho mejor que PHP con soporte para OO. También soy una persona que prefiere un lenguaje tipado estáticamente (incluso pensando en C # 4.0, creo que puedes hacer variables tipadas dinámicamente). Lo único que PHP tenía sobre C # en cuanto a una función de lenguaje eran parámetros opcionales, pero esa es otra cosa que se ha agregado en C # 4.0 (no estoy seguro de qué tan bien funciona ya que aún no lo he probado).

Seguridad
Probablemente diría que es un lavado entre los dos. Creo que ambos tienen funcionalidades para ayudar con la seguridad, pero en última instancia es tarea del programador asegurarse de que su aplicación sea segura.

Frameworks
Well PHP parece tener muchos más frameworks convencionales (CakePHP, Codeigniter, Symfony, Zend Framework) y muchos otros frameworks más pequeños que ASP.NET. ASP.NET tiene 2 marcos principales de Microsoft, WebForms (una mierda) y ASP.NET MVC (la razón por la que comencé a entrar en el desarrollo de ASP.NET). Si bien PHP tiene más marcos, creo que el marco ASP.NET MVC 3 es mejor que cualquiera de los marcos PHP.

Tiempo de desarrollo promedio
Creo que para proyectos más pequeños el tiempo de desarrollo es mucho mejor en PHP, sin embargo, a medida que su proyecto crece en tamaño, C # escala mejor en este sentido.

Costo
Algo que debería mencionarse es el costo. PHP sin dudas gana en este frente. Si bien puede ejecutar ASP.NET en Mono en Linux, tiene sus propios problemas.

Si está haciendo un proyecto de tamaño pequeño a mediano y / o el costo es un factor, PHP gana. Si está haciendo un proyecto a gran escala, elegiría ASP.NET w / C # y ASP.NET MVC.

ryanzec
fuente
3
Sin embargo, los formularios web tienen beneficios. Por ejemplo, los miles de controles listos para usar para crear aplicaciones web rápidamente han sido una ventaja para vender a mi cliente en un sitio web.
Edward
1
Estoy de acuerdo con @ryanzec WebForms no es una mierda y es tan bueno como ASP.NET MVC desde una perspectiva diferente. He usado el framework ASP.NET MVC desde la Vista previa 2 de la primera versión en un entorno comercial. También he usado WebForms durante los últimos 7 años. Además, ya no puede discutir los costos de ASP.NET, Microsoft proporciona herramientas gratuitas, ahora eso es mejor de lo que ofrece PHP. Además, Microsoft suministra una versión gratuita de SQL Compact y SQL Server. El alojamiento de terceros para .NET es comparable a Linux en estos días.
Nickz
Si bien estaré de acuerdo en que el costo de hospedar ASP.NET ha mejorado, aún puedo encontrar un VPS LAMP Hosting más barato que el VPS Windows.
ryanzec
También hasta el punto sobre WebForm, decir que es una mierda puede haber sido duro, simplemente no es mi taza de té. Es cierto que puede mejorar las cosas más rápido, sin embargo, una vez que intenta hacer algo fuera de lo que se le proporciona desde los componentes o una vez que modifica en gran medida un componente existente, es exponencialmente más difícil. Además, toda la forma en que el sistema funciona con las devoluciones y otras cosas también me parece torpe para el desarrollo web. Prefiero ASP.NET MVC, ya que me da un 100% de control de lo que se crea y se ajusta mejor para el desarrollo web en mi opinión.
ryanzec
8

PHP vs ASP.NET es como comparar manzanas y naranjas, allí dirigidas a diferentes soluciones.

PHP es un marco más adecuado para soluciones de inicio a pequeña escala. PHP se ejecutará o Linux, ventanas sin demasiados requisitos. Microsoft ASP.NET es un marco de fuerza industrial, que tiene todo lo que puedas imaginar y más. ASP.NET es un entorno muy rico en funciones listo para usar. Muchos argumentarán que ASP.NET es costoso, lo que fue el caso hace unos años pero ya no. Primero, las herramientas son gratuitas (ediciones express), las opciones de la base de datos son gratuitas (SQL Compact o SQL Server 2005 o superior Express). Comprar Hosting ahora es muy barato, por lo que la pregunta no es cuál es mejor, sino qué se adapta a su solución. Personalmente, prefiero ASP.NET, pero eso es porque trabajo en un entorno corporativo donde la flexibilidad y la escalabilidad son muy importantes, por lo que las soluciones dictan el marco.

Una cosa muy importante es ¿en qué idioma eres mejor? Este debería ser el factor final en la decisión.

Si su objetivo es convencer a un cliente, entonces asp.net es una mejor opción. El nombre de una gran empresa que respalda un idioma hace que el cliente se sienta cómodo. En este caso, las mejores opciones son (Microsoft) ASP.NET y (Oracle) Java JSP.

EDITAR: Características ricas: ASP.NET proporciona dos alternativas para crear un sitio web WebForms y el enfoque MVC. Dado que es parte del marco .NET, tiene características muy potentes, por ejemplo, WF (flujo de trabajo), DLR (Dynamic Language Runtime), Parallel Linq, Linq, enrutamiento, varias formas de administración de estado de datos: elementos HTTPContext, ViewState, Runtime Cache, página caché de salida, tres tipos diferentes de implementación de sesión InProc, State y SQL Server. ASP.NET implementa varias formas de seguridad, por ejemplo, Proveedor de membresía y Proveedor de roles. No quiero incluir PHP, pero ASP.NET está en una liga diferente.

Nickz
fuente
55
Siempre escuché eso como una excusa, ese "Microsoft = Caro", por eso primero aprendí PHP. Pero tengo que estar de acuerdo en que realmente ya no es el caso.
Edward
Sí, el campo de juego es bastante parejo ahora, es difícil saber qué idioma usar en estos días.
Nickz
¿Qué significa exactamente "marco de la fuerza industrial" media ? ¿"Todo lo que puedas imaginar y más"? ¿"Entorno muy rico en funciones listo para usar"? ¿Cómo es ASP.NET estas cosas, de manera que PHP no lo es? Hasta que haya explicado eso, este es solo el lenguaje publicitario de Microsoft.
Nicole
Los objetivos de diseño php originalmente representaban páginas de inicio personales y se diseñaron para facilitar la creación de scripts simples en el servidor. asp.net se creó para competir con java ee como una solución de nivel empresarial. php ha asimilado muchas características a lo largo de los años, pero esta "característica de tack" se descompone en inconsistencias del lenguaje y peculiaridades de la plataforma. yo uso php a menudo, pero que es y ha sido diseñado para ser un lenguaje web, no una plataforma de programación de propósito general
bunglestink
6

Después de haber trabajado mucho con ambos, ya sabe que las respuestas serán diferentes según el problema y el cliente. En un sentido muy genérico:

  • PHP es ideal para proyectos que necesitan trabajar en un presupuesto. Por ejemplo, no se verá afectado por las grandes tarifas de licencias de bases de datos.
  • ASP.NET es ideal para proyectos que necesitan el tipo de soporte y cultura de desarrollo que ofrece Microsoft.

Si está compilando una lista de datos para sus clientes, basarla en lo que sabe. Su investigación, no importa cuán sesgada sea su conclusión, está bien para obtener sus puntos clave.

Fred Wilson
fuente
8
Me molesta cuando .Net se asocia automáticamente con "grandes tarifas de licencias de bases de datos". Por supuesto, debe saber que .Net puede interactuar con una gran variedad de RDBMS, gratis y no, y por supuesto también PHP, gratis y no (y no es que Microsoft sea el único RDBMS popular con grandes tarifas de licencia).
quentin-starin 05 de
3
Sin mencionar que las versiones Express y Web de SQL Server tienen tarifas de licencia mucho más apetecibles (gratis en el caso de Express).
quentin-starin 05 de
Lo siento, no estaba destinado a molestar. MS parece venderse mejor como una pila completa y estaba asumiendo un motor de base de datos más grande que Express.
Fred Wilson
1
No tomados personalmente, parece que veo la asociación hecha con bastante frecuencia.
quentin-starin 05 de
1
@loyalpenguin: En mi experiencia, es raro encontrar un motor de almacenamiento que no sea compatible con .Net. No puedo comentar si esto es cierto o no con PHP.
quentin-starin
1

Los controles .net son mucho mejores que lo que puedes encontrar con una plataforma de PhP. Mire Infragistics, por ejemplo, ¿cuál es el equivalente para una LAMP?

Totor
fuente