8.4. .NET
8.4.1. Características de .NET
Fecha de aparición: 1996 (ASP) / 2002 (.NET)
Perspectivas:
- .NET es la alternativa de Microsoft a JSP para desarrollo de grandes proyectos, donde PHP, Python o Ruby se quedan (o eso dicen desde Microsoft) pequeños.
- .NET no es un lenguaje de programación, sino el conjunto de toda la tecnología de servidor de Microsoft para desarrollar aplicaciones web. Esa tecnología se puede usar con varios lenguajes. Los más habituales con Visual Basic .NET (conocido como VB.NET) y C#.
- Tiene componentes exclusivos en el servidor y altas prestaciones.
- Su coste es más elevado.
- Hay que sufrir los problemas de seguridad endémicos a los productos Microsoft.
Filosofía:
- Framework de código cerrado y propietario.
- Tecnología multilenguaje. Suele correr con VB.NET o C#.
- Puede funcionar como PHP, embebido dentro de HTML.
- Incluye controles de servidor exclusivos de Microsoft (equivalentes a los ActiveX del lado del cliente)
8.4.2. Configuración necesaria en el servidor
Para hacer funcionar una aplicación .NET es necesario tener un servidor con sistema operativo Windows Server, que tiene integrado Microsoft IIS (Internet Information Server).
También puede ejecutarse con un módulo de apache (llamado mono), pero es mucho más lento.
Cada solución requiere su propio servidor. Si quieres PHP, Python o Ruby, usa Apache. Si quieres JSP, usa Tomcat. Si quieres ASP, usa IIS. Así te evitarás problemas.
8.4.3. Sintaxis básica de .NET con VB.NET
El código VB.NET (como el de C#) se puede embeber en HTML de este modo:
<html>
<head>...</head>
<body>
Este texto se ha generado desde HTML<br/>
<%
response.write("Y este se ha generado con ASP")
%>
</body
</html>
No es necesario declarar las variables de tipo simple, pero puede hacerse:
Dim i,j,k As Integer
Los operadores son los habituales, excepto el de asignación, que se escribe con un solo igual. Las posibles ambigüedades con el operador de comparación se resuelven por el contexto:
- Operadores de comparación: <, >, <=, >=, =, <>
- Operadores de asignación: =
Y estas son algunas estructuras de control:
Do While (condicion)
Acciones
Loop
For variable As Integer = 1 To 5
Acciones
Next
If (condicion) Then
Acciones-1
Else
Acciones-2
End If
8.4.4. Entrada / Salida
Para leer los datos procedentes de un formulario debemos recurrir al objeto predefinido request:
// Leer datos de un formulario (GET):
variable = request.QueryString("campo");
// Leer datos de un formulario (POST):
variable = request.Form("campo");
La salida de datos se hace con response.write():
response.write ("cadena" + variable + "cadena2");
8.4.5. Bibliotecas, funciones y clases
Con VB.NET (o C#) se pueden crear bibliotecas de clases de forma visual desde el propio entorno de programación de .NET.
Las clases en VB.NET se definen de forma muy parecida a Java o PHP:
class MiClase Inherits ClaseMadre
Dim int UnAtributo;
Dim bool OtroAtributo;
Function MiMetodo(parametros) As tipo
// Aquí va el código del método
return valor;
End Function
End Class
Para utilizar una librería (estándar o de terceros) se utiliza la directiva @Import:
@Import Namespace="Biblioteca"
Por último, se pueden definir subrutinas independientes (funciones o métodos) con esta sintaxis:
Sub NombreMétodo(parametros)
Acciones;
End Sub
8.4.6. Ejemplo 1 en VBasic: Hola mundo
<%
response.write("<html><body>")
response.write("<h1>Hola, mundo</h1>")
response.write("</body></html>")
%>
8.4.7. Ejemplo 2 en VBasic: login con comprobación de email por Ajax
Como antes, no mostraremos el código del lado del cliente (formulario + solicitud Ajax). Si quieres repasar ese código, lo encontrarás en la sección correspondiente al lenguaje Perl. Lo que sí encontrarás aquí es el código de login.asp, el script escrito en VB.NET que realiza la consulta a la base de datos para comprobar si el login es correcto y devuelve el resultado formateado en JSON.
<%
# Conectamos con la BD
strDSN= "DRIVER={MySQL ODBC 3.51 driver}; Server=localhost; Database=prueba; User=root;
Password=xxxx"
con = Server.CreateObject("ADODB.Connection")
con.Open strDSN
# recuperamos la información del formulario
name = request.Form("username");
pass = request.Form("password");
# lanzamos la consulta contra la bas de datos
rs = con.Execute("SELECT id FROM users WHERE user = '" + name +
"' AND password = '" + pass + "'");
# generamos la salida JSON
If (rs.eof) Then
Response.Write "{'error': 'Usuario o contraseña incorrectos'}"
Else
Response.Write "{'success': 'Login OK', 'userid': "+ rs("id") + "}");
End If
con.close
%>