Daniel A. Seara Director Regional MSDN NDSoft 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 %>
Funciones de “rendering” En ASP.NET estas funciones se deben re-escribir 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 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”) 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 Otros Sitios http://www.microsoft.com/latam/msdn/comunidad/comunidades/asp/ Otros Sitios www.asp.net http://asp.net.do/ (en español)