Migrando ASP a ASP.NET
Daniel A. Seara
Director Regional MSDN
NDSoft
ASP (Lo Bueno)
• Tecnología líder en desarrollo para Web
 Más de un millón de desarrolladores en ASP
• Desarrollo simple
 HTML combinado con script
 No requiere compilación – “sólo grabar”
• Flexible y extensible
 Soporta múltiples lenguajes
 VBScript, JScript®, etc.
 Puede utilizar Objetos COM para acceder a
recursos y encapsular lógica de negocios
ASP (Lo Malo y lo Feo)
• ¡El código ASP se vuelve complicado!
• Requiere demasiado código
 Para cualquier cosa se necesita escribir código
• Código mezclado con contenido
• Sólo soporta lenguajes de scripting
• La implementación de componentes y la
configuración es compleja
 DLLs bloqueadas, regsvr32, metabase de IIS
• Estado de Sesión limitado a un único servidor
Compatibilidad con ASP
• Migrar aplicaciones de ASP a ASP.NET
siempre va a requerir cierto trabajo
• Se decidió romper la “compatibilidad hacia
atrás” en ciertos puntos para mejorar la
plataforma
 Tenemos más tiempo por delante en Internet que
por detrás
 Nos permite asegurar una plataforma por mucho
más tiempo
ASP: Soporte conjunto
• ASP.NET corre “lado a lado” con ASP
 Extensiones de archivo distintas (.aspx vs .asp)
 Configuraciones separadas
• Las páginas/aplicaciones ASP siguen utilizando el
motor de ASP existente sin problemas
 No se han hecho cambios a ASP.DLL
 Ningún componente se “rompe” al instalar ASP.NET
• Importante: no se comparte estado entre
páginas/aplicaciones ASP y ASP.NET
Cambios en la API
• Con tres excepciones, ASP.NET es 100%
API compatible con ASP
• Cambios de API previstos:
 Request() Array -> String
 Request.QueryString() Array -> String
 Request.Form() Array -> String
Cambios en la API: detalles
• En ASP, las colecciones Request,
Request.QueryString y Request.Form
devuelven Vectores de caracteres
(StringArrays)
http://localhost/test/Test.asp?values=45&values=600
<%
‘ La línea siguiente retorna: “45, 600”
Response.Write Request.QueryString(“values”)
‘La línea siguiente retorna : “45”
Response.Write Request.QueryString(“values”)(1)
%>
Cambios en la API: detalles
• En ASP.NET estas colecciones requieren un
método explícito para obtener un array
 Estos vectores ahora son “índice 0”
http://localhost/test/Test.aspx?values=45&values=600
<%
‘ La línea siguiente retorna : “45, 600”
Response.Write(Request.QueryString.GetValues(“values”))
‘ La línea siguiente retorna : “45”
Response.Write(Request.QueryString.GetValues(“values”)(0))
%>
Cambios en la API: detalles
• Escenarios de uso más frecuentes:
 Multi-select list box: <select múltiple>
 Múltiples casillas de verificación
(checkbox) con el mismo nombre
Cambios semánticos
• Hay varios cambios semánticos en ASP.NET
• Tópicos:
 Lenguaje único en cada página
 Las funciones deben declararse en bloques
<script runat=server>
 No se soportan funciones de “rendering”
Lenguaje único en cada
página
• ASP permitía tener múltiples lenguajes
en una misma página
• ASP.NET sólo soporta un único lenguaje
por página
 Se puede tener varias páginas, cada una
con un lenguaje diferente
Declaración de funciones
• En ASP las funciones de cada página
podían declararse dentro de bloques
<% %>
<%
Sub HacerAlgo()
Response.Write “¡Hola, Mundo!”
End Sub
HacerAlgo
%>
Declaración de funciones
• En ASP.NET las funciones de cada página
deben declararse de la siguiente manera:
<script language=“VB” runat=server>
Sub HacerAlgo()
Response.Write (“¡Hola, Mundo!”)
End Sub
</script>
<%
HacerAlgo() %>
Funciones de “rendering”
• En ASP las funciones de rendering
podían declararse en bloques <% %>
<% Sub RenderAlgo() %>
<font color=“red”> Son las: <%=Now %> </font>
<% End Sub %>
<%
RenderAlgo
RenderAlgo
%>
Funciones de “rendering”
• En ASP.NET estas funciones se deben reescribir con <script runat=server>
<script language=“VB” runat=server>
Sub RenderAlgo()
Response.Write(“<font color=red> “)
Response.Write(“Son las: “ & Now)
End Sub
</script>
<%
RenderAlgo() %>
Cambios en el lenguaje
Visual Basic®
• Cambios VBScript->VB7:
serán el mayor problema a la hora de migrar
• Grandes tópicos:
 Las variables DEBEN declararse,
así como indicarse su tipo
 No hay más “Set” y “Let”
 No hay más “Propiedad por Defecto” (importante)
 Se requieren paréntesis para invocar a Subs
 Los parámetros son ByVal
por defecto
Más detalles
No hay más “Set” y “Let”
• Usar asignaciones de variables
<%
‘ Sintaxis ASP
Dim MyConn
Set MyConn = Server.CreateObject(“ADODB.Connection”)
‘ Nueva sintaxis ASP.NET
Dim MyConn
MyConn = Server.CreateObject(“ADODB.Connection”)
%>
No hay más
“Propiedad por Defecto”
‘ Sintaxis ASP (para obtener el valor de una columna)
Set MyConn = Server.CreateObject(“ADODB.Connection”)
MyConn.Open(“TestDB”)
Set RS = MyConn.Execute(“Select * from Products”)
Response.Write RS(“Name”)
‘ Nueva sintaxis ASP.NET (para obtener el valor de una columna)
MyConn = Server.CreateObject(“ADODB.Connection”)
MyConn.Open(“TestDB”)
RS = MyConn.Execute(“Select * from Products”)
Response.Write RS(“Name”).Value
Paréntesis en Subrutinas
• En ASP.NET se requieren paréntesis al
invocar una Sub
‘ Paréntesis en Response.Write()
Sub HacerAlgo()
Response.Write( “¡Hola, Mundo!” )
End Sub
‘ Paréntesis en HacerAlgo()
HacerAlgo()
Parámetros ByVal por defecto
• Los parámetros se deben declarar ByRef si
se quiere obtener lo siguiente
<script language=“VB” runat=server>
Sub HacerAlgo(ByRef value)
value = 4343
End Sub
</script>
<%
Dim number = 55
HacerAlgo (number)
Response.Write (“Número: “ & number)
%>
Las variables “Deben” existir
• A diferencia de lo que sucede en las
páginas ASP, en ASPX todas las
variables deben ser declaradas
(indicando su tipo específico)
Algunas cosas pueden necesitar
configuración
• Si se utilizan objetos cuyo modelo de
ejecución sea “apartamento”
(Apartment Threaded), se debe indicar
compatibilidad con ASP en la página
 <%@ Page aspcompat=true %>
Más Información
• En nuestra Comunidad
 http://www.microsoft.com/latam/msdn/co
munidad/comunidades/asp/
• Otros Sitios
 www.asp.net
 http://asp.net.do/
(en español)
Descargar

ASP NET