viernes, 24 de abril de 2009

PHP vs .NET

En el mundo de la informática, para los nuevos aventurados de la programación la primera pregunta que saltará en sus mentes al querer hacer su primera página web, será...

¿Qué debo escoger, PHP o .NET?


Este artículo extraído y traducido de Microsoft explica "ligeramente" algunas diferencias, echémosle un vistazo y por favor, si encuentran fallas en la traducción, comenten.

Migración de PHP a ASP.NET

Introducción
Comparación de la arquitectura
Comparación de funciones
Sintaxis común y la comparación de las tareas
Caché de datos y almacenamiento en caché
Resumen
Siguientes pasos recomendados
Recursos
Introducción

En este artículo se analiza la migración de PHP (PHP: Hypertext Preprocessor 4) a ASP.NET. Compara y contrasta la base subyacente de la sintaxis de PHP con Microsoft ® Visual Basic ®. NET, así como las funciones y la arquitectura de los dos sistemas.

Mientras tanto PHP y ASP.NET le permite crear sofisticadas y complejas aplicaciones Web (como los sitios de comercio electrónico, intranets y portales corporativos), ASP.NET y PHP tiene varias diferencias importantes. A diferencia de PHP, ASP.NET no es un idioma o un intérprete, sino más bien un conjunto de tecnologías de Microsoft. NET Framework para la construcción de aplicaciones Web y XML Web Services. Páginas de Microsoft ASP.NET se ejecutan en el servidor como PHP y generar marcas, tales como HTML, WML o XML, que es enviado a un equipo de escritorio o para las aplicaciones móviles. ASP.NET, sin embargo, es diferente en el sentido de que proporciona un robusto, orientado a objetos, evento impulsado por el modelo de programación para el desarrollo de páginas Web, manteniendo la sencillez que los desarrolladores de PHP están acostumbrados.

Aplicaciones ASP.NET se basa en un sólido Programación Orientada a Objetos (OOP) en lugar de un paradigma de scripting paradigma. Esto permite más rigurosas características de programación OO, como la herencia, encapsulación y la reflexión. Si bien la mayoría de las operaciones básicas y simples pueden ser fácilmente traducido de PHP a ASP.NET, aplicaciones más complejas no será tan fácil de convertir de PHP a ASP.NET y exigirá una planificación cuidadosa y la consideración, así como un mayor enfoque de la POO.

En este trabajo, suponemos que el lector tiene experiencia con PHP, así como la programación y desarrollo de software en general. Comenzamos este artículo con un vistazo al código, con una breve comparación de las diferencias de arquitectura y de la OOP modelo de desarrollo, seguida de una comparación de características y, a continuación, una comparación de la sintaxis común y tareas para el desarrollo de aplicaciones Web con PHP y ASP.NET.
Comparación de la arquitectura

Como se puede aprender de la sintaxis y la lengua y la comparación final de este documento, PHP y ASP.NET son relativamente similares con similar funcionalidad y la sintaxis. PHP, sin embargo, es muy diferente de ASP.NET a un menor nivel de arquitectura. PHP está basada en un procesador independiente de la plataforma / motor que analiza scripts PHP y base de datos dispone de las conexiones, el cumplimiento del protocolo de Internet, y muchas otras tareas comunes a la mayoría de plataformas de aplicaciones Web.

ASP.NET es un marco construido sobre una serie de tecnologías como el CLR y ofrece una amplia serie de bien organizadas que ofrecen las bibliotecas de clases para la mayoría de conjunto de todas las funciones que se utilizan en una aplicación Web. También permite la creación fácil y simple de los componentes para ampliar el marco.

Mientras PHP ofrece cosas similares, como el PEAR bibliotecas, ASP.NET y PHP no son realmente análogo porque el marco ASP.NET se construye desde la base en un paradigma OOP OOP y conceptos; PHP no lo es. Esta diferencia es más evidente en la forma de acceder a las clases y objetos en PHP y ASP.NET.
La programación orientada a objetos en PHP y ASP.NET

Ambos ofrecen ASP.NET y PHP OOP paradigmas para el desarrollo de aplicaciones, pero su apoyo a diversos conceptos de la POO, tales como la encapsulación y polimorfismo diferente. Por ejemplo, sólo soporta PHP parcial encapsulado (como el apoyo para la declaración de los métodos y campos en la clase) y el polimorfismo parcial (sin sobrecarga, no la abstracción). PHP también carece de apoyo a estos conceptos y la accesibilidad en el que no hay concepto de privado, público, o funciones de las clases protegidas, así como la sobrecarga. Si bien los puristas mayo OOP debate que ASP.NET y las diferentes lenguas no son totalmente compatibles con todos los conceptos en el paradigma de la POO, esto es cierto en el caso de la mayoría de los idiomas considerados POO, tales como C + + y Java.

