Configuramos el componente del que mas depende nuestra aplicación
Nuestra creación se compone ahora de una interfaz y una página HTML con elementos dinámicos pero que no se comunican con el servidor.
Antes de agregar ese vínculo hay que preparar la configuración apropiada, especialmente los guiones que se encargarán de responder a las solicitudes de la interfaz.
Nos centraremos en los pasos de configuración del servidor, el componente con el que más dependencias tendrá la aplicación. A diferencia de la interfaz, que está compuesta por objetos que son estándares aceptados, como CSS, XHTML, DOM y JavaScript, los aspectos relacionados con el servidor nos obligarán a elegir un sistema operativo, un servidor web, otro de bases de datos y un lenguaje concreto para escribir los guiones. Las posibles combinaciones son muchas y todas válidas pero, como avanzamos, vamos a optar por internet Information Server funcionando sobre Windows Vista, con ASP.NET 2.0 y SQL Sea'er 2005 Express Edition.
Cuando finalicemos el desarrollo, en la última entrega (el próximo número), podríamos perfectamente sustituir los componentes del servidor por otros, siempre que devolviesen los documentos XML con el mismo formato e información. Sin cambiar nada de la interfaz, por ejemplo, podríamos tener la misma aplicación trabajando con Linux, Apache o PHP.
Paso 1
Conforma IIS (internet informatión server) y SQL Server
Para preparar nuestro servidor hay que partir de que necesitaremos alguna de las versiones de Windows que incorporan US, tales como Windows XP Professional, Windows Server 2003 o las ediciones superiores de Windows Vista. Según de la que dispongamos, el procedimiento para instalar US será uno u otro. En Windows Server 2003, por ejemplo, usaríamos el asistente de configuración para agregar el perfil de servidor de aplicaciones, lo que instalaría HSy opcional-mente ASP.NET.
En Windows Vista, abriremos el Panel de control, seleccionaremos Programas y características y haremos clic en Activar o desactivar las características de Windows. Aparece un cuadro de diálogo en el que escogeremos las opciones que nos interesen de Internet Information Services, en particular ASP.NET, en el grupo Características de desarrollo de aplicaciones.
Para instalar SQL Server 2005 Express Edition no tenemos más que ir a www.micro soft.com/spanish/msdn/vstudio/express/ SQL/default.mspx, descargar la versión en español y ejecutarlo. También conviene hacerse con SQL Server 2005 Management Studio Express, una herramienta de administración desde la que accederemos a las bases de datos, ejecutaremos consultas y tendremos diversas tareas de configuración.
ASP.NET 2.0 utiliza distintos depósitos para almacenar la información relativa a perfiles de usuarios, siendo uno de ellos una base de datos de SQL Server. Para crear y configurar las cuentas, tendremos que ejecutar el programa aspnet_regsql.exe, que se encuentra en la carpeta C:\Windows\Microsoft.NET\Frame work\v2.0.XXXX. Con ello ponemos en marcha el Asistente para la instalación de SQL Server de ASP.NET, en el que nos limitaremos a aceptar los valores propuestos por defecto hasta generar la base de datos en la que ASP.NET almacenará la información.
Podemos utilizar SQL Server Management Studio Express para comprobar que, en efecto, se ha creado una base de datos llamada aspnetdb que contiene tablas para conservar datos sobre perfiles de usuarios, información de usuarios, configuracion de aplicaciones, etc.
Vamos a por ASP.NET
El paso siguiente consiste en crear en US una aplicación, una carpeta dentro de Inet-pub\wwwroot en la que alojaremos todos los documentos de nuestro programa. Podemos hacerlo desde el Administrador de internet Information Services, con las opciones del menú contextual asociado al sitio web por defecto. La mayor parte de la configuración de ASP.NET la efectuaremos mediante el fichero web.config, que crearemos en la carpeta de nuestra aplicación, un archivo cuyo contenido será el del Listado 1. En éste establecemos tres aspectos: el método de identificación de los clientes, el nivel de confianza y las propiedades asociadas al perfil de cada usuario.
Con la propiedad enabled del elemento anonymous!dentification puesta en true [1] permitimos el acceso anónimo a la aplicación. ASP.NET permite utilizar distintos mecanismos de identificación, por ejemplo, basándose en la introducción de credenciales en un formulario, pudiendo limitar de acuerdo con ésta las acciones que efectuará el usuario. Nuestra aplicación no solicitará dato de autenticación alguno a los visitantes, a pesar de que los identificará de forma única, como veremos después.
Las aplicaciones ASP.NET se ejecutan en un determinado nivel de confianza que limita las acciones que pueden llevar a cabo. En el nivel intermedio, por ejemplo, no se permite al código de la misma establecer conexiones con otros servidores. Podemos instituir configuraciones de seguridad a medida para las aplicaciones que necesiten ciertos servicios pero, en nuestro caso, nos limitaremos a asignar un nivel de confianza pleno asignando el valor FuII a la propiedad Leve! del elemento trust [2]. Mediante el atributo origi-nUrl se limitan los dominios o subdominios a los que la aplicación puede acceder, no existiendo, en este caso, ninguna restricción.
Por último, tenemos el elemento profile [3], en el que definiremos las propiedades que queremos asociar a cada uno de los visitantes de nuestro sitio. Por cada una, fijamos un nombre, el tipo de información que almacenará y su disponibilidad para usuarios con acceso anónimo. Tenemos dos propiedades: código y canalesRSS [4], siendo el primero un identificador único de tipo System.Guid y el segundo una colección de elementos que servirá para guardar los URL de los canales a los que esté suscrito cada cliente. Puesto que el archivo web.config está almacenado en la carpeta de nuestra aplicación, todos estos parámetros se aplican exclusivamente a ésta y no afectan al resto de internet Information Server. Podemos utilizar la herramienta de administración de ASP.NET para comprobar la configuración, incluidas las propiedades, sus tipos, etc.
Paso 3
Guión de inicio de sesión
Los pasos que hemos dado hasta ahora nos servirán para simplificar el código de los guiones que se ejecutarán en el servidor en respuesta a las solicitudes efectuadas mediante el objeto XMLHttpRequest desde el navegador. En éstos, recuperaremos información de SQL Server y la almacenaremos, pero en ningún momento tendremos que preocuparnos por conectar con la base de datos, utilizar SQL para obtener aquéllos que necesitemos o agregarlos. Todo ese trabajo queda en manos de ASP.NET 2.0, concretamente de su objeto Profiie.
El primero de nuestros guiones, cuyo código puede encontrarse en el Listado 2, será el que se invoque desde el cliente para iniciar sesión y se llama lector.aspx. En ese momento, el cliente no tiene que aportar nada al servidor, solamente invocar a éste que, a cambio, le devolverá su identificador único y, si los tiene, la lista de canales RSS a los que está suscrito. El guión está escrito como una página ASP.NET, es decir, como un archivo ASPX, si bien, en este caso, no tiene más que código ejecutable asociado al evento.
paso4
Load de la página
Lo primero que hacemos en el guión es eliminar las cabeceras por defecto de ASP.NET, preparadas para devolver una página XHTML, estableciendo el contenido de la respuesta como text/xm! [SJ. A continuación, se va componiendo en una variable el documento XML a devolver, en el que existirá un elemento raíz llamado LectorRSS con dos subelementos: Guid, con el ¡dentifi-cador asociado al usuario, y Canales, con la lista de canales. Cada uno tiene asociado un índice y el URL [&].
Normalmente, nunca invocaremos a este guión de forma directa, sino que será la interfaz de nuestra aplicación, mediante el objeto XMLHttpRequest, la que se comunique con él cuando sea necesario. Podemos, no obstante, usar el navegador para ejecutar el guión y observar el resultado que genera: un documento XML con un identificador que irá cambiando hasta que no nos suscribamos a algún RSS. La interfaz, de cuyo código de comunicación nos encargaremos en el próximo número, deberá guardar su ¡dentificador único y los índices de los canales, ya que serán estos datos los que le permitan seguir comunicándose con el servidor sin problemas.
Paso 5
Obtenemos titulares
Una vez se haya iniciado sesión, la ¡nterfaz tendrá el identificador de usuario, los índices de los canales y sus URL. Esa información la utilizará para ir pidiéndole al servidor que le facilite los titulares de cada uno de los canales, ejecutando otro guión ASP.NET. Debemos tener en cuenta que la interfaz de una aplicación AJAX no puede, a través del objeto XMLHtípRequest, establecer comunicación con otro servidor que no sea el de origen; es decir, aquél desde el que se obtuvo el código. La ¡nterfaz no podrá, por tanto, solicitar directamente los canales RSS a los servidores donde estén alojados, sino que deberá utilizar el suyo de procedencia como un intermediario. El guión de servidor que se encargará de este trabajo será recupera.aspx, cuyo código se muestra en el Listado 3.
Tras establecer el tipo de contenido de la respuesta, se recupera el código facilitado en la solicitud mediante Request["codigo"J y se compara con el que tenemos almacenado en el perfil del usuario. En caso de no coincidir, devolvemos un documento XML con un código y un mensaje de error, así como el identificador obtenido y el que se debería haber recibido [7]. Estos dos últimos datos, obviamente, en una aplicación real nunca deberían resultar visibles y no se devolverían, porque pueden facilitar un ataque externo, pero mientras estamos desarrollándola nos ayudarán en la depuración.
Si la identificación del usuario es correcta, recuperamos el índice facilitado en la solicitud y lo usamos para obtener el URL correspondiente de Profile.canaiesRSS. Ese URL, una cadena de caracteres con la dirección del canal RSS, la facilitamos como parámetro al constructor de la clase WebRequest, un tipo de la plataforma .NET que nos permitirá establecer una comunicación HTTP desde el guión creando una solicitud [8J. A continuación, leemos la respuesta a ésta, mediante el método GetResponse{}.GetResponseStreani{) y la facilitamos como resultado al cliente mediante Write del objeto Response [9].
La comunicación con el servidor y lectura del canal RSS se ha protegido de un posible fallo mediante la construcción try/catch, evitando que el guión pueda ver interrumpido su funcionamiento y devuelva el fallo directamente al cliente.
Paso 6
Agrega nuevos canales Tras iniciar la sesión y obtener los titulares correspondientes a los canales a los que está suscrito, la interfaz quedará a la espera de las acciones del usuario. Dos de ellas afectarán a los datos almacenados en el servidor: la adición de un nuevo canal y la eliminación de alguno de los existentes.
Cuando se introduzca en el formulario HTML la dirección de un nuevo canal RSS y se haga clic en el botón de envío, el cliente deberá facilitar al guión añade,aspx su identificador y el URL del canal, obteniendo como respuesta el índice que el servidor ha asociado al mismo. Como se aprecia en el Listado 4, la primera parte de este guión es similar al anterior en el hecho de que comienza por verificar que la identificación es correcta, devolviendo un error si no fuera así [10].
La suscripción al nuevo canal realmente resulta muy sencilla, ya que basta con recuperar el URL facilitado como parámetro canal en la solicitud y agregarlo a la colección Profüe.canalesRSS [11]. Esta acción devuelve como resultado el índice del nuevo elemento dato que introducimos como XML para facilit tarlo de vuelta al cliente.
Normalmente, cuando el cliente reciba el índice del nuevo canal invocará de inmediato al guión recupera.aspx para obtener los titulares y mostrarlos [12]. De esta forma, no se actualizará la página completa, sino que se agregará únicamente la nueva sección con los resultados obtenidos.
Paso 7
Elimina canales
La interfaz que diseñábamos en la entrega anterior permitía tanto minimizar secciones, que podían volver a abrirse en cualquier momento, como eliminarlas. La eliminación de una sección debemos interpretarla como que el usuario ya no está interesado en el canal RSS que contiene. Con este fin invocará al guión borra.aspx, cuyo código aparece en el Listado 5.
Como los demás guiones, éste comienza estableciendo el tipo de la información a
devolver y verifica la identificación del usuario, generando un error si no fuese correcta. El borrado en sí se lleva a cabo mediante el método RemoveAtO de la colección cana-iesRSS [14], al que facilitamos el índice que hemos recibido en la solicitud.
A diferencia de los demás guiones, cuando éste termina su trabajo no tiene una respuesta que facilitar al cliente. En su lugar, redirec-cionamos la respuesta al guión lector.aspx [15], que enviará a la interfaz la nueva lista de suscripciones tras eliminar la indicada.
Con esto ya tenemos todo lo que necesitamos en el servidor para que nuestra aplicación funcione. El siguiente paso consiste en introducir en la interfaz el código necesario para acceder a estos guiones de servidor, recuperar y enviar la información adecuada según cada caso
0 Response to "Los Elementos del servidor"
Publicar un comentario