Hoy quisiera exponer un poco una solución de ASP.NET basada en Javascript y Código ligero(ScriptManager+EnablePageMethods+asmx), algo interesante si se trata de optimizar las aplicaciones asp.net.
El escenario presentado es el comun denominador de las Aplicaciones Web; tanto para Intranet, Extranet, Internet, donde existe siempre la posibilidad de validar registros, como Registro de Usuarios, Preguntar si un dato existe, consultar clientes, etc, etc, etc... ; Existen muchos escenarios donde nuestro ejemplo funcionaría.
La idea es que cuando el Usuario ingrese un valor, ej. "pepe", la aplicación web sea capaz de " IR A LA BASE DE DATOS Y DEVOLVER NUESTRO RESULTADO LO MAS RAPIDO POSIBLE", menos de un segundo!!!, que creen??? ustedes?? recordemos tiempos pasados cuando usabamos en ASP el famoso "Microsoft.XMLHTTP", recuerdan?? que por cierto se sigue usando, para que recuerden un poquito:
var objXmlhttp;
objXmlhttp=new XMLHttpRequest();
ó
if (window.ActiveXObject){
objXmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
En fin viejos tiempos, :)
Lo que usaremos nosotros para resolver este problema de rendimiento de las aplicaciones con la base de datos, seria usando a nuestro gran amigo: ScriptManager (System.Web.UI)
El ScriptManager, es un ente importante y principal para la funcionalidad de AJAX en ASP.NET, es el gran administrador de todos los recursos AJAX como "bibliotecas de scripts, representación parcial de página, el proxy de cliente para los servicios Web y de aplicación", como verán es el mas mas o el papa
Usaremos una caracteristicas del ScriptManager llamada: "EnablePageMethods" (System.Web.UI), significa que nosotros tenemos a gran posibilidad de llamar desde un codigo cliente "JavaScript" a métodos de la página o mas conocidos como "page methods" de una aspx:
Tiene esta propiedad de tipo System.Boolean, que si se encuentra en True, nos da la posibilidad de llamar a los métodos de una pagina aspnet, por defecto esta en False
A continación crearemos nuestro Web Site para iniciar:
Paso 1.- Crear Web Site
Paso 2.- Crear Archivo JS de nombre validardatos.js
Paso 3.-Agregar Código al archivo validardatos
La idea es programar el método Cliente(validardatos.js) que se encargará de realizar la llamada al PageMethod de la pagina aspx
Paso 4.- En la pagina default.aspx( que por defecto crea el Web Site de ASPNET), agregamos lo siguiente:
Recordar amigos que este parte el ScriptManager ya tiene configurado la propiedad
EnablePageMethods a True
Tendra un Diseño como este:
Paso 5.- Agregaremos el siguiente código en la pagina default.aspx, en el Evento PageLoad de la página
y agregaremos tambien un WEBMETHOD, el que tendra la llamada del cliente.
En el método GetClienteInfo, se le ha agregado un atributo:
[System.Web.Services.WebMethod()]
Nota.- El atributo WebMethod se asocia a un método Public para indicar que se desea exponer dicho método como parte del servicio Web XML
El método está llamando a otro Método del mismo nombre, significa que estamos llamando a un AppCode que tiene el codigo, por lo tanto el AppCode está llamando a una Librería de Datos, el cual tiene la Implementación con LINQ to SQL, para SQL Server 2008
Métodos y Eventos de la Página Default.aspx
Método del AppCode: Aquí realiza la llamada a la Librería de Datos "DataAccess"
Libreria de Datos:
Paso 6.- Lo que nos queda, solo es testear nuestra aplicación y ver que tan veloz es:
Recordar que al final del articulo estare adjunto el Código Fuente del Web Site, Libreria de Datos
y Script para la BD
Debug de la página,
Debug 1
Debug 2 Listos para agregar el valor que vamos a validar con la bd
Debug 3, Agregamos el valor "deyvi", y presionamos la tecla tab con el click con el mouse a otro sitio de la pagina o click a boton validar, como resultado ingresará a validar si el usuario existe o esta disponible en el archivo Javascript, para luego ir a la libreria de datos y obtener el resultado.
Resultado del codigo :)
La idea de todo es gente, es que ahora la aplicaciones aspnet, son rapidas como cualquier tecnología en el mercado ( en realidad siempre ha existido la forma de implementar app web ligeras)
Saludos, y ya nos veremos pronto para postear temas sobre Tecnologías del lado del Cliente usando librerías de la comunidad : AjaxDataControls.dll
Código Fuente:
http://www.4shared.com/file/fIe5paH-/_2__AspnetAVolar.html
Saludos,
Deyvi TM