CSharp - ASP.net en La Practica

of 54

  • date post

    02-Mar-2016
  • Category

    Documents

  • view

    39
  • download

    1

Embed Size (px)

description

CSharp - ASP.net en La Practica

Transcript of CSharp - ASP.net en La Practica

  • ASP.NET en la prctica

    En este ltimo captulo dedicado a ASP.NET, trataremos algunos aspectos de inters a la horade construir aplicaciones reales. Despus de haber visto en qu consiste una aplicacines web,cmo se crean formularios web en ASP.NET y de qu forma se pueden realizar las tareas mscomunes con las que debe enfrentarse el programador de aplicaciones web, ahoracomentaremos algunos de los aspectos relativos a la organizacin interna de las aplicacionesweb:

    - En primer lugar, comentaremos brevemente algunos de los patrones de diseo quese suelen emplear a la hora de crear la aplicacin web con el objetivo de que stamantenga su flexibilidad y su mantenimiento no resulte tedioso.

    - A continuacin, nos centraremos en los mecanismos existentes que nos facilitanque el aspecto externo de una aplicacin web ASP.NET sea homogneo.

    - Una vez descritos los principios en los que se suelen basar las aplicaciones webbien diseadas, repasaremos cmo se puede hacer que el contenido de nuestrainterfaz web cambie dinmicamente utilizando un mecanismo conocido comoenlace de datos [data binding].

    - Finalmente, cerraremos este captulo centrndonos en la construccin deformularios de manipulacin de datos, como ejemplo ms comn del tipo demdulos que tendremos que implementar en cualquier aplicacin.

  • ASP.NET en la prcticaOrganizacin de la interfaz de usuario..............................125

    Componentes de la interfaz ................................... 125El modelo MVC en ASP.NET .............................. 127Controladores en ASP.NET................................. 129

    Control de la aplicacin.......................................... 135

    Aspecto visual de la aplicacin .........................................140Filtros con mdulos HTTP ..................................... 142La directiva #include .............................................. 143Plantillas................................................................. 145

    Configuracin dinmica de la aplicacin..........................147Listas de opciones ................................................. 149

    Vectores simples: Array y ArrayList..................... 150Pares clave-valor: Hashtable y SortedList........... 151Ficheros XML ...................................................... 153

    Conjuntos de datos ................................................ 157El control asp:Repeater ....................................... 158El control asp:DataList......................................... 161El control asp:DataGrid ....................................... 163

    Formularios de manipulacin de datos.............................170Edicin de datos .................................................... 170Formularios maestro-detalle en ASP.NET............. 174

    124 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • Organizacin de la interfaz de usuario

    Como Steve McConnell expone en su libro Software Project Survival Guide, la mayor partedel trabajo que determina el xito o el fracaso final de un proyecto de desarrollo de softwarese realiza antes de que comience su implementacin: "si el equipo investiga los requisitos afondo, desarrolla el diseo con detalle, crea una buena arquitectura, prepara un plan deentrega por etapas y controla los cambios eficazmente, la construccin [del software]destacar por su firme progreso y la falta de problemas graves". Obviamente, la lista decondiciones que se han de cumplir para que un proyecto de desarrollo de software finalice conxito es extensa, como no poda ser menos dada la complejidad de las tareas que han derealizarse.

    En los primeros apartados de este captulo nos centraremos en una de las bases que sirven deapoyo al xito final del proyecto: la creacin de una buena arquitectura. En concreto, veremoscmo se pueden organizar los distintos elementos que pueden formar parte de la interfaz webde una aplicacin realizada con ASP.NET.

    Componentes de la interfazLa primera tentacin de un programador de aplicaciones web consiste en escribir todo elcdigo de su aplicacin en la propia pgina ASP.NET. Sin embargo, en cuanto la aplicacincomienza a crecer, empiezan a aparecer cierta redundancia. La existencia de fragmentos decdigo duplicados complicarn el mantenimiento de la aplicacin y la realizacin de nuevasmejoras.Cuando situaciones como esta se presentan, lo usual es encapsular la lgica de la aplicacinen componentes independientes. La redundancia se elimina a cambio de un incremento en lacomplejidad de la aplicacin. Cuanto ms compleja sea la aplicacin, ms difcil ser queotros programadores sean capaces de entender correctamente su funcionamiento. Por tanto, lacomplejidad introducida tambin dificulta el mantenimiento de la aplicacin, aunque sea enun sentido totalmente diferente al causado por la existencia de cdigo duplicado.

    Afortunadamente, existen soluciones bien conocidas que consiguen dotar a las aplicaciones decierta flexibilidad sin incrementar excesivamente su complejidad. En el caso del desarrollo deinterfaces de usuario, la solucin ms conocida es el patrn de diseo MVC[Model-View-Controller], en el que se distinguen tres componentes bien diferenciados:

    - El modelo encapsula el comportamiento y los datos correspondientes al dominiode la aplicacin. Habitualmente se construye un modelo de clases del problemacon el que se est trabajando, independientemente de cmo se vayan a presentarlos datos de cara al usuario.

    125ASP.NET en la prctica

    http://csharp.ikor.org/

  • - Las vistas consultan el estado del modelo para mostrrselo al usuario. Porejemplo, un mismo conjunto de datos puede verse en forma de tabla ogrficamente, en una pantalla o en un informe impreso. Cada una de las formas demostrar los constituye una vista independiente y, en vez de tener en cada vista elcdigo necesario para acceder directamente a los datos, cada una de las vistasdelega en el modelo, que es el responsable de obtener los datos y realizar losclculos necesarios.

    - Los controladores, por ltimo, son los encargados de permitir que el usuariorealice acciones. Dichas acciones se traducirn en las respuestas que resultenapropiadas, las cuales pueden involucrar simplemente a las vistas o incluir larealizacin de operaciones sobre el modelo.

    El modelo MVC: Las vistas y los controladores dependen del modelo, peroel modelo no depende ni de la vista ni del controlador. Esto permite que elmodelo se pueda construir y probar independientemente de la presentacin

    visual de la aplicacin. Adems, se pueden mostrar varias vistas de losmismos datos simultneamente.

    El modelo MVC ayuda a modularizar correctamente una aplicacin en la cual el usuariomanipula datos a travs de una interfaz. Si el usuario puede trabajar con los mismos datos dedistintas formas, lo habitual es encapsular el cdigo compartido en un mdulo aparte con elfin de evitar la existencia de cdigo duplicado. Se puede decir que el modelo contiene elcomportamiento comn a las distintas formas que tiene el usuario de manipular los datos. Dehecho, la existencia de un modelo independiente facilita enormemente la construccin desistemas que han de ofrecer varios interfaces. Este sera el caso de una empresa que deseadisponer de una aplicacin Windows para uso interno de sus empleados, una interfaz webpara que sus clientes puedan realizar pedidos y un conjunto de servicios web para facilitar elintercambio de datos con sus proveedores.

    126 Desarrollo Profesional de Aplicaciones con C#

    Fernando Berzal, Francisco J. Cortijo & Juan Carlos Cubero

  • De hecho, aunque el usuario trabaje con los datos de una nica forma, el cdigocorrespondiente a la interfaz suele cambiar ms frecuentemente que el cdigo correspondientea la lgica de la aplicacin. Por ejemplo, es bastante habitual cambiar el aspecto visual de unaaplicacin manteniendo su funcionalidad intacta. Eso sucede cada vez que ha de adaptarse lainterfaz a un nuevo dispositivo, como puede ser un PDA cuya resolucin es mucho mslimitada que la de un monitor convencional.

    En el caso de las aplicaciones web, los conocimientos necesarios para crear la interfaz (enHTML dinmico por lo general) suelen ser diferentes de los necesarios para implementar lalgica de la aplicacin (para la que se utilizan lenguajes de programacin de alto nivel). Porconsiguiente, la separacin de la interfaz y de la lgica de la aplicacin facilita la divisin deltrabajo en un equipo de desarrollo.Por otro lado, cualquier modificacin requerir comprobar que los cambios realizados no hanintroducido errores en el funcionamiento de la aplicacin. En este sentido, mantener losdistintas partes de una aplicacin lo menos acopladas posible siempre es una buena idea.Adems, comprobar el funcionamiento de la interfaz de usuario es mucho ms complejo ycostoso que realizar pruebas de unidad sobre mdulos independientes (algo que describiremosen la ltima parte de este libro cuando veamos el uso de NUnit para realizar pruebas deunidad).

    Una de las decisiones de diseo fundamentales en laconstruccin de software es aislar la interfaz de la lgica de laaplicacin. Al fin y al cabo, el xito del modelo MVC radicaen esa decisin: separar la lgica de la aplicacin de la lgicacorrespondiente a su presentacin.

    En los dos prximos apartados veremos cmo se utiliza el modelo MVC en ASP.NET y cmose pueden crear controladores que realicen tareas comunes de forma uniforme a lo largo yancho de nuestras aplicaciones.

    El modelo MVC en ASP.NET

    Las aplicaciones web utilizan una variante del modelo MVC conocida como MVC pasivoporque las vistas slo se actualizan cuando se realiza alguna accin a travs del controlador.Esto es, aunque el estado del modelo se vea modificado, la vista no se actualizarautomticamente. El navegador del usuario muestra la vista y responde a las acciones delusuario pero no d