ASP.net con C#

download ASP.net con C#

of 178

Transcript of ASP.net con C#

  • Desarrollo Profesional

    de Aplicaciones Web

    con ASP.NET

    ISBN 84-609-4245-7

    Fernando Berzal

    Francisco Jos Cortijo

    Juan Carlos Cubero

  • ASP.NET

    Hoy en da, resulta bastante comn implementar la interfaz de una aplicacin utilizandopginas web en vez de las ventanas y los controles especficos de un sistema operativoconcreto. En lugar de escribir una aplicacin para un sistema operativo concreto, como puedeser Windows, en muchas situaciones es preferible crear aplicaciones web a las que se accede atravs de Internet.

    Se denominan aplicaciones web a aquellas aplicaciones cuya interfaz se construye a partir depginas web. Las pginas web no son ms que ficheros de texto en un formato estndardenominado HTML [HyperText Markup Language]. Estos ficheros se almacenan en unservidor web al cual se accede utilizando el protocolo HTTP [HyperText Transfer Protocol],uno de los protocolos de Internet. Para utilizar una aplicacin web desde una mquinaconcreta, basta con tener instalado un navegador web en esa mquina, ya sea ste el InternetExplorer de Microsoft, el Netscape Navigator o cualquier otro navegador. Desde la mquinacliente, donde se ejecuta el navegador, se accede a travs de la red al servidor web donde estalojada la aplicacin y, de esa forma, se puede utilizar la aplicacin sin que el usuario tengaque instalarla previamente en su mquina.

    Si las pginas que forman la interfaz de nuestra aplicacin las construimos utilizando nica yexclusivamente HTML estndar, podemos conseguir que nuestra aplicacin funcione sobreprcticamente cualquier plataforma, siempre y cuando dispongamos de un navegador webpara el sistema operativo instalado en la mquina desde la que queramos acceder a laaplicacin. Una interfaz construida de esta manera nos permite olvidarnos de los detallesespecficos de los diferentes entornos grficos existentes. Dichos entornos grficos suelen

  • depender del sistema operativo que utilicemos. Por ejemplo, en Windows utilizaremos lasventanas tpicas a las que ya estamos acostumbrados, mientras que en UNIX emplearamos elsistema X Windows y en Linux podramos utilizar gestores de ventanas como KDE o Gnome.

    Como no poda ser de otra forma, el aumento de la portabilidad de nuestra aplicacin llevaconsigo ciertas limitaciones en lo que respecta a su usabilidad. Esto se debe a que lainteraccin del usuario con el ordenador a travs de los formularios HTML empleados en laspginas web est mucho ms limitada que en el caso de que podamos aprovechar lafuncionalidad que ofrecen los controles especficos existentes en la mayora de los entornosgrficos basados en ventanas.

    En el desarrollo de la interfaz de nuestra aplicacin podramos evitar, al menos en parte, lasolucin de compromiso que supone utilizar formularios HTML para conseguir aplicacionesportables. Existen bibliotecas portables para el desarrollo de interfaces grficas, como es elcaso de SWING en la plataforma Java de Sun Microsystems, o de productos como Qt (TrollTech, http://www.troll.no). En el caso de la plataforma Java, sta se dise como unamquina virtual para que pudieran ejecutarse las mismas aplicaciones en distintos sistemasoperativos sin tener ni siquiera que recompilar el cdigo. Por su parte, las bibliotecas delestilo de Qt ofrecen conjuntos de componentes con implementaciones de los mismos paradistintos entornos basados en ventanas. En una de estas bibliotecas de componentes (o tal vezdeberamos decir bibliotecas de interfaces), las distintas implementaciones de un componenteparticular tienen los mismos interfaces para todas y cada una de las plataformas sobre las queest implementada la biblioteca. De este modo, si deseamos portar nuestras aplicaciones de unsistema a otro slo tendremos que recompilar nuestra aplicacin utilizando la versin de labiblioteca adecuada para el sistema operativo sobre el que queremos ejecutar la aplicacin, sintener que modificar ni una sola lnea en nuestro cdigo fuente. Dicho cdigo fuente,obviamente, lo tendremos que escribir evitando cualquier uso de recursos especficos de unaplataforma (algo, de por s, extremadamente difcil).Aunque pueda parecer que soluciones como las descritas en el prrafo anterior resuelvennuestros problemas a la hora de desarrollar aplicaciones portables sin limitaciones en cuanto ala funcionalidad de su interfaz, en realidad se limitan a resolver una pequea parte delproblema que supone instalar y mantener un sistema funcionando. De hecho, la etapa del ciclode vida del software que ms recursos consume es la fase de mantenimiento.

    El mantenimiento del software consume del cuarenta al ochenta por ciento del coste de unsistema y, probablemente, sea la etapa ms importante del ciclo de vida del software (apartede ser la ms olvidada). No debemos pensar que el mantenimiento slo consiste en repararaquello que deja de funcionar por un defecto de fabricacin o por el desgaste asociado al pasodel tiempo. La naturaleza del software hace que nunca se rompa por desgaste. De todos losgastos asociados al mantenimiento del software (que viene a suponer un 60% de su costetotal), un 60% corresponde a la realizacin de mejoras, mientras que slo un 17% estdirectamente asociado a la correccin de defectos. Por tanto, el 60% del 60% del coste totaldel software est asociado a la realizacin de actualizaciones. Si nuestra aplicacin ha defuncionar en muchos puestos diferentes, cada pequea actualizacin que realicemos supondrun esfuerzo considerable a la hora de su distribucin e instalacin. Y si nuestro sistema tiene

    2 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • xito, habr muchas de esas actualizaciones.

    Teniendo los hechos anteriores en cuenta, resulta evidente el atractivo que tiene laimplementacin de aplicaciones web, puesto que se elimina el problema de la distribucin deactualizaciones cada vez que modificamos un sistema. Cuando tengamos que realizar unaactualizacin, nos bastar con modificar la configuracin del servidor que da acceso a nuestraaplicacin web para que todos los clientes dispongan automticamente de la versin msreciente de la aplicacin. Adems, el usuario podr acceder a nuestra aplicacin desdecualquier plataforma y nosotros podremos implementarla utilizando todos los recursosdisponibles en la plataforma que elijamos para albergarla, sin restricciones innecesarias (sibien esto no quiere decir que no aspiremos a la construccin de una aplicacin flexible quenos facilite el trabajo si algn da tenemos que cambiar de servidor de aplicaciones).Dada la importancia actual de las aplicaciones web, el siguiente captulo ofrece unaintroduccin al desarrollo de interfaces web para ayudarnos a comprender en qu consisten ycmo se construyen las aplicaciones de este tipo. En los captulos posteriores de esta parte dellibro veremos con ms profundidad algunos de los detalles de la construccin de interfacesweb con ASP.NET, la tecnologa de la plataforma .NET que nos permite desarrollaraplicaciones web.

    Referencias

    Los datos que hemos mencionado relacionados con elmantenimiento del software se analizan en el libro de RobertL. Glass titulado "Facts and fallacies of SoftwareEngineering" (Addison-Wesley, 2003, ISBN 0-321-11742-5).Este libro es una obra interesante en la que se puede consultarinformacin adicional acerca de cuestiones fundamentalesque a menudo se nos olvidan cuando estamos enfrascados enel desarrollo de software.

    3ASP.NET

    http://csharp.ikor.org/

  • 4 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • Interfaces web

    En este captulo aprenderemos en qu consisten las aplicaciones web y mencionaremosalgunas de las herramientas que los programadores tenemos a nuestra disposicin paraconstruir este tipo de aplicaciones. Para ser ms especficos, en las siguientes seccionestrataremos los temas que aparecen a continuacin:

    - En primer lugar, comenzaremos presentando la evolucin histrica de lasaplicaciones web para comprender cmo se ha llegado a su arquitectura actualdesde los modestos comienzos de las pginas web.

    - A continuacin, pasaremos a describir las principales alternativas de las quedispone el programador para construir sus aplicaciones web.

    - Finalmente, comentaremos las soluciones que oferta Microsoft para el desarrollode interfaces web y empezaremos a ver cmo se construyen aplicaciones web enla plataforma .NET utilizando pginas ASP.NET.

  • Interfaces webEvolucin de las aplicaciones web........................................7

    HTML esttico............................................................ 7Aplicaciones web ....................................................... 9Servicios web........................................................... 11

    Desarrollo de aplicaciones para Internet ............................13En el cliente ............................................................. 13

    HTML dinmico y JavaScript................................. 14Controles ActiveX.................................................. 16Applets................................................................... 17Plug-ins especficos............................................... 17

    En el servidor ........................................................... 18Aplicaciones web compiladas: CGI ....................... 19Servlets.................................................................. 20Aplicaciones web interpretadas: CGI scripts &Scripting languages............................................... 21Pginas de servidor: ASP y JSP ........................... 22

    ASP: Active Server Pages ....................................................24

    ASP.NET: Aplicaciones web en la plataforma .NET...........29Un ejemplo............................................................... 29Dos estilos ............................................................... 32

    Apndice: Aprenda HTML en unos minutos.......................35

    6 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • Evolucin de las aplicaciones web

    Como dijimos en la introduccin a esta parte del libro, las aplicaciones web son aquellas cuyainterfaz se construye utilizando pginas web. Dichas pginas son documentos de texto a losque se les aaden etiquetas que nos permiten visualizar el texto de distintas formas yestablecer enlaces entre una pgina y otra.

    La capacidad de enlazar un texto con otro para crear un hipertexto es la caracterstica msdestacable de las pginas web. Aunque su xito es relativamente reciente, sus orgenes seremontan al sistema Memex ideado por Vannevar Bush ("As we may think", AtlanticMonthly, julio de 1945). El trmino hipertexto lo acu Ted Nelson en 1965 para hacerreferencia a una coleccin de documentos (nodos) con referencias cruzadas (enlaces), la cualpodra explorarse con la ayuda de un programa interactivo (navegador) que nos permitiesemovernos fcilmente de un documento a otro.

    De hecho, la versin que conocemos actualmente del hipertexto proviene del inters de loscientficos en compartir sus documentos y hacer referencias a otros documentos. Este interspropici la creacin de la "tela de araa mundial" (World-Wide Web, WWW) en el CentroEuropeo para la Investigacin Nuclear (CERN). Tim Berners-Lee, uno de los cientficos quetrabajaba all, ide el formato HTML para representar documentos con enlaces a otrosdocumentos. Dicho formato fue posteriormente establecido como estndar por el W3C(World-Wide Web Consortium, http://www.w3c.org/), el organismo creado por el MIT quefija los estndares utilizados en la web desde 1994.

    HTML estticoInicialmente, las pginas web se limitaban a contener documentos almacenados en formatoHTML [HyperText Markup Language]. Dichos documentos no son ms que ficheros de textoa los que se le aaden una serie de etiquetas. Dichas etiquetas delimitan fragmentos del textoque han de aparecer en un formato determinado y tambin sirven para crear enlaces de undocumento a otro (o, incluso, de una parte de un documento a otra parte del mismodocumento). Al final de este captulo puede encontrar una pequea introduccin al formatoHTML para refrescar sus conocimientos o aprender a escribir sus propias pginas web.

    Con unos conocimientos mnimos de HTML, crear un sitio web resulta relativamente sencillo.Slo hay que preparar los documentos HTML tal y como queramos que los visualicen losvisitantes de nuestra pgina. Cuando podemos predecir con antelacin cul es la informacinque tenemos que mostrarle al usuario, crear una pgina web esttica resulta la opcin mssencilla. Incluso cuando el contenido de nuestra pgina web ha de cambiar peridicamente, enocasiones es suficiente con escribir pequeos programas que generen los documentos HTML

    7Interfaces web

    http://csharp.ikor.org/

  • a los que acceder el visitante de nuestra pgina. Este es el caso, por ejemplo, de las pginasweb utilizadas por medios de comunicacin como peridicos. Cada da, o incluso ms amenudo, una aplicacin se encarga de generar los documentos HTML con el formato visualms adecuado para nuestro sitio web. Dichos documentos HTML quedan almacenados deforma permanente en ficheros y el usuario accede a ellos directamente.

    En realidad, el usuario no accede directamente a los ficheros que contienen los documentosHTML, sino que utiliza un navegador para visualizarlos cmodamente. Dicho navegador es,en realidad, una aplicacin cliente que utiliza el protocolo HTTP [HyperText TransferProtocol] para acceder a la mquina en la que hayamos alojado nuestros ficheros en formatoHTML. Por tanto, para que los usuarios puedan acceder a nuestra pgina web, slonecesitaremos un servidor web que atienda las peticiones HTTP generadas por el navegadorweb del usuario. En respuesta a esas peticiones, el servidor HTTP que utilicemos le enviar alnavegador los documentos que haya solicitado. Cuando nuestro servidor se limita a servirdocumentos HTML previamente preparados, podemos utilizar cualquier servidor HTTP delos existentes, como el Internet Information Server de Microsoft o el Apache (el cual se puededescargar gratuitamente de http://www.apache.org/).Aparte del servidor HTTP que hemos de tener funcionando en la mquina que sirva losdocumentos HTML, nos har falta disponer de una direccin IP fija para la mquina dondealojemos el servidor HTTP. Dicha direccin resulta imprescindible para que el usuario puedasaber dnde ha de conectarse para obtener los documentos que le interesan. De hecho, lamayora de los usuario ni siquiera son conscientes de que cada vez que acceden a un sitio webestn utilizando una direccin IP a modo de "nmero de telfono", sino que escriben en labarra de direcciones de su navegador una URL [Uniform Resource Locator] que identificaunvocamente el recurso en Internet al que desea acceder y suele incluir un nombre dedominio. Dicho nombre de dominio es una cadena de texto fcil de recordar que el servicio denombres DNS [Domain Name Service] traduce a la direccin IP necesaria para establecer conxito una conexin con el servidor. En consecuencia, resulta aconsejable (y no demasiadocaro) reservar un nombre de dominio que asociaremos a la direccin IP de la mquina dondeinstalemos nuestro servidor HTTP. Slo as podr el usuario escribir una URL de la formahttp://csharp.ikor.org/ para acceder cmodamente a los datos que nosotros previamentehabremos dejado a su disposicin en nuestro servidor web.Si bien esta forma de construir un sitio web puede ser suficiente para muchas aplicaciones, enocasiones necesitaremos que el contenido de nuestra pgina web se genere dinmicamente enfuncin de las necesidades y deseos de nuestros usuarios. Cuando nos interesa algo ms quemostrar siempre los mismos datos de la misma forma, tener que actualizar peridicamente losficheros HTML no siempre es una buena idea. El inconveniente de utilizar simples ficherosHTML es que estos ficheros son estticos y, mientras no los actualicemos de forma manual oautomtica, mostrarn siempre la misma informacin independientemente de quin acceda anuestra pgina. Por ejemplo, si lo que queremos es construir una pgina web cuyo contenidocambie en funcin del usuario la visite y de la tarea que desee realizar, la solucin pasaineludiblemente por generar dinmicamente los documentos HTML cada vez que le llega unasolicitud a nuestro servidor HTTP. ste es el principio de funcionamiento de las aplicacionesweb que describiremos en el siguiente apartado.

    8 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • HTML esttico: Configuracin tpica de una "aplicacin web" que se limitaa ofrecer la informacin almacenada en pginas HTML a las que el usuario

    final accede desde su navegador web utilizando el protocolo HTTP.

    Aplicaciones webAunque la utilizacin de documentos HTML estticos puede ser la solucin ms adecuadacuando nuestra pgina web se limite a ofrecer siempre la misma informacin o podamosautomatizar la realizacin de actualizaciones de los documentos HTML que la constituyen, lanaturaleza dinmica de la web y las expectativas que ha creado en la actualidad hacennecesaria la implementacin de aplicaciones web que generen dinmicamente el contenidoque finalmente se les ofrece a los usuarios. De esta forma podemos seleccionar, filtrar,ordenar y presentar la informacin de la forma ms adecuada en funcin de las necesidades decada momento. Si bien esto se podra conseguir con pginas HTML estticas si dispusisemosde espacio suficiente en disco (y, de hecho, esta es una estrategia que se utiliza para disminuirla carga de la CPU de los servidores), las aplicaciones web nos permiten ofrecer lainformacin ms actual de la que disponemos al poder acceder directamente a las bases dedatos que contienen los datos operativos de una empresa.

    La creacin de aplicaciones web, en consecuencia, requiere la existencia de softwareejecutndose en el servidor que genere automticamente los ficheros HTML que se visualizanen el navegador del usuario. Exactamente igual que cuando utilizbamos pginas estticas enformato HTML, la comunicacin entre el cliente y el servidor se sigue realizando a travs delprotocolo HTTP. La nica diferencia consiste en que, ahora, el servidor HTTP delega en otrosmdulos la generacin dinmica de las pginas HTML que se envan al cliente. Ya que, desdeel punto de vista del cliente, la conexin se realiza de la misma forma y l sigue recibiendopginas HTML estndar (aunque stas hayan sido generadas dinmicamente en el servidor),el navegador del cliente es independiente de la tecnologa que se utilice en el servidor paragenerar dichas pginas de forma dinmica.

    9Interfaces web

    http://csharp.ikor.org/

  • Desde el punto de vista del programador, existe una amplia gama de herramientas a sudisposicin. Para generar dinmicamente el contenido que se le ofrece al usuario, puede optarpor desarrollar software que se ejecute en el servidor o, incluso, en la propia mquina delusuario. Algunas de las opciones entre las que puede elegir el programador sern comentadasen las siguientes secciones y una de ellas ser estudiada con mayor detalle en ste y lossiguientes captulos: las pginas ASP.NET incluidas en la plataforma .NET.

    Bsicamente, las distintas alternativas disponibles para el desarrollo de aplicaciones webofrecen la misma funcionalidad. No obstante, en funcin de las necesidades de cada proyectoy de su envergadura algunas resultarn ms adecuadas que otras. Igual que en cualquier otroaspecto relacionado con el desarrollo de software, no existen "balas de plata" y cadatecnologa ofrece una serie de facilidades que habremos de estudiar en funcin de lo quetengamos que hacer. Por ejemplo, el protocolo HTTP es un protocolo simple en el que seestablece una conexin TCP independiente para cada solicitud del cliente. Esto es, cada vezque el usuario accede a un fichero de nuestro servidor (o, lo que es lo mismo, a una pginagenerada dinmicamente), lo hace de forma independiente. Por tanto, la herramienta queutilicemos para crear nuestra aplicacin web debera facilitarnos el mantenimiento de sesionesde usuario (conjuntos de conexiones independientes relacionadas desde el punto de vistalgico).En resumen, independientemente de la forma en que implementemos nuestra aplicacin web,el navegador del cliente es independiente de la tecnologa que se utilice en el servidor, ya quea l slo le llegar una pgina HTML estndar que mostrar tal cual. En la siguiente seccinrepasaremos las formas ms comunes de desarrollar aplicaciones web. Usualmente, laspginas web que se le muestran al usuario se generan dinmicamente en el servidor, si bientambin se puede introducir cierto comportamiento dinmico en el navegador del cliente acosta de perder parte de la independencia entre el navegador y nuestra aplicacin web.

    Aplicaciones web: El contenido que se le muestra al usuario se generadinmicamente para cada solicitud proveniente del navegador web

    instalado en la mquina cliente.

    10 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • Antes de analizar las distintas herramientas y tecnologas que nos facilitan el desarrollo deaplicaciones web, para terminar de repasar la evolucin de las pginas web desde suscomienzos estticos hasta la actualidad, en el siguiente apartado comentaremos brevementecul es la configuracin que suelen tener las aplicaciones web ms recientes.

    Servicios webLas aplicaciones web han sufrido una evolucin anloga a la que ya padecieron lasaplicaciones de escritorio que utilizan los recursos propios de cada sistema operativo paraconstruir su interfaz de usuario. Inicialmente, estas aplicaciones se ejecutaban en una nicamquina, que era adems la mquina donde se almacenaban los datos que manipulaban.Posteriormente, se hicieron populares las arquitecturas cliente/servidor, en las que la interfazde usuario de las aplicaciones de gestin se ejecuta en la mquina del cliente pero los datos sesuelen almacenar en un sistema gestor de bases de datos. La aplicacin cliente se conecta alsistema gestor de bases de datos de forma similar a como el navegador web accede al servidorHTTP en una aplicacin web como las descritas en el apartado anterior. Finalmente, paradeterminadas aplicaciones de gestin se han impuesto las arquitecturas multicapa y el uso demiddleware (por ejemplo, CORBA). En estas aplicaciones, la mquina cliente slo ejecuta lainterfaz de usuario y la lgica de la aplicacin se ejecuta en un servidor de aplicacionesindependiente tanto de la interfaz de usuario como de la base de datos donde se almacenan losdatos.

    Las aplicaciones web slo se distinguen de las aplicaciones de escritorio tradicionales en que,en vez de implementar la interfaz de usuario utilizando un lenguaje particular como C/C++ oJava, se utilizan pginas web como punto de acceso a las aplicaciones. Por consiguiente, no esde extraar que tambin se construyan aplicaciones web multicapa. Dichas aplicacionesconstruyen su interfaz utilizando formularios HTML, implementan su lgica en sistemasdistribuidos y suelen almacenar sus datos en sistemas gestores de bases de datos relacionales.

    De hecho, en el caso de las aplicaciones web incluso se han propuesto estndares que utilizanlos mismos protocolos que las aplicaciones web cliente/servidor como canal de comunicacinentre las distintas partes de una aplicacin distribuida. Este es el caso de los servicios web,que intercambian mensajes en formato XML utilizando protocolos de transporte como HTTP.Los servicios web, bsicamente, establecen un lenguaje comn mediante el cual distintossistemas puedan comunicarse entre s y, de esta forma, facilitan la construccin de sistemasdistribuidos heterogneos. Dada su importancia actual, les dedicaremos a ellos un captulocompleto en la siguiente parte de este libro. Por ahora, nos centraremos en la construccin deinterfaces web. Ms adelante ya veremos cmo encajan todas las piezas en la construccin dearquitecturas software.

    11Interfaces web

    http://csharp.ikor.org/

  • Servicios web: La lgica de la aplicacin se distribuye. El intercambio demensajes en formato XML y el uso de protocolos estndares de Internet nos

    permiten mantener conectadas las distintas partes de una aplicacin,aunque sta haya de funcionar en un sistema distribuido heterogneo.

    12 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • Desarrollo de aplicaciones para Internet

    Como hemos ido viendo en las pginas anteriores, actualmente se observa una tendencia muydefinida que fomenta la utilizacin los estndares de Internet para desarrollar aplicaciones degestin en medianas y grandes empresas. Si centramos nuestra atencin en el desarrollo delinterfaz de usuario de estas aplicaciones, lo que encontramos es un uso extensivo de losestndares abiertos utilizados en la web, aqullos promovidos por el W3C, si bien es ciertoque tambin se utilizan algunas tecnologas propietarias.

    La caracterstica comn que comparten todas las aplicaciones web es el hecho de centralizarel software para facilitar las tareas de mantenimiento y actualizacin de grandes sistemas. Esdecir, se evita tener copias de nuestras aplicaciones en todos los puestos de trabajo, lo quepuede llegar a convertir en una pesadilla a la hora de distribuir actualizaciones y garantizarque todos los puestos de trabajo funcionen correctamente. Cada vez que un usuario deseaacceder a la aplicacin web, ste se conecta a un servidor donde se aloja la aplicacin. De estaforma, la actualizacin de una aplicacin es prcticamente trivial. Simplemente se reemplazala versin antigua por la versin nueva en el servidor. A partir de ese momento, todo elmundo utiliza la versin ms reciente de la aplicacin sin tener que realizar ms esfuerzo queel de adaptarse a los cambios que se hayan podido producir en su interfaz.

    Aunque todas las aplicaciones web se diseen con la misma filosofa, existen numerosasalternativas a la hora de implementarlas en la prctica. A grandes rasgos, podemos diferenciardos grandes grupos de aplicaciones web en funcin de si la lgica de la aplicacin se ejecutaen el cliente o en el servidor. Esta distincin nos permitir, en los dos prximos apartados,organizar un recorrido sobre las tecnologas existentes para el desarrollo de interfaces web.

    En realidad, casi todas las aplicaciones web reales utilizantecnologas tanto del lado del cliente como del lado delservidor. Utilizar unas u otras en una cuestin de diseo quehabr de resolverse en funcin de lo que resulte ms adecuadopara satisfacer las necesidades particulares de cada aplicacin.

    En el clienteEn principio, todo el software asociado a una aplicacin web se puede desarrollar de formaque el trabajo lo realice el servidor y el navegador instalado en la mquina cliente se limite amostrar pginas HTML generadas en el servidor. De esta forma, al usuario de la aplicacinweb le basta con tener instalado cualquier navegador web. Esta estrategia es la que resulta

    13Interfaces web

    http://csharp.ikor.org/

  • ms cmoda para el programador. Sin embargo, desde el punto de vista del usuario final de laaplicacin, esta opcin no resulta demasiado atractiva. Las limitaciones de los formulariosestndar de HTML hacen difcil, si no imposible, construir interfaces de usuario amigablesrestringindonos al estndar.

    Las limitaciones del formato HTML para construir interfaces de usuario (algo para lo quenunca fue diseado) ha propiciado la aparicin de numerosas tecnologas que permitenejecutar cdigo en la mquina del cliente, generalmente dentro del propio navegador web.Con estas tecnologas se consigue mejorar la escalabilidad de las aplicaciones, ya que serealiza menos trabajo en el servidor y ste puede atender a ms clientes. Por otro lado, semejora tanto la productividad como la satisfaccin del usuario final, al emplear interfaces deusuario ms depuradas y fciles de manejar. Finalmente, estas tecnologas permiten conseguiraplicaciones muy atractivas desde el punto de vista esttico, algo a lo que los programadoresno suelen prestar demasiada atencin pero que resulta de vital importancia a la hora de venderel producto, ya sea una aplicacin a medida para un cliente particular o un sistema que sepone en el mercado a disposicin de todo aqul que quiera usarlo desde la comodidad de sucasa. Al fin y al cabo, hace cunto tiempo que no ve una aplicacin web nueva en la que nose haya incluido una animacin o presentacin espectacular en Flash para agradar al cliente?Y eso que la dichosa presentacin suele tardar un buen rato en descargarse y slo supone unaprdida de tiempo para los usuarios habituales de la aplicacin web (la cual, en demasiadasocasiones, ni siquiera funciona correctamente).A continuacin mencionaremos algunas de las herramientas y tecnologas que se suelenutilizar para ejecutar parte de la aplicacin web en la mquina del propio cliente:

    HTML dinmico y JavaScriptSin lugar a dudas, la herramienta ms utilizada a la hora de dotar a nuestras pginas HTML decierto comportamiento dinmico. El HTML dinmico (DHTML) se basa en construir unmodelo basado en objetos del documento HTML, de forma que podamos acceder fcilmente alos distintos elementos que lo componen (vase la figura). La modificacin dinmica de lapgina HTML se realiza a travs de pequeas macros o scripts que suelen incluirse en elmismo fichero que la pgina, si bien siempre es conveniente intentar separarlas del HTMLpara no mezclar los detalles del HTML de la interfaz con la lgica que implementan dichasmacros.

    14 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • DHTML DOM [Document Object Model]: Facilita la creacin de pginasweb dinmicas al ofrecer una forma cmoda de acceder a los distintos

    elementos que componen una pgina web.

    En HTML dinmico, cada etiqueta HTML se convierte en un objeto con sus propiedades yeventos asociados. Los scripts han de proporcionarle al navegador el cdigo correspondiente ala respuesta prevista por el programador para los distintos eventos que se pueden producir.Esto es, las macros se ejecutan cuando se produce algn evento asociado a alguno de loselementos de la pgina web de modo anlogo a como se programa en cualquier entorno deprogramacin visual para construir interfaces de usuario.

    Usualmente, las macros se escriben utilizando JavaScript por cuestiones de portabilidad, sibien navegadores web como el Internet Explorer de Microsoft tambin permiten otroslenguajes como VBScript [Visual BASIC Script]. En realidad, aunque existe un estndaroficial de JavaScript ratificado por ECMA (por lo que se le suele llamar ECMAScript), cadanavegador implementa versiones sutilmente diferentes de JavaScript, con los consiguientesdolores de cabeza que esto conlleva para el programador. Pese a ello, JavaScript resulta unaopcin atractiva ya que no resulta difcil encontrar en Internet bibliotecas gratuitas deejemplos que funcionan en los navegadores web ms comunes (desde los tpicos mensdesplegables, banners, relojes y calendarios hasta juegos de ajedrez).

    15Interfaces web

    http://csharp.ikor.org/

  • JavaScript es un lenguaje interpretado originalmente llamado LiveScript que Netscapedesarroll para sus productos relacionados con la web. De hecho, JavaScript funcionatanto en navegadores web como en el servidor HTTP de Netscape, al ms puro estilode las pginas ASP de Microsoft.

    La sintaxis de JavaScript muy similar a la de Java y resulta fcil de aprender paracualquiera que tenga unos conocimientos bsicos de C. Por ejemplo, para declarar unavariable no hay que especificar su tipo; basta con asignarle un valor que podemosobtener de alguno de los elementos de nuestra pgina web (el primer elemento delprimer formulario, por ejemplo):

    var dato = document.forms[0].elements[0].value;

    Inicialmente, slo el navegador de Netscape soportaba JavaScript, si bien Microsoft notard en incorporar una versin ligeramente modificada de JavaScript denominadaJScript (cuando Netscape acaparaba el mercado de los navegadores web y Microsoftera un aspirante). Las resultantes inconsistencias hacen difcil escribir cdigo quefuncione correctamente en ambos navegadores, si bien Microsoft ha ganado la batallay ahora son los dems los que tienen que intentar que sus navegadores interpreten elHTML dinmico de la forma que lo hace el de Microsoft.

    Si bien Netscape y Sun Microsystems se han beneficiado mutuamente de sucooperacin para facilitar el intercambio de mensajes y datos entre Java y JavaScript,JavaScript es independiente de Java. JavaScript es hoy un estndar abierto, ratificadopor ECMA igual que el lenguaje C#, mientras que Java es propiedad de SunMicrosystems.

    Controles ActiveX

    Otra de las tecnologas que se puede utilizar para implementar parte de las aplicaciones weben el lado del cliente est basada en el uso de controles ActiveX como los que se utilizan en eldesarrollo de aplicaciones para Windows. Los controles ActiveX estn construidos sobreCOM [Component Object Model], el modelo de Microsoft para desarrollo de componentesanterior a la plataforma .NET. A diferencia de JavaScript, que es un lenguaje totalmenteinterpretado, los controles ActiveX se compilan previamente, lo que permite su ejecucin mseficiente.

    Al ser una tecnologa especfica de Microsoft, la inclusin de controles ActiveX en pginasweb slo funciona correctamente en el navegador web de Microsoft, el Internet Explorer.Dado su fuerte acoplamiento con los productos de Microsoft, su utilizacin se suele limitar alas aplicaciones web para intranets. Las intranets constituyen un entorno ms controlado queInternet al estar bajo el control de una nica organizacin, por lo que uno puede permitirse el

    16 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • lujo de que su aplicacin web no sea realmente portable.En cierta medida, se puede decir que los controles ActiveX fueron la primera respuesta deMicrosoft a los applets de Java promovidos por Sun Microsystems. La segunda, mucho msambiciosa, fue la creacin de la plataforma .NET.

    Applets

    Los applets son aplicaciones escritas en Java que se ejecutan en el navegador web. Adiferencia de las macros interpretadas de JavaScript, un applet de Java es una aplicacincompleta compilada para la mquina virtual de Java (similar a la mquina virtual de laplataforma .NET). Los applets se adjuntan a las pginas web y pueden ejecutarse en cualquiernavegador que tenga instalada una mquina virtual Java (bsicamente, un intrprete delcdigo intermedio que genera el compilador de Java).Si bien su utilizacin se puede haber visto limitada por algunos problemas de rendimiento (laejecucin de un applet es, en principio, ms lenta que la de un control ActiveX equivalente),los litigios existentes entre Microsoft y Sun Microsystems han ocasionado que su uso se hayarealizado con cautela en la construccin de aplicaciones web. A pesar del eslogan de Java,"escribe una vez, ejecuta en cualquier sitio", la existencia de distintos navegadores y de sussutiles diferencias restan atractivo a la construccin de interfaces web a base de applets. Dehecho, el uso de Java est ms extendido en el servidor, donde es muy comn implementar lasaplicaciones con servlets y pginas JSP.

    Cuando se utiliza un applet, se descarga del servidor web el cdigo intermedio del appletcorrespondiente a la mquina virtual Java; esto es, sus bytecodes. Al no tener que difundir elcdigo fuente de la aplicacin y disponer de una plataforma completa para el desarrollo deaplicaciones, se suelen preferir los applets para las partes ms complejas de una aplicacinweb mientras que se limita el uso de JavaScript a pequeas mejoras estticas de losformularios HTML.

    Igual que JavaScript, los applets tienen la ventaja de funcionar sobre cualquier navegador quese precie (Netscape Navigator, Internet Explorer de Microsoft o HotJava de Sun). Adems depor su portabilidad, garantizada con que exista un intrprete de bytecodes para la mquinavirtual Java, los applets destacan por su seguridad: cada aplicacin se ejecuta en un espacioindependiente [sandbox] que, en principio, no puede acceder al hardware de la mquina delcliente (salvo que ste, explcitamente, lo autorice).

    Plug-ins especficosLos navegadores web pueden extenderse con plug-ins. Los plug-ins son componentes quepermiten alterar, mejorar o modificar la ejecucin de una aplicacin en la que se instalan. Porejemplo, los navegadores web suelen incluir plug-ins para visualizar documentos en formatoPDF (de Adobe), ejecutar presentaciones Flash (de Macromedia), escuchar sonidos

    17Interfaces web

    http://csharp.ikor.org/

  • RealAudio, mostrar imgenes vectoriales en formato SVG [Scalable Vector Graphics],ejecutar applets escritos para la mquina virtual Java o recorrer mundos virtuales VRML[Virtual Reality Markup Language].

    Para que nuestra pgina web incluya un fichero para el cual necesitemos un plug-inespecfico, basta con incluir una etiqueta EMBED en el HTML de la pgina web. Los plug-ins,usualmente, son gratuitos. Basta con descargar de Internet la versin adecuada para nuestrosistema operativo e instalarla una nica vez, tras lo cual queda almacenada localmente ypodemos utilizarla cuantas veces necesitemos.

    Existen distintos productos que nos permiten construir aplicaciones web utilizando plug-ins,como es el caso de Curl, un curioso lenguaje comercializado por un spin-off del MIT. Curlmejora la capacidad de HTML a la hora de construir interfaces de usuario sin salirse delnavegador web. Ms que por sus caractersticas (Curl viene a ser una especie de LaTeX parael desarrollo de interfaces), este producto resulta curioso por el modelo de negocio sobre elque espera prosperar. En vez de pagar los gastos fijos de una licencia para instalar Curl en elservidor web, el que lo utiliza ha de pagar en funcin de la cantidad de datos que setransmiten comprimidos desde el servidor. Igual que en el caso de los controles ActiveX, estatecnologa puede que tenga xito en el desarrollo de aplicaciones web para intranets, ensituaciones en las que el ancho de banda utilizado por las aplicaciones web tradicionalespueda llegar a ser un obstculo para su implantacin.

    En el servidorLas tecnologas especficas descritas en la seccin anterior permiten, fundamentalmente,mejorar la interfaz de usuario de nuestras aplicaciones web en el navegador del cliente, almenos en cierta medida. Independientemente de que utilicemos o no dichas tecnologas, lafuncionalidad de las aplicaciones web usualmente la tendremos que implementar en el ladodel servidor.

    Para construir aplicaciones web que se ejecuten en el servidor disponemos, si cabe, de msalternativas que en el cliente. Adems, ya que la aplicacin se ejecutar en el servidor, nonecesitamos tener ningn plug-in instalado en la mquina del cliente y, en muchas ocasiones,nos bastar con utilizar el HTML dinmico disponible en los navegadores web actuales.

    Las aplicaciones que se ejecutan en el servidor pueden recibir informacin del cliente dedistintas formas. Por ejemplo, los datos recogidos por un formulario HTML pueden enviarseal servidor codificados en la propia URL (el identificador unvoco que aparece en la barra dedirecciones del navegador) o enviarse en la cabecera del mensaje HTTP que se envaautomticamente cuando el usuario pulsa un botn del formulario. Adems, las aplicacionesweb pueden almacenar pequeas cadenas de texto en el navegador web del cliente pararealizar tareas como el mantenimiento de sesiones del usuario (las famosas cookies).Generalmente, las herramientas que utilicemos nos simplificar el acceso a los datos facilitadosdesde el cliente. Una vez que se adquieren estos datos, la aplicacin web ha de procesarlos de

    18 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • acuerdo a sus requisitos funcionales, los cuales pueden involucrar el acceso a bases de datos,el uso de ficheros, el envo de mensajes a otras mquinas utilizando algn tipo de middlewareo, incluso, el acceso a otros servidores web, posiblemente utilizando los protocolos asociadosa los servicios web.

    Finalmente, como resultado de la ejecucin de la aplicacin web, se ha de generardinmicamente una respuesta para envirsela al cliente. Dicha respuesta suele ser undocumento en formato HTML, si bien tambin podemos crear aplicaciones web que generenimgenes y documentos en cualquier otro formato en funcin de las necesidades del usuario.

    Entre las ventajas ms destacables de las aplicaciones web desarrolladas de esta formadestacan su accesibilidad (desde cualquier punto de Internet), su fcil mantenimiento (no hayque distribuir el cdigo de las aplicaciones ni sus actualizaciones), su relativa seguridad (elcdigo no puede manipularlo el usuario, al que slo le llega una representacin de los datosque le incumban) y su escalabilidad (utilizando arquitecturas multicapa y clusters de PCsresulta relativamente sencillo ampliar en nmero de clientes a los que puede dar servicio laaplicacin).Dada la gran variedad de herramientas y tecnologas que se pueden utilizar para construiraplicaciones web en el servidor, intentaremos agruparlas en unas pocas categorasmencionando algunas de las ms representativas, ya que continuamente aparecen nuevasformas de implementar aplicaciones web e intentar enumerarlas todas slo servira para queeste libro quedase obsoleto antes de su publicacin:

    Aplicaciones web compiladas: CGI

    CGI es el nombre que se le da a una aplicacin web que recibe sus parmetros utilizando elestndar Common Gateway Interface, de ah su nombre. El estndar establece cmo han decomunicarse la aplicaciones con el servidor web. Por extensin, se denomina CGI a unmdulo de una aplicacin web que se implementa utilizando el estndar CGI en un lenguajede programacin tradicional como C. En realidad, un CGI se encarga nicamente deimplementar la respuesta de la aplicacin web a un tipo concreto de solicitud proveniente delcliente. Por tanto, una aplicacin web estar formada, en general, por muchos CGIsdiferentes. Cada uno de ellos ser responsable de un contexto de interaccin de la aplicacincon el usuario (la interaccin del usuario con la aplicacin que se realiza como una nicaaccin del usuario).El estndar CGI permite ejecutar programas externos a un servidor HTTP. El estndarespecifica cmo se pasan los parmetros al programa como parte de la cabecera de la solicitudHTTP y tambin define algunas variables de entorno. En realidad un CGI puede ser cualquierprograma que pueda aceptar parmetros en su lnea de comandos. En ocasiones se utilizanlenguajes tradicionales como C y, otras veces, se emplean lenguajes ideados expresamentepara construir aplicaciones web (como es el caso de Perl).Si escribimos un CGI en C, lo nico que tenemos que hacer es escribir un programa estndar

    19Interfaces web

    http://csharp.ikor.org/

  • que acepte como parmetros los datos recibidos desde el cliente. Dicho programa ha degenerar la respuesta HTTP correspondiente a travs de su salida estndar, stdout en el casode C. Usualmente, el programa CGI generar un documento en HTML, si bien tambin puederedirigir al usuario a otra URL, algo permitido por el protocolo HTTP y que se utiliza muchopara registrar el uso de los enlaces en buscadores y banners publicitarios. Al tener que realizartodo esto a bajo nivel, la tarea se vuelve harto complicada en aplicaciones web de ciertaenvergadura, lo que nos har buscar soluciones alternativas como las que se describen en losapartados siguientes.

    Habitualmente, un CGI es una aplicacin independiente que compilamos para el sistemaoperativo de nuestro servidor web (esto es, un fichero EXE en Windows). Dicha aplicacin sesuele instalar en un subdirectorio especfico del servidor web, el directorio /cgi-bin, sibien esto no es estrictamente necesario. Cada vez que el servidor web recibe una solicitudpara nuestra aplicacin, el servidor web crea un nuevo proceso para atenderla. Si la ejecucindel proceso falla por algn motivo o se reciben ms solicitudes que procesos pueden crearse,nuestra aplicacin dejar de responder a las solicitudes del usuario.Dado que lanzar un proceso nuevo cada vez que recibimos una solicitud del usuario puederesultar bastante costoso, los servidores web suelen incluir la posibilidad de implementarnuestros CGIs como bibliotecas que se enlazan dinmicamente con el servidor web y seejecutan en su espacio de direcciones (DLLs en el caso de Windows). De esta forma seelimina la necesidad de crear un proceso independiente y realizar cambios de contexto cadavez que nuestra aplicacin web deba atender una peticin HTTP. ste el mecanismo queutilizan los mdulos ISAPI [Internet Server API] del Internet Information Server de Microsofto los mdulos NSAPI [Netscape Server API] del servidor HTTP de Netscape. Facilidadescomo ISAPI o NSAPI sirven para mejorar el rendimiento de los CGIs y poco ms. Un fallo enla implementacin de un mdulo de nuestra aplicacin web puede ocasionar que "se caiga" enservidor web por completo, algo que normalmente no suceder con los CGIs que se ejecutande forma independiente al servidor web.

    Servlets

    El trmino servlet, por analoga con el trmino applet, hace referencia a un programa escritoen Java que se ejecuta en el servidor en vez de ejecutarse en el navegador del cliente como losapplets.

    En realidad, un servlet extiende el comportamiento del servidor web de la misma forma queun CGI tradicional. La principal diferencia es que Java nos ofrecen una completa bibliotecade clases para implementar cmodamente la funcionalidad de nuestra aplicacin web.

    El uso de servlets, que encapsulan la comunicacin con el servidor web y el usuario final de laaplicacin, permite que el programador se centre en la lgica de su aplicacin sin tener quepreocuparse en exceso de los detalles del protocolo HTTP. Adems, al ser Java un lenguajeorientado a objetos, las aplicaciones web resultantes son ms elegantes, modulares y flexiblesque las que se construyen con CGIs.

    20 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • Aplicaciones web interpretadas: CGI scripts & Scripting languagesUn script CGI es igual que una aplicacin CGI, salvo que su implementacin se realizautilizando lenguajes interpretados de propsito especfico, de ah el trmino con el que amenudo se hace referencia a ellos: scripting languages. Perl, PHP [Personal Home Page] yColdFusion (extensin .cfm) o Groovy (basado en Java) son algunos de los lenguajes mspopulares pertenecientes a esta categora, si bien tambin se pueden utilizar directamentemacros del shell de UNIX o incluso lenguajes antiguos como REXX [Restructured EXtendedeXecutor, 1979].

    Por ejemplo, a continuacin se muestra un pequeo programa escrito en Perl quealmacenaramos en un fichero de nombre prueba.cgi:

    #!/usr/bin/perluse CGI qw(:standard);

    print header,start_html,h1("CGI de ejemplo"),

    "Su direccin IP es: ", remote_host(),end_html;

    Cuando se ejecuta el programa anterior, se genera automticamente la cabecera HTTPasociada a la respuesta y un documento HTML que muestra la direccin IP de la mquina querealiz la solicitud HTTP en primera instancia. Si lo ejecutamos localmente obtenemos losiguiente:

    ...

    Content-Type: text/html

    Untitled Document

    CGI de ejemploSu direccin IP es: localhost

    Para ejecutar la aplicacin web, el usuario no tendra ms que escribir la URLcorrespondiente en la barra de direcciones de su navegador:

    http://csharp.ikor.org/cgi-bin/prueba.cgi

    21Interfaces web

    http://csharp.ikor.org/

  • suponiendo, claro est, que nuestro servidor web fuese csharp.ikor.org.

    Pginas de servidor: ASP y JSPExisten otras tecnologas, similares a los lenguajes interpretados como Perl, que nos permitenpreparar documentos HTML dentro de los cuales podemos introducir fragmentos de cdigoque ser interpretado por el servidor web cuando atienda las solicitudes HTTP que reciba. Enotras palabras, en vez de crear programas que incluyan en su interior el cdigo necesario paragenerar el documento HTML, creamos documentos HTML que incluyen el cdigo de laaplicacin en su interior. Las pginas JSP [Java Server Pages] de Java y las pginas ASP[Active Server Pages] de Microsoft son los ejemplos ms representativos de este tipo desistemas.

    Funcionamiento de las pginas de servidor: Una pgina ASP/JSP contieneHTML esttico intercalado con scripts que se encargan de generar HTML

    de forma dinmica.

    Igual que los lenguajes de propsito especfico o los servlets, las pginas de servidor (ASP oJSP) resultan ms cmodas para el programador que los CGIs, ya que no tiene que tratardirectamente con los mensajes HTTP que se transmiten desde y hasta el navegador web delcliente. Sin embargo, el diseo de las aplicaciones resultantes no suele ser demasiadoelegante, pues mezcla la interfaz de usuario con la lgica de la aplicacin (y siempredeberamos aspirar a construir aplicaciones modulares con mdulos dbilmente acoplados).Las pginas ASP permiten crear aplicaciones web fcilmente incluyendo en los documentosHTML fragmentos de cdigo escrito en un lenguaje como VBScript, lo ms usual, o JScript,la versin de JavaScript de Microsoft. En la plataforma .NET, las pginas ASP.NETreemplazan a las pginas ASP y el resto de este captulo y los siguientes los dedicaremos a

    22 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • estudiar la construccin de aplicaciones web utilizando esta tecnologa en el servidor HTTPde Microsoft (el Internet Information Server).

    JSP (http://java.sun.com/products/jsp/) funciona de forma anloga a las pginas ASP,si bien utiliza el lenguaje de programacin Java. En realidad, JSP no es ms que unaextensin de los servlets Java que permiten programar las aplicaciones web tal comoestaban acostumbrados los programadores que utilizaban pginas ASP antes de queJSP existiese. Por este motivo se suele considerar que las pginas JSP son mssencillas que los servlets o los CGIs.

    JSP permite generar documentos HTML o XML de forma dinmica combinandoplantillas estticas con el contenido dinmico que se obtiene como resultado deejecutar fragmentos de cdigo en Java. JSP permite separar mejor la interfaz deusuario de la generacin de contenido que las pginas ASP tradicionales, de forma quelos diseadores web pueden modificar el aspecto de una pgina web sin que esointerfiera en la programacin de la aplicacin web. Esto se debe a que JSP utilizaetiquetas al estilo de XML para generar el contenido de forma dinmica, generacin dela que se harn cargo componentes instalados en el servidor (JavaBeans), el cualpuede ser un servidor HTTP como Apache, un servidor escrito en Java como Tomcat(conocido familiarmente como "el gato Tom") o cualquiera de los muchos servidoresde aplicaciones existentes que se ajustan al estndar J2EE [Java 2 Enterprise Edition].

    Recordatorio

    Algo que nunca debemos olvidar es que tanto ASP como JSPgozan de gran aceptacin a pesar de que no fuerzan uno de losprincipios bsicos de diseo de software: la separacin entrela interfaz de una aplicacin y su lgica interna.

    23Interfaces web

    http://csharp.ikor.org/

  • ASP: Active Server Pages

    Tal como mencionamos en la seccin anterior, ASP es la tecnologa de Microsoft que permitedesarrollar aplicaciones web que ejecuten en el servidor HTTP de Microsoft, el InternetInformation Server (IIS). El desarrollo de aplicaciones utilizando pginas ASP consiste,bsicamente, en intercalar macros o fragmentos de cdigo dentro de los documentos HTMLque sirven para crear las interfaces de usuario de las aplicaciones web. Los fragmentos deHTML proporcionan la parte esttica de lo que ve el usuario mientras que los fragmentos decdigo generar la parte dinmica. Esto suele conducir a mezclar los detalles de la interfaz conla lgica de la aplicacin, algo que, repetimos, no suele ser demasiado recomendable.

    Una pgina ASP no es ms que un fichero HTML con extensin .asp (.aspx en el caso deASP.NET) al que le aadimos algo de cdigo. Este cdigo se pueden implementar utilizandodistintos lenguajes interpretados. Por lo general, se emplea una variante de Visual Basicconocida como VBScript [Visual Basic Script]. Cuando alguien accede a la pgina, el InternetInformation Server interpreta el cdigo que incluye la pgina y combina el resultado de suejecucin con la parte esttica de la pgina ASP (la parte escrita en HTML convencional).Una vez interpretada la pgina ASP, el resultado final es lo que se enva al navegador webinstalado en la mquina del usuario que accede a la aplicacin.

    Funcionamiento de las pginas ASP: La parte esttica de la pgina se envajunto con el resultado de ejecutar el cdigo en el servidor, de ah el "AS" de

    ASP.

    Para desarrollar pginas ASP con comodidad, el programador dispone de una serie de objetospredefinidos que simplifican su trabajo ocultando los detalles de la comunicacin del

    24 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • navegador web del cliente con el servidor HTTP. Igual que en el caso de las pginas JSP enJava y de otras muchas alternativas para desarrollar aplicaciones web en el servidor, lasmencionadas en el apartado anterior de este captulo, los objetos definidos en ASPproporcionan distintos servicios tiles en el desarrollo de aplicaciones web (vase la tablaadjunta), adems de facilidades para acceder a componentes COM (por ejemplo, se puedeutilizar ADO [ActiveX Data Objects] para acceder a bases de datos).

    Objeto EncapsulaRequest La solicitud HTTP recibidaResponse Las respuesta HTTP generadaServer El estado del servidor

    Application El estado de la aplicacin webSession La sesin de usuario

    Igual que sucede con las dems tecnologas basadas en lenguajes interpretados, para dejarnuestra aplicacin web a disposicin del usuario basta con escribir las pginas ASP yguardarlas en algn directorio al que se pueda acceder a travs del Internet InformationServer, sin tener que compilarlas previamente.

    El siguiente ejemplo muestra cmo se pueden crear fcilmente pginas ASP que generen sucontenido dinmicamente. Para crear nuestra primera pgina web, slo tenemos que crear unfichero de texto llamado Hora.asp y colocarlo en algn directorio al que se pueda accederdesde un navegador web utilizando el IIS. Dentro del fichero podemos escribir lo siguiente:

    Hora.asp

    Hora actual

    El cdigo que aparece entre las etiquetas contiene la parte de la pgina ASP seinterpreta en el servidor antes de enviarle nada al navegador del cliente. El mtodoResponse.Write sirve para escribir algo en la pgina HTML que se genera comoresultado de la ejecucin de la pgina ASP mientras que la funcin Now() es una funcinpredefinida que nos devuelve la fecha y la hora que marque el reloj del sistema donde estinstalado el servidor web. Siempre que queramos generar dinmicamente parte de la pginautilizaremos el objeto Response para hacerle llegar al usuario aquello que nos interese.

    25Interfaces web

    http://csharp.ikor.org/

  • En el ejemplo anterior, el fragmento de cdigo incluido entre las etiquetas se ejecutacuando el usuario accede por primera vez a la pgina Hora.asp. Una vez que se carga lapgina, el resultado de la ejecucin de la pgina ASP queda almacenado en la cach delnavegador del cliente y la hora no se actualiza hasta que el usuario solicite explcitamente quela pgina se vuelva a descargar del servidor (pinchando en el botn actualizar de la barra deherramientas del navegador web que est utilizando).Podramos modificar la pgina ASP que utilizamos en el ejemplo de arriba para mostrar cmose puede utilizar el objeto Request. En esta ocasin, nuestra pgina ASP incluir un botngracias al cual el usuario podr visualizar la hora actual del servidor en el momento que leinterese sin necesidad de conocer el comportamiento interno del navegador web que utilice:

    Aspecto visual de nuestra sencilla pgina ASP.

    Para incluir controles en nuestra pgina ASP a travs de los cuales el usuario puedacomunicarse con el servidor web, lo nico que tenemos que hacer es incluir un formularioHTML en nuestra pgina ASP:

    Hora.Request.asp

    26 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • En esta ocasin, hemos utilizado el objeto Request para recoger los datos de entrada quellegan a nuestra pgina ASP desde el formulario incluido en la pgina HTML que se visualizaen el navegador web del cliente. Request encapsula los datos enviados desde el cliente ynos permite programar nuestra pgina sin tener que conocer los detalles del protocolo HTTPrelativos al envo de datos asociados a un formulario HTML.

    Para comprobar los ejemplos anteriores funcionan, slo hay que guardar los ficherosASP correspondientes en algn sitio que cuelgue del directorio wwwroot del IIS yacceder a l desde el navegador utilizando una URL de la formahttp://localhost/....

    Como no poda ser de otra forma, en la plataforma .NET se ha incluido una versin mejoradade ASP denominada ASP.NET. Entre los principales inconvenientes asociados a las versionesde ASP anteriores a ASP.NET, a las que se suele hacer referencia por "ASP Clsico", seencuentra el hecho de ASP suele requerir escribir bastante cdigo. Por ejemplo, es necesarioescribir cdigo para mantener el estado de la pgina ASP cuando, por cualquier motivo, elusuario ha de volver a ella. Omitir dicho cdigo provoca la frustrante sensacin que todoshemos experimentado alguna vez cuando, tras rellenar un extenso formulario HTML, se nosinforma de un error en uno de los campos y nos vemos forzados a volver a rellenar elformulario completo.

    Por otro lado, el cdigo incluido en las pginas ASP resulta, adems de excesivamenteextenso, poco legible y difcil de mantener al estar mezclado con el HTML de la interfazgrfica. En ASP, el fragmento de cdigo ha de colocarse justo en el sitio donde queremos quesu salida aparezca, lo que hace prcticamente imposible separar los detalles de la interfaz deusuario de la lgica de la aplicacin. Este hecho, no slo dificulta la reutilizacin del cdigo ysu mantenimiento, sino que tambin complica el soporte de nuestra aplicacin para mltiplesnavegadores (recordemos, por ejemplo, que JavaScript y JScript no son exactamente iguales).Finalmente, el "ASP Clsico" presenta otros inconvenientes que hacen su aparicin a la horade implantar sistemas reales de cierta envergadura. Como muestra, valga mencionar ladificultad que conlleva la correcta configuracin de una aplicacin ASP de ciertacomplejidad, los problemas de eficiencia que se nos pueden presentar cuando hemos deatender ms peticiones que las que nuestro servidor puede atender, o los innumerablesproblemas que puede suponer la depuracin de una aplicacin construida con pginas ASP.En realidad, muchos de estos inconvenientes provienen de las limitaciones de los lenguajesinterpretados que se utilizan para escribir los fragmentos de cdigo incluidos en las pginasASP.

    Las limitaciones e inconvenientes mencionados en los prrafos anteriores propiciaron la

    27Interfaces web

    http://csharp.ikor.org/

  • realizacin de algunos cambios notables en ASP.NET. ASP.NET, por tanto, no escompletamente compatible con ASP, si bien la mayor parte de las pginas ASP slo requierenpequeos ajustes para pasarlas a ASP.NET. De hecho, el primero de los ejemplos que hemosmostrado funciona perfectamente como pgina ASP.NET (sin ms que cambiarle la extensin.asp por la extensin utilizada por las pginas ASP.NET: .aspx). El segundo de losejemplos funcionar correctamente si tenemos en cuenta que, en Visual Basic .NET ,losparntesis son obligatorios en las llamadas a los mtodos (algo que era opcional en versionesanteriores de Visual Basic).La siguiente seccin de este captulo y los captulos siguientes los dedicaremos a tratar losdetalles de funcionamiento de ASP.NET, la versin de ASP incluida en la plataforma .NET

    28 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • ASP.NET: Aplicaciones web en la plataforma .NET

    ASP.NET es el nombre con el que se conoce la parte de la plataforma .NET que permite eldesarrollo y ejecucin tanto de aplicaciones web como de servicios web. Igual que suceda enASP, ASP.NET se ejecuta en el servidor. En ASP.NET, no obstante, las aplicaciones web sesuelen desarrollar utilizando formularios web, que estn diseados para hacer la creacin deaplicaciones web tan sencilla como la programacin en Visual Basic (.NET, claro est).

    Un ejemploPara hacernos una idea de cmo es ASP.NET, retomemos el ejemplo de la seccin anterior,que en ASP.NET queda como sigue si empleamos el lenguaje de programacin C#:

    Ejemplo de pgina ASP.NET

    Hora.aspx

    public void Button_Click (object sender, System.EventArgs e){LabelHora.Text = "La hora actual es " + DateTime.Now;

    }

    Este sencillo ejemplo ilustra algunas de las caractersticas ms relevantes de ASP.NET. Porejemplo, podemos apreciar cmo el cdigo de nuestra aplicacin ya no est mezclado con lasetiquetas HTML utilizadas para crear el aspecto visual de nuestra aplicacin en el navegadordel usuario. En vez de incluir cdigo dentro de la parte correspondiente al HTML esttico,algo que todava podemos hacer al estilo de las pginas ASP tradicionales, hemos preferidoutilizar un par de controles ASP.NET que nos permiten manipular en el servidor loselementos de nuestra pgina web con ms comodidad (de forma similar a como JavaScript

    29Interfaces web

    http://csharp.ikor.org/

  • nos da la posibilidad de modificar dinmicamente, en el cliente, el aspecto de los distintoselementos de la pgina).

    Para probar el funcionamiento del ejemplo anterior, slo tenemos que guardar lapgina ASP.NET con la extensin .aspx en uno de los directorios de nuestramquina a los que da acceso el Internet Information Server (por ejemplo, el directorio/wwwroot). Una vez hecho esto, podremos acceder a la pgina desde nuestronavegador web utilizando la URL adecuada. El Internet Information Server seencargar de interpretar la pgina ASP.NET de la forma adecuada.

    ASP.NET forma parte de la plataforma .NET. De hecho, los formularios Windows y losformularios ASP.NET son las dos herramientas principales con las que se pueden construirinterfaces de usuario en .NET. Aunque no son intercambiables, ya que an no existe unaforma estndar de crear una interfaz de usuario que funcione tanto para aplicaciones Windowscomo para aplicaciones web, tanto unos formularios como los otros comparten su posicinrelativa dentro de la familia de tecnologas que dan forma a la plataforma .NET.

    La plataforma .NET: Los formularios ASP.NET y los formularios Windowsson las dos alternativas principales de las que dispone el programador para

    crear las interfaces de usuario de sus aplicaciones.

    30 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • Igual que sucede en el caso de los formularios Windows (y, de hecho, en cualquier entorno deprogramacin visual para un entorno de ventanas como Windows, desde Visual Basic yDelphi hasta Oracle Developer), la programacin en ASP.NET est basada en el uso decontroles y eventos. Las pginas ASP.NET, en vez de aceptar datos de entrada y generar susalida en HTML como sucede en ASP, implementan su funcionalidad en fragmentos decdigo que se ejecutan como respuesta a eventos asociados a los controles de la interfaz conlos que puede interactuar el usuario. Esta forma de funcionar le proporciona a ASP.NET unmayor nivel de abstraccin, requiere menos cdigo y permite crear aplicaciones msmodulares, legibles y mantenibles.

    Eventos en ASP.NET: La respuesta de la aplicacin web se obtiene comoresultado de ejecutar los manejadores de eventos asociados a los controles

    incluidos en la interfaz de usuario.

    Como muestra la figura, el cdigo se ejecuta en el servidor web en funcin de losmanejadores de eventos que definamos para los controles y pginas que conforman la interfazde nuestra aplicacin web. En ASP.NET, todos los controles que aparecen en la interfazderivan de la clase System.Web.UI.Control. La pgina ASP.NET, en s misma,tambin es un objeto. En este caso, la pgina hereda de System.Web.UI.Page, que a suvez deriva de System.Web.UI.Control.

    Otra de las caractersticas destacables de ASP.NET es que las etiquetas que introducimos enla pgina HTML para incluir controles en la interfaz de usuario son independientes del HTMLque despus se genera para construir la interfaz de usuario que le llega al navegador delcliente. Es el caso, por ejemplo, de los controles y que aparecen en el ejemplo que abre este apartado. ASP.NET seencarga de convertir estas etiquetas en el fragmento de HTML que resulte ms adecuado para

    31Interfaces web

    http://csharp.ikor.org/

  • mostrar los controles en funcin del navegador web que utilice el usuario de nuestraaplicacin. De esta forma, ASP.NET garantiza la compatibilidad de los controles de nuestraaplicacin web con distintos navegadores, sin que el programador tenga que preocuparsedemasiado de las diferencias existentes entre los diferentes navegadores web que puedeemplear el usuario final para acceder a nuestra aplicacin.

    ASP.NET se encarga de mostrar los formularios web de la forma que resultems adecuada para el navegador que utilice el usuario final de la

    aplicacin.

    Dos estilosSi bien el ejemplo incluido en el apartado anterior puede que no nos permita apreciar laimportancia de las mejoras de ASP.NET en cuanto a la separacin de la interfaz de la lgicade la aplicacin, lo cierto es que ASP.NET nos permite aprovechar todas las caractersticas dela plataforma .NET para el diseo de aplicaciones modulares utilizando tcnicas deorientacin a objetos. De hecho, ASP.NET nos permite utilizar dos estilos bien diferenciadospara la confeccin de pginas ASP.NET:

    - El primero de ellos consiste en incluir tanto los controles como el cdigo en unnico fichero .aspx, tal y como hicimos en el ejemplo anterior. A pesar de quelos cambios introducidos por ASP.NET suponen una notable mejora respecto alASP Clsico, esta forma de crear pginas ASP.NET nos impide aprovechar almximo las ventajas de ASP.NET. Por ejemplo, puede que el responsable deimplementar el cdigo asociado a la funcionalidad de la pgina sea una personadiferente al diseador grfico que se encarga del aspecto visual de la aplicacin.Tener todo en un nico fichero puede provocar ms que un simple conflicto de

    32 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • intereses entre programadores y diseadores grficos. Baste con pensar qu podrasuceder si el diseador grfico crea sus diseos utilizando algn editor visual deHTML, del tipo de los que no se suelen comportar correctamente con losfragmentos del documento HTML que no comprenden.

    - Afortunadamente, ASP.NET tambin nos permite mantener los controles denuestra interfaz en un fichero .aspx y dejar todo el cdigo en un lugar aparte[code-behind page]. De esta forma, se separa fsicamente, en ficheros diferentes,la interfaz de usuario del cdigo de la aplicacin. Esta alternativa es, sin duda,ms adecuada que la anterior. En la situacin antes descrita, tanto el programadorcomo el diseador grfico pueden centrarse en su trabajo y el riesgo de que uno deellos "estropee" el trabajo del otro es bastante reducido. Incluso aunque no existala divisin de trabajo entre programador y diseador grfico, mantener el cdigoseparado facilita la construccin de aplicaciones web con diferentes aspectosvisuales. Esto puede llegar a resultar necesario cuando un mismo producto sepersonaliza para distintos clientes o cuando nuestra empresa pretende crear unalnea de productos sin hipotecar su futuro, ya que tener que mantener cdigoduplicado puede llegar a hundir el mejor de los planes de negocio.

    Veamos, a continuacin, cmo quedara nuestro ejemplo de antes si separamos fsicamente eldiseo de nuestra interfaz de la implementacin de los manejadores de eventos queimplementan la respuesta de nuestra aplicacin cuando el usuario pide la hora.

    En la pgina ASP.NET propiamente dicha, slo incluiremos el HTML esttico que se le envaal cliente junto con las etiquetas correspondientes a los controles ASP.NET que se mostrarnen el navegador del cliente como elementos de un formulario web convencional. Aparte deesto, tambin hemos de introducir una directiva en la cabecera de nuestra pgina que lepermita saber al IIS dnde est el cdigo que se ejecuta para conseguir el comportamientodinmico de nuestra pgina. Todo esto lo pondremos en un fichero llamadaHoraWebForm.aspx:

    Hora.aspx

    33Interfaces web

    http://csharp.ikor.org/

  • Una vez que tenemos el diseo de nuestro formulario, slo nos falta implementar sucomportamiento dinmico en un fichero aparte. Este fichero de cdigo lo escribiremos comocualquier otro fichero de cdigo en C#, creando para nuestra pgina una clase que herede deSystem.Web.UI.Page. Tal como podemos deducir de lo que aparece en la directiva queabre nuestro fichero .aspx, el cdigo lo guardaremos en el ficheroHoraWebForm.aspx.cs:

    namespace HoraWeb{public class WebForm : System.Web.UI.Page{protected System.Web.UI.WebControls.Button ButtonHora;protected System.Web.UI.WebControls.Label LabelHora;

    override protected void OnInit(EventArgs e){this.ButtonHora.Click += new

    System.EventHandler(this.ButtonHora_Click);base.OnInit(e);

    }

    private void ButtonHora_Click(object sender, System.EventArgs e){LabelHora.Text = "La hora actual es "+DateTime.Now;

    }}

    }

    Como se puede ver, el cdigo asociado a nuestra aplicacin web se escribe de formacompletamente independiente a su presentacin en HTML. En realidad, cuando creamos lapgina .aspx, lo que estamos haciendo es crear una subclase de la clase implementada en elfichero de cdigo. Esta subclase se limita nicamente a organizar los elementos de nuestrainterfaz de usuario de la forma que resulte ms adecuada.

    Como habr podido observar, la creacin de una pgina ASP.NET con C# resultarelativamente sencilla si se sabe programar en C# y se tienen unos conocimientos bsicos deHTML. Slo tenemos que aprender a manejar algunos de los controles utilizados en laconstruccin de formularios ASP.NET. Hasta ahora, todo lo hemos implementado a mano conel objetivo de mostrar el funcionamiento de ASP.NET y de desmitificar, en parte, la creacinde aplicaciones web. No obstante, como es lgico, lo normal es que creemos las pginasASP.NET con la ayuda del diseador de formularios que nos ofrece el entorno de desarrolloVisual Studio .NET. ste se encargar de rellenar muchos huecos de forma automtica paraque nos podamos centrar en la parte realmente interesante de nuestras aplicaciones. Pero antesde seguir profundizando en los detalles de ASP.NET tal vez convendra refrescar nuestrosconocimientos de HTML.

    34 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • Apndice: Aprenda HTML en unos minutos

    Sin lugar a dudas, el servicio de Internet ms utilizada hoy en da es la World Wide Web(WWW), una aplicacin que nos permite enlazar unos documentos con otros fcilmente. Paraescribir documentos web, ms conocidos como pginas web, se utiliza el formato HTML[HyperText Markup Language].

    Un documento HTML es un fichero de texto normal y corriente (un fichero ASCII, por logeneral). Este fichero incluye ciertas marcas o etiquetas que le indican al navegador, entreotras cosas, cmo debe visualizarse el documento. Las etiquetas, igual que en XML, seescriben encerradas entre ngulos: < y >. Adems, dichas etiquetas usualmente van porparejas: y .Cualquier documento en formato HTML, delimitado por la pareja de etiquetas y, tiene dos partes principales:

    - La cabecera (entre y ) contiene informacin general sobre eldocumento que no se muestra en pantalla: ttulo, autor, descripcin...

    - Las etiquetas y definen la parte principal o cuerpo deldocumento.

    Documento HTML de ejemplo

    Ttulo del documento

    Cuerpo del documento...

    El cuerpo del documento HTML puede incluir, entre otros elementos:- Prrafos (delimitados por la etiqueta ).- Encabezados, empleados para definir ttulos y subttulos (de mayor a menor

    nivel, con las etiquetas a ).- Enlaces para enganchar unas pginas con otras: texto

    35Interfaces web

    http://csharp.ikor.org/

  • , donde url indica la URL del documento al que apunta el enlace y textoes el fragmento del documento de texto sobre el cul ha de pinchar el usuario paraacceder al documento enlazado.

    - Imgenes (en formato GIF, PNG o JPG): , donde url indica la URLmediante la cual se puede acceder al fichero que contiene la imagen y texto esun texto alternativo que se le presenta al usuario cuando ste no ve la imagen.

    - Listas numeradas (con y ) o no numeradas (con y )cuyos elementos se indican en HTML utilizando la etiqueta .

    Con el fin de personalizar la presentacin del texto del documento, HTML incluye laposibilidad de poner el texto en negrita ( ... ), en cursiva ( ... ),subrayarlo ( ... ) o centrarlo (con ... ). Adems,se puede modificar el tamao y color del tipo de letra con ... , donde SIZE indica el tamao (usualmente, untamao relativo al del texto actual, p.ej. +2 +1 -1 -2) y el color se suele representar enhexadecimal como una combinacin de rojo, verde y azul. Por ejemplo, el negro es#000000, el blanco #ffffff, el rojo #ff0000, el verde #00ff00 y el azul #0000ff.Otras etiquetas habituales en los documentos HTML son , que introduce saltos de lnea,y , que muestra en el navegador una lnea horizontal a modo de separador. En lossiguientes apartados presentaremos otros aspectos de HTML que conviene conocer:

    Caracteres especialesEn lenguajes derivados de SGML, como es el caso de HTML o XML, las vocales acentuadas,las ees y otros caracteres "no estndar" en ingls, incluyendo los ngulos que se utilizan paralas etiquetas HTML, requieren secuencias especiales de caracteres para representarlos. Lasiguiente tabla recoge algunas de ellas:

    Carcter Secuencia HTML Carcter Secuencia HTML & &

    < < > > " "

    36 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • TablasLas tablas se delimitan con las etiquetas y . Entre estas dos etiquetas sehan de incluir una serie de filas delimitadas por y . Cada fila, a su vez, incluyeuna serie de celdas y . Por ejemplo:

    Tabla en HTML

    Datos Valores

    Dato 1 Valor 1

    Dato 2 Valor 2

    Dato 3 Valor 3

    El fragmento de HTML anterior aparecer en el navegador del usuario como:

    37Interfaces web

    http://csharp.ikor.org/

  • FormulariosHTML tambin permite que el usuario no se limite a leer el contenido de la pgina, sino quetambin pueda introducir datos mediante formularios (la base de cualquier aplicacin web.Por ejemplo, el siguiente fragmento de HTML contiene un formulario:

    Este formulario, dentro de una tabla, se mostrara de la siguiente forma en el navegador delusuario:

    En los formularios HTML estndar se pueden incluir:- Cuadros de texto para que el usuario pueda escribir algo ().

    - Cuadros de texto que no muestran lo que el usuario escribe (), indispensables cuando queremos que el usuariointroduzca informacin privada.

    - Textos de varias lneas ( ... ).

    38 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • - Opciones que se pueden seleccionar o no de forma independiente ().

    - Opciones mutuamente excluyentes ().- Listas para seleccionar valores ( ).- Ficheros adjuntos ().- E, incluso, datos ocultos para el usuario ().

    Para enviar los datos del formulario a la URL especificada en FORM ACTION, que sera ladireccin adecuada para nuestra aplicacin web, se puede utilizar un botn () o una imagen (). En este ltimocaso, la accin que se realice puede depender de la zona de la imagen que seleccione elusuario, pues, adems de los datos rellenados en el formulario, recibiremos las coordenadasde la imagen correspondientes al punto donde el usuario puls el botn del ratn.

    Hojas de estiloEl principal inconveniente que tiene el formato HTML a la hora de crear pginas web es quedebemos indicar la forma junto con el contenido del documento. Cuando hay que mantener ungran nmero de pginas, sera conveniente disponer de un mecanismo que nos facilitasedarles a todas las pginas un formato coherente. Las hojas de estilo en cascada, CSS[Cascading Style Sheets] son el estndar del W3C que nos permite facilitar el mantenimientode un conjunto grande de pginas HTML y asegurarnos de que se mantiene cierta coherenciaen su presentacin de cara al usuario.

    Para emplear una hoja de estilo en la presentacin de nuestra pgina web, slo tenemos queincluir la siguiente etiqueta antes del cuerpo de nuestro documento HTML:

    donde style.css es el fichero que contiene la hoja de estilo que se emplear paravisualizar el documento HTML.

    El texto de la hoja de estilo ha de escribirse de acuerdo a la siguiente sintaxis:

    ETIQUETA {propiedad1: valor1;propiedad2: valor2;

    }

    39Interfaces web

    http://csharp.ikor.org/

  • ETIQUETA1, ETIQUETA2 {propiedad: valor;

    }

    .CLASE {propiedad: valor;

    }

    donde las etiquetas y las clases son las que se utilizan en los documentos HTML, mientrasque las propiedades aplicables a cada elemento y los valores que pueden tomar dichaspropiedades estn definidas en un estndar emitido por el W3C.

    Por ejemplo, podemos hacer que el cuerpo de esta pgina se visualice con una imagen defondo y se dejen mrgenes alrededor del texto si escribimos la siguiente hoja de estilo:

    BODY{background-image: url(http://csharp.ikor.org/image/csharp.jpg);color: #000000;margin-left: 10%;margin-right: 10%;margin-top: 5%;margin-bottom: 5%;}

    Tambin podemos definir estilos que nos permitan ver fragmentos de nuestros documentoscon el fondo en gris de la misma forma que aparecen los ejemplos de esta seccin. Slotenemos que definir una clase ejemplo:

    En el documento HTML:

    ...

    ...

    En la hoja de estilo CSS:

    .example{background-color: #e0e0e0;

    }

    Incluso podemos definir caractersticas comunes para distintas etiquetas de las que aparecenen un documento HTML. La siguiente hoja de estilo hace que el texto incluido en prrafos,

    40 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • citas, listas y tablas aparezca justificado a ambos mrgenes:

    P, BLOCKQUOTE, LI, TD{text-align: justify;}

    Finalmente, algunos navegadores nos permiten modificar la forma en la que se visualizan losenlaces de una pgina web, para que estos cambien al pasar el cursor del ratn sobre ellos:

    A{text-decoration: none;

    }

    A:hover{color: #009999;

    }

    Jugando un poco con las posibilidades que nos ofrecen las hojas de estilo CSS se puedeconseguir que nuestras pginas HTML estndar tengan buen aspecto sin tener que plagarlasde etiquetas auxiliares como FONT, las cuales lo nico que consiguen es que el texto denuestro documento HTML sea menos legible y ms difcil de mantener.

    Informacin adicionalToda la informacin relativa a los estndares relacionados conla web se puede encontrar en la pgina del organismo que losestablece, el World Wide Web Consortium (W3C). En dichapgina encontrar el estndar oficial, si bien, en la prctica,puede que le interese ms visitar sitios como Index DOT. Elellos encontrar toda la informacin que necesite acerca de laspginas HTML y las hojas de estilo CSS, incluyendocomentarios acerca de cmo funciona cada etiqueta con lasdistintas versiones de los navegadores web ms populares.

    - W3C: http://www.w3c.org

    - Index DOT: http://www.blooberry.com/indexdot/index.html

    41Interfaces web

    http://csharp.ikor.org/

  • Formularios web

    En este captulo, nos centraremos en la construccin de pginas ASP.NET y adquiriremos losconocimientos necesarios para ser capaces de crear nuestras propias pginas web dinmicascon ASP.NET:

    - En primer lugar, veremos en qu consisten los formularios web, una partefundamental de la plataforma .NET.

    - A continuacin, estudiaremos los controles que podemos incluir dentro de lasinterfaces web que construiremos con formularios ASP.NET. Primero,analizaremos los tres tipos de componentes estndar incluidos en las bibliotecasde la plataforma .NET correspondientes a ASP.NET. Despus, llegaremos a vercmo podemos crear nuestros propios controles.

    - Cuando ya tengamos una buena nocin de lo que podemos incluir en unformulario ASP.NET, aprenderemos algo ms acerca de su funcionamiento. Enconcreto, nos interesar saber qu son los "post backs" y cmo se mantiene elestado de una pgina ASP.NET.

  • Formularios webFormularios en ASP.NET......................................................45

    Ejecucin de pginas ASP.NET .............................. 45Creacin de pginas ASP.NET................................ 47

    Uso de controles en ASP.NET..............................................50Controles HTML....................................................... 54Controles web.......................................................... 56Controles de validacin............................................ 60Controles creados por el usuario ............................. 62

    Funcionamiento de las pginas ASP.NET ..........................74Solicitudes y "postbacks" ......................................... 75Estado de una pgina ASP.NET.............................. 79

    44 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • Formularios en ASP.NET

    En el captulo anterior, presentamos una panormica general del desarrollo de aplicacionesweb, en la que mostramos las distintas alternativas de las que dispone el programador ysituamos en su contexto la tecnologa incluidas en la plataforma .NET para la creacin deinterfaces web: las pginas ASP.NET.

    ASP.NET sustituye a las pginas interpretadas utilizadas en ASP por un sistema basado encomponentes integrados en la plataforma .NET. De esta forma, podemos crear aplicacionesweb utilizando los componentes que vienen incluidos en la biblioteca de clases de laplataforma .NET o, incluso, creando nuestros propios componentes. Lo usual es que estosltimos los implementemos a partir de los componentes existentes por composicin; esto es,encapsulando conjuntos de componentes existentes en un componente nuevo. No obstante,tambin podemos crear nuevos componentes por derivacin, creando una nueva clasederivada de la clase del componente cuyo comportamiento deseamos extender (como encualquier entorno de programacin orientado a objetos).Al construir nuestras aplicaciones utilizando componentes, podemos utilizar un entorno deprogramacin visual (como el Visual Studio .NET). Como consecuencia, al desarrollaraplicaciones web, no hemos de prestar demasiada atencin al HTML de nuestras pginasASP.NET, salvo, claro est, cuando estemos implementando los distintos componentes queutilizaremos para crear los controles de la interfaz de usuario. En otras palabras, loscomponentes nos permiten crear nuestra aplicacin centrndonos en su lgica. Los propioscomponentes se encargarn de generar los fragmentos de HTML necesarios para construir lainterfaz web de la aplicacin.

    En esta seccin veremos en qu consisten y cmo se crean las pginas ASP.NET, aunqueantes nos detendremos un poco en analizar cmo se ejecutan las pginas ASP.NET desde elpunto de vista fsico.

    Ejecucin de pginas ASP.NETLos servidores HTTP pueden configurarse de tal forma que las peticiones recibidas se tratende diferentes formas en funcin del tipo de recurso solicitado. Bsicamente, esta decisin larealiza el servidor a partir de la extensin del recurso al que intenta acceder el cliente. En elcaso de las pginas ASP convencionales, cuando el usuario intenta acceder a un fichero conextensin .asp, el Internet Information Server delega en la biblioteca asp.dll, que seencarga de interpretar la pgina ASP. Cuando se utiliza ASP.NET, el IIS se configura de talforma que las solicitudes recibidas relativas a ficheros con extensin .aspx son enviadas a labiblioteca aspnet_isapi.dll.

    45Formularios web

    http://csharp.ikor.org/

  • Como su propio nombre sugiere, la biblioteca aspnet_isapi.dll es un mdulo ISAPI.Los mdulos ISAPI, como vimos en el captulo anterior, sirven para crear aplicaciones websin que en el servidor se tengan que crear nuevos procesos cada vez que, como respuesta auna solicitud, se ha de crear dinmicamente una pgina web. La biblioteca encargada de laejecucin de las pginas ASP.NET (aspnet_isapi.dll) encapsula el CLR [CommonLanguage Runtime] de la plataforma .NET. De esta forma, podemos utilizar todos losrecursos de la plataforma .NET en el desarrollo de aplicaciones web. La DLL mencionadacrear las instancias que sean necesarias de las clases .NET para atender las solicitudesrecibidas en el servidor web.

    Ejecucin de pginas ASP.NET: Usando el Internet Information Servercomo servidor HTTP, una DLL ISAPI se encarga de que podamos

    aprovechar todos los recursos de la plataforma .NET en el desarrollo deaplicaciones web.

    46 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • A diferencia de las pginas ASP tradicionales, las pginas ASP.NET se compilan antes deejecutarse. La primera vez que alguien accede a una pgina ASP.NET, sta se compila y secrea un fichero ejecutable que se almacena en una cach del servidor web, un assembly siutilizamos la terminologa propia de la plataforma .NET. De esta forma, las siguientesocasiones en las que se solicite la pgina, se podr usar directamente el ejecutable. Al no tenerque volver a compilar la pgina ASP.NET, la ejecucin de sta ser ms eficiente que la deuna pgina ASP convencional.

    Configuracin del IISPara poder ejecutar pginas ASP.NET en el Internet Information Server, primerohemos de indicarle cmo ha de gestionar las peticiones recibidas relativas a ficheroscon extensin .aspx. Para ello debemos utilizar la herramienta aspnet_regiisque se encuentra en el directorio donde se instala la plataforma .NET:

    /Microsoft.NET/Framework/v1.X.XXXX

    donde es el directorio donde est instalado el sistema operativoWindows (C:/Windows o C:/winNT, por lo general) y v1.X.XXXX corresponde ala versin de la plataforma .NET que tengamos instalada en nuestra mquina. Puedeque en nuestro ordenador existan distintas versiones instaladas de la plataforma .NETy, usualmente, escogeremos la ms reciente para utilizarla en la creacin de nuestraspginas ASP.NET.

    Creacin de pginas ASP.NETLa biblioteca de clases .NET incluye un conjunto de clases que nos sern de utilidad en lacreacin de las pginas ASP.NET. Entre dichas clases se encuentra una amplia gama decontroles que podremos utilizar en la construccin de interfaces web para nuestrasaplicaciones, controles tales como botones, cajas de texto, listas o tablas. Adems, labiblioteca de clases estndar tambin proporciona algunos componentes que nos facilitarnrealizar tareas comunes como la gestin del estado de nuestra aplicacin web. Conformevayamos avanzando en la construccin de pginas ASP.NET, iremos viendo cmo funcionacada uno de los componentes suministrados por la plataforma .NET.

    Una aplicacin web, generalmente, estar formada por varios formularios web. Cada uno deesos formularios lo implementaremos como una pginas ASP.NET. En la plataforma .NET,las pginas ASP.NET se construyen creando clases derivadas de la claseSystem.Web.UI.Page. Dicha clase proporciona la base sobre la que construiremosnuestras pginas ASP.NET, que implementaremos como subclases deSystem.Web.UI.Page en las que incluiremos la funcionalidad requerida por nuestrasaplicaciones.

    47Formularios web

    http://csharp.ikor.org/

  • En realidad, para mantener independientes la interfaz de usuario y la lgica asociada a laaplicacin, la implementacin de las pginas ASP.NET la dividiremos en dos ficheros. En unfichero con extensin .aspx especificaremos el aspecto de nuestra interfaz, utilizando tantoetiquetas HTML estndar como etiquetas especficas para hacer referencia a los controlesASP.NET que deseemos incluir en nuestra pgina. En un segundo fichero, que ser un ficherode cdigo con extensin .cs si utilizamos en lenguaje C#, implementaremos la lgica de laaplicacin.

    El siguiente ejemplo muestra el aspecto que tendr nuestro fichero .aspx:

    Ho