Esto tiene un lado positivo y uno negativo. El inconveniente es que para algunos desarrolladores web hay una empinada curva de aprendizaje de PHP frente a ASP.NET, que ofrece un paradigma de secuencias de comandos que los desarrolladores han empleado tradicionalmente para la construcción de sitios web. Sin embargo, los desarrolladores que tienen experiencia en POO idiomas y / o ASP.NET Vwill encontrar intuitivamente familiar y fácil de aprender.

La ventaja a ASP.NET "s apoyo de OOP conceptos significa que las aplicaciones ASP.NET en su mayor parte resultado de un mejor diseño de código, tiene una clara separación de contenidos, la lógica, y los datos y, por tanto, son en general más fácil de apoyar a largo plazo de las solicitudes ciclo de vida. Además, ASP.NET 's soporte nativo para tecnologías como la empresa de Message Queue Server, las operaciones (véase el. NET Framework de System.EnterpriseServices clases) de SNMP y Web Services, hace que sea muy fácil de desarrollar aplicaciones robustas y escalables.

Usted puede encontrar una introducción a las principales áreas de programación orientado a objetos (Visual Basic desde un punto de vista) en la programación orientada a objetos en Visual Basic.
Compilación
De PHP

Cuando una página PHP se solicita, el código HTML y script PHP en línea se ha elaborado a Zend opcodes. Opcodes son de bajo nivel binario instrucciones que se utilizarán para servir a la página PHP. Después de la compilación, el Motor Zend corre el opcodes (similar a la manera del motor de tiempo de ejecución Java se ejecuta el código de bytes) y, a continuación, se genera HTML y sirve al cliente.

Hay una serie de productos comerciales que pueden utilizarse para acelerar la ejecución de una página PHP mediante la optimización de estos opcodes. Otras formas de aumentar el rendimiento de los scripts PHP opcode incluyen el almacenamiento en caché y la memoria caché del HTML generado.
ASP.NET

Cuando se hace una solicitud a IIS (Internet Information Server) o en otro para un servidor Web. Aspx (o cualquier otra extensión apoyada por ASP.NET), la petición se pasa a ASP.NET para la transformación. Si esta es la primera vez que la página ha sido solicitado, ASP.NET compila la página para MSIL (Microsoft Intermediate Language). Este código MSIL se procesa por el CLR (Common Language Runtime) a código de máquina. Luego se ejecuta la solicitud de utilizar este código compilado. Tras las solicitudes se sirve de este mismo código de máquina, suponiendo que la página no ha sido modificado.

Es importante señalar que el código binario que se genera por el CLR ya está optimizado como posible, sin añadir el producto-que es necesario para lograr el máximo rendimiento.

También es importante señalar que todo está compilado en ASP.NET a código de máquina, antes del rodaje. Incluso texto HTML es convertido a una cadena literal de control, y se incluirán en el orden correcto en el control de árbol.
Comparación de funciones

El Cuadro 1 presenta una comparación de algunas de las características destacadas en PHP y ASP.NET.

