Los Elementos del servidor

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 centrare­mos 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á com­puesta 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 Infor­mation 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ía­mos perfectamente sustituir los componen­tes 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 par­tir de que necesitaremos alguna de las ver­siones 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 disponga­mos, el procedimiento para instalar US será uno u otro. En Windows Server 2003, por ejemplo, usaríamos el asistente de configu­ració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 desac­tivar las características de Windows. Apare­ce un cuadro de diálogo en el que escogere­mos las opciones que nos interesen de Internet Information Services, en particular ASP.NET, en el grupo Características de de­sarrollo 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 admi­nistració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 progra­ma 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 acep­tar 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.

















































Paso  2

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. Pode­mos hacerlo desde el Administrador de internet Information Services, con las opcio­nes 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 propie­dades 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 aplica­ción. ASP.NET permite utilizar distintos mecanismos de identificación, por ejemplo, basándose en la introducción de credencia­les en un formulario, pudiendo limitar de acuerdo con ésta las acciones que efectua­rá el usuario. Nuestra aplicación no solicita­rá dato de autenticación alguno a los visitan­tes, 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 con­figuraciones de seguridad a medida para las aplicaciones que necesiten ciertos servicios pero, en nuestro caso, nos limitaremos a asignar un nivel de confianza pleno asignan­do el valor FuII a la propiedad Leve! del ele­mento trust [2]. Mediante el atributo origi-nUrl se limitan los dominios o subdominios a los que la aplicación puede acceder, no exis­tiendo, 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 visi­tantes de nuestro sitio. Por cada una, fijamos un nombre, el tipo de información que alma­cenará 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 aplica­ción, todos estos parámetros se aplican exclusivamente a ésta y no afectan al resto de internet Information Ser­ver. Podemos utilizar la herramienta de administración de ASP.NET para comprobar la configuración, inclui­das 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 eje­cutarán en el servidor en respuesta a las solicitudes efectuadas mediante el objeto XMLHttpRequest desde el navegador. En éstos, recu­peraremos información de SQL Ser­ver 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 que­da en manos de ASP.NET 2.0, con­cretamente de su objeto Profiie.

El primero de nuestros guiones, cuyo código puede encontrarse en el Listado 2, será el que se invo­que desde el cliente para iniciar sesión y se llama lector.aspx. En ese momento, el cliente no tiene que aportar nada al servidor, sola­mente invocar a éste que, a cam­bio, le devolverá su identificador único y, si los tiene, la lista de canales RSS a los que está suscri­to. 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 eje­cutable asociado al evento.
paso4

Load de la página


Lo primero que hacemos en el guión es eli­minar 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 conti­nuació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 comuni­que con él cuando sea necesario. Podemos, no obstante, usar el navegador para ejecu­tar el guión y observar el resultado que gene­ra: un documento XML con un identificador que irá cambiando hasta que no nos suscri­bamos a algún RSS. La interfaz, de cuyo código de comunica­ción nos encargaremos en el próximo núme­ro, deberá guardar su ¡dentificador único y los índices de los canales, ya que serán estos datos los que le permitan seguir comu­nicá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 índi­ces de los canales y sus URL. Esa informa­ció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 comunica­ció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.

Al invocar el clien­te a este guión, deberá facilitar dos paráme­tros: su identificador único y el índice del canal que quiere recuperar. El primero nos permitirá, sin necesidad de solicitar datos personales al usuario, implementar cierta seguridad que impida la ejecución indiscriminada del guión.

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 almacena­do 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 últi­mos datos, obviamente, en una aplicación real nunca deberían resultar visibles y no se devolverían, porque pueden facilitar un ata­que externo, pero mientras estamos desa­rrollándola nos ayudarán en la depuración.

Si la identificación del usuario es correc­ta, 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 direc­ció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 comunica­ción HTTP desde el guión creando una soli­citud [8J. A continuación, leemos la res­puesta 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 posi­ble fallo mediante la construcción try/catch, evitando que el guión pueda ver interrumpi­do 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 espe­ra 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 iden­tificador y el URL del canal, obteniendo como respuesta el índice que el servidor ha asocia­do 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 recu­perar el URL facilitado como parámetro canal en la solicitud y agregarlo a la colec­ción Profüe.canalesRSS [11]. Esta acción devuelve como resultado el índice del nuevo elemento dato que introdu­cimos 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 invoca­rá 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 usua­rio, 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 respues­ta 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 necesita­mos en el servidor para que nuestra aplica­ció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