230 likes | 360 Views
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
E N D
Migrando ASP a ASP.NET Daniel A. SearaDirector Regional MSDNNDSoft
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
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, las colecciones Request, Request.QueryString y Request.Form devuelven Vectores de caracteres (StringArrays)
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 • En ASP.NET estas colecciones requieren un método explícito para obtener un array • Estos vectores ahora son “índice 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
<% Sub HacerAlgo() Response.Write “¡Hola, Mundo!” End Sub HacerAlgo %> Declaración de funciones • En ASP las funciones de cada página podían declararse dentro de bloques <% %>
<script language=“VB” runat=server> Sub HacerAlgo() Response.Write (“¡Hola, Mundo!”) End Sub </script> <% HacerAlgo()%> Declaración de funciones • En ASP.NET las funciones de cada página deben declararse de la siguiente manera:
<% Sub RenderAlgo() %> <font color=“red”> Son las: <%=Now %> </font> <% End Sub %> <% RenderAlgo RenderAlgo %> Funciones de “rendering” • En ASP las funciones de rendering podían declararse en bloques <% %>
<script language=“VB” runat=server> Sub RenderAlgo() Response.Write(“<font color=red> “) Response.Write(“Son las: “ & Now) End Sub </script> <% RenderAlgo()%> Funciones de “rendering” • En ASP.NET estas funciones se deben re-escribir con <script runat=server>
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
<% ‘ Sintaxis ASP Dim MyConn SetMyConn = Server.CreateObject(“ADODB.Connection”) ‘ Nueva sintaxis ASP.NET Dim MyConn MyConn= Server.CreateObject(“ADODB.Connection”) %> No hay más “Set” y “Let” • Usar asignaciones de variables
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 Response.Write() Sub HacerAlgo() Response.Write( “¡Hola, Mundo!” ) End Sub ‘ Paréntesis en HacerAlgo() HacerAlgo() Paréntesis en Subrutinas • En ASP.NET se requieren paréntesis al invocar una Sub
<script language=“VB” runat=server> Sub HacerAlgo(ByRef value) value = 4343 End Sub </script> <% Dim number = 55 HacerAlgo (number) Response.Write (“Número: “ & number) %> Parámetros ByVal por defecto • Los parámetros se deben declarar ByRef si se quiere obtener lo siguiente
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/comunidad/comunidades/asp/ • Otros Sitios • www.asp.net • http://asp.net.do/(en español)