Tabla 1. La comparación de las características de ASP.NET y PHP
Característica De PHP ASP.NET
Codificación de idiomas C, C + + con el estilo de lenguaje de scripting de edad hasta la marca de estilo ASP. Apoya algunos conceptos OOP. Soporta más de 25 idiomas, pero el 2 que son más comúnmente utilizados son los de Visual Basic. NET y C #. La mayoría de los desarrolladores elegir una lengua, pero pueden consumir componentes escritos en cualquiera de los otros idiomas.
Compilado aplicación lógica Compilable y se puede ejecutar como un ejecutable Apoya, en tanto dinámica pre-compilado y los modos de transporte.
Página completa de almacenamiento en caché de salida No soporte nativo Apoyo, cachés diferentes versiones de la página sobre la base de uno o más parámetros de URL, tipo de navegador, de una función, o cualquier combinación.
Página de salida parcial de caché No soporte nativo Construido en apoyo a través del uso de controles de usuario. Datos y otros objetos pueden ser sofisticados con vencimiento en caché utilizando la caché de normas API.
Base de datos de acceso Tiene drivers para la mayoría de bases de datos en el mercado, así como bases de datos de código abierto Apoya-OLE DB y ODBC directamente, nativos e incluye controladores para Microsoft SQL Server ™ y Oracle.
Base de datos de salida Datos se muestran como las variables de PHP y puede ser outputted como cualquier otra variable Plantillas de enlace de datos a los controles del lado del servidor para la facilidad de desarrollo, o manual que recorrer si se prefiere.
Componentes externos Puede llamar a una variedad de paquetes y el motor Zend pueden ser modificados directamente por el promotor debido a que es de código abierto. Los programadores responsables de Zend también están trabajando en permitir. NET, que se denominará a partir de PHP Muy buen soporte nativo para bibliotecas C y los objetos COM, así como las asambleas en cualquier escrito. NET compatible con el idioma, incluyendo C + + administrado. N el soporte incorporado para CORBA objetos o clases Java.
XML / XSLT Apoyado en complemento de los paquetes y bibliotecas Completa y fácil de usar, se presta apoyo para XML DOM, XSLT, la validación y ligero orientado a analizar el flujo de documentos XML.
XML Web Services PHP paquetes se están desarrollando actualmente para apoyar a los servicios web basados en Apache Axis motor, así como los demás. La versión actual proporciona una amplia y flexible, compatible con los estándares de apoyo y hace que sea muy fácil de publicar y consumir, tanto los servicios Web.
Estado de la sesión Cookie de sesión basada en la gestión Basado en cookies o cookieless el estado de la sesión, utilizando un único servidor de almacenamiento de memoria en un servidor centralizado de estado, o una base de datos de back-end. Además, la arquitectura extensible permite personalizado período de sesiones de estado de módulos para reemplazar la incorporada en las opciones. Cookieless requieren sólo un cambio de configuración para habilitar.
Built-In Funcionalidad PHP dispone de funciones para cubrir muchas de las tareas que una aplicación basada en web puede necesitar para llevar a cabo. También puede acceder a las bibliotecas de clases de Java con algún trabajo extra. ASP.NET tiene acceso directo a la totalidad de. NET Framework las bibliotecas de clases, que abarcan una gran cantidad de funcionalidad.
Expresiones regulares Soporta Perl compatible POSIX y sintaxis de las expresiones regulares. Soporta Perl-5-compatible con las expresiones regulares, con funciones adicionales, como de derecha a izquierda se pongan en venta, precompilada expresiones, grupos de llamada, ayuda completa de Unicode. También permite al usuario especificar la función que habrán de exigirse durante una operación de sustitución de expresiones regulares.
Depuración PHP no ofrecen una amplia gama de depuración, a pesar de varios productos de terceros y Zend permite una mayor depuración y pruebas. Incluye amplia información sobre el medio ambiente y la localización que pueden ser incluidos en la página o aparece en una página independiente. Microsoft Visual Studio ®. NET permite una fácil interactiva de depuración de las páginas, ya que ejecutar, además de la depuración de secuencias de comandos del lado del cliente y procedimientos almacenados de SQL Server.
Tratamiento de errores de No admite errores, pero tiene varios errores de manipulación de la funcionalidad y la explotación forestal, Apoya estructurado de manejo de excepciones (con la adición de un "último" bloque de código que se ejecuta independientemente de si o no se produce un error), el aumento de la costumbre excepciones, y especificar páginas de error personalizadas para distintos tipos de errores irrecuperables.
Image Manipulation No ayuda incorporada, aunque los componentes de terceros están disponibles. Incluye una amplia imagen de la creación y manipulación de las instalaciones.(Véase el. NET Framework de System.Drawing clases)
Reutilización de Código Funciones definidas por el usuario, capacidad de crear clases, y se incluirán los archivos. Controles de usuario, controles de servidor, clases personalizadas, y se incluirán los archivos.
Threading PHP tiene un buen modelo de roscado Apoya plenamente. No sólo pide la página ocurrir simultánea en distintos hilos, pero cada página puede (si es necesario) desovar sus propios hilos para llevar a cabo simultánea y asincrónica trabajo.
Datos de caché Ha limitado de datos de caché de datos nativa Incluye un extenso caché API que permite a casi cualquier tipo de datos (incluyendo los resultados de una consulta de base de datos) para ser almacenado, con vencimiento sobre la base de tiempo, el uso o dependencia de un archivo u otro elemento en caché. También permite una función definida por el usuario que se llama cuando un determinado elemento se elimina de la caché.
Internacionalización Soporte completo para Unicode Compatible con Unicode y diversas cadenas de codificaciones de caracteres. Fecha, número, moneda y todas las funciones son conscientes de la cultura y modificar su producción en función de lo que el actual está establecido en la cultura (en lugar de requerir que las diferentes funciones que se llama). Apoyo para la utilización de archivos de recursos para localizar una aplicación dinámica incluido.
SMTP, HTTP, FTP, POP3 Soporte nativo para una amplia variedad de protocolos de Internet SMTP apoyo depende del servicio SMTP de IIS. HTTP tiene muy buen soporte. FTP y POP3 no se admiten en. NET, pero libre y comercial de terceros componentes están disponibles para esta funcionalidad.
Entorno de desarrollo integrado Numerosas herramientas de desarrollo con una amplia gama de capacidades están disponibles en rangos de precios de gratis a varios cientos de dólares. Existe una herramienta libre para el desarrollo ASP.NET disponible en Microsoft llamado ASP.NET Web Matrix

El más popular es la herramienta de Visual Studio.NET que tiene pleno apoyo a todos. NET, base de datos de herramientas para la creación de bases de datos SQL y pruebas, herramientas de Diseño Web, la integración con el control de versiones, depuración avanzada y muchas otras funciones para una lista completa ver el MSDN ® Visual Studio Developer Center.

Otras herramientas, incluido el de Borland C # Builder y Macromedia Dreamweaver MX, también apoyo ASP.NET.
Servidor Web de Apoyo Soporta casi todos los servidor Web. Apoya IIS y covalente de versión comercial de Apache 2.0.
Soporte del sistema operativo Hay puertos para casi todos los SO de uso común como Microsoft Windows ®, Mac OS X, Amiga, Solaris, Free BSD, Linux, AIX y más. Actualmente es compatible con Windows 2000, Windows XP y Windows Server 2003.
Sintaxis común y la comparación de las tareas

Las siguientes secciones ofrecen comparaciones entre PHP y. NET, así como la manera de realizar algunas de las tareas de programación más común.
Comentarios

PHP le permite insertar comentarios en el código usando C, C + + y shell de Unix sintaxis del estilo, y cualquier cosa dentro de los indicadores comentario no se ejecutará.

En general, para comentar en Visual Basic. NET en código ASP.NET sólo tiene que utilizar <%-- para abrir un bloque de comentario y --%> para cerrar el bloque.

Ejemplo de código 1 muestra los comentarios en cada entorno.

Ejemplo de código 1. Comentarios del lado del servidor en PHP

/* This is a block of text That has been commented out */

Ejemplo de código 1. Comentarios del lado del servidor en ASP.NET

<%-- This is a comment. --%>

Variables

Si bien PHP y Visual Basic. NET similares construcciones del lenguaje, son muy diferentes de sintaxis para ellos. Desde Visual Basic. NET se basa en un modelo OO, declaración de variables es mucho más riguroso que en PHP, donde se declara una variable simplemente añadiendo un signo de dólar $ antes de que el nombre de variable.

En Visual Basic. NET que declarar una variable especificando su nombre y características. La declaración para la declaración de variables es el Dim palabra clave. Su ubicación y contenido de determinar las características de la variable. Variables como los niveles locales y de los módulos, tipos de datos, y, finalmente, la vida útil de la accesibilidad.

Si bien este enfoque puede parecer más complejo que en la primera variable de asignación en PHP que realmente hace un desarrollador de la vida más fácil.ASP.NET se centra en ayudar a los desarrolladores construir aplicaciones robustas y especificando los tipos de datos hace que tareas como la variable de limpieza, depuración, y salvo error de manipulación, y el código de mantenimiento mucho más fácil.

Ejemplo de código 2 muestra ejemplos de declarar variables en cada entorno.

Ejemplo de código 2. Declaración de variables en PHP

$head_count $foo $X $obj

Ejemplo de código 2. Declaración de variables en Visual Basic. NET

Dim head_count As Integer Dim foo As String Dim X As Date Dim Obj As object

Tipos de datos de declarar

El AS cláusula en la declaración de estado le permite definir el tipo de datos o tipo de objeto de la variable que se declara. Puede especificar cualquiera de los siguientes tipos de variables:

* Un tipo de datos elementales, como Boolean Long o Decimal
* Un tipo de datos compuestos, tales como una matriz o estructura
* Un tipo de objeto, o de clase, desde Visual Basic u otra aplicación, como la Label o TextBox

Usted puede declarar varias variables del mismo tipo en una declaración sin tener que repetir el tipo de datos. En las siguientes declaraciones, las variablesnumStudents , numGTA and numProfessors se declaran como tipo Integer

Dim numStudents, numGTA, numProfessors As Integer "Las tres son las variables Integer.

Para obtener más información sobre tipos de datos, consulte Tipos de datos. Para obtener más información sobre programación orientada a objetos, consulte laprogramación orientada a objetos en Visual Basic.
Declarar la vida

La vida útil de una variable es el período de tiempo durante el cual está disponible para su uso. Una variable local declarada con Dim declaración sólo existe en tanto su procedimiento de ejecución. Cuando el procedimiento termina, todas sus variables locales desaparecen y se pierden sus valores.

El concepto de vida es muy útil en la medida en que permite a los desarrolladores construir aplicaciones sin tener que ellos mismos con la preocupación de muchos problemas que se producen a gran escala en aplicaciones como la gestión de memoria eficiente. Al seleccionar la correcta para toda la vida de una variable puede permitir. NET para realizar la limpieza de las operaciones sobre las variables que no están siendo utilizados.

Para obtener más información sobre la vida, ver la vida.
Declarar Alcance

Una variable local es aquella que se declara dentro de un procedimiento (un procedimiento es análogo a una función). Un no es una variable local que se declara fuera de un procedimiento, pero dentro de una clase o estructura.

En una clase o estructura, la categoría de una variable local no depende de si es o no compartida. Si es declarado con el Shared por palabra clave, es una variable compartida, y existe en un solo ejemplar, compartida entre todas las instancias de la clase o estructura. En caso contrario se trata de una variable de instancia, y una copia del mismo se crea para cada instancia de la clase o estructura. Una copia de una determinada variable de instancia sólo está disponible para la instancia para los que fue creada.

El ámbito de aplicación de una variable es el conjunto de todo el código que puede referirse a él sin calificar su nombre. Una variable del ámbito de aplicación está determinado por la variable que se declara. Código situado en una región determinada puede utilizar las variables definidas en la región sin tener que calificar sus nombres. Al declarar el ámbito de aplicación, se aplican las siguientes reglas:

* El ámbito de aplicación de una variable de instancia o compartido es la estructura o la clase en la que se declara.
* El ámbito de aplicación de una variable local es el procedimiento en el que se declara.

Sin embargo, si usted declara una variable local dentro de un bloque, su ámbito de aplicación es que sólo bloque. Una variable local es activa dentro de la definición de bloque de control. El bloque de control puede ser un procedimiento, si una declaración, una declaración de bucle y así sucesivamente.

Para obtener más información sobre el ámbito de aplicación, consulte Alcance.
Declarar Accesibilidad

. NET, apoya la idea de la accesibilidad a las variables, que permite que usted, el desarrollador de código para controlar lo que puede tener acceso a variables específicas. Por ejemplo, si quería establecer algunas constantes de una fórmula y asegúrese de que su constante nunca se ha cambiado por otro tipo de código fuera de su clase en la que podría declarar que la variable privada de este modo:

Privado myConstant As Integer

Una variable de la accesibilidad está determinada por lo que una palabra clave o palabras Dim, Public, Protected, Friend, Protected Friend, o Private utiliza en la declaración declaración. En general, usted sólo uso público y privado en su desarrollo.

Puede declarar un módulo, la estructura, la clase, la variable de instancia o con cualquiera de estas palabras clave. Dentro de un procedimiento, sólo el Dim de palabras clave está permitido, y la accesibilidad es siempre privado.
Salida

La forma típica de la salida de datos en PHP es a través de la echo() construir idioma. El más cercano a este análogo en ASP.NET es el Response.Write() método, o el <%= %> construir, que es simplemente la abreviatura Response.Write() Ejemplo de código 3 muestra la sintaxis básica para la escritura de un valor a la página.

Ejemplo de código 3. Base de salida en PHP



Ejemplo de código 3. Base de salida en Visual Basic. NET

<% Dim Hello As String = "Hi how are you" & vbcrlf Response.Write(Hello) %>

Sin embargo, estos métodos para el envío de salida al navegador existen principalmente para la compatibilidad hacia atrás con ASP clásico. ASP.NET 's nuevo control basado en eventos orientados hacia el modelo de datos permite que se de salida al navegador simplemente ajustar las propiedades de controles de servidor.Esta técnica permite una separación limpia de diseño y el código y pueden hacer más fácil el mantenimiento, que requiere mucho menos código en situaciones complejas de PHP.