Está usted en Indice > Maletin > Artículos > Arquitecturas Reflexivas y Generación de Código
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Arquitecturas Reflexivas y Generación de Código

Imaginemos que recibimos el encargo de construir un portal comercial orientado a la venta por internet de artículos de consumo como libros, películas, DVDs, CDs, impresoras, ratones, cámaras fotográficas, reproductores mp3, televisores, y toda clase de consumibles electrónicos.

Cada uno de estos tipos de objetos se definen por sus características. De hecho tendremos:

* Características que aparecerán en todos los objetos, como por ejemplo el precio que el comprador debe pagar para poder obtenerlo, así como un peso y volumen, elementos a tener en cuenta en cuanto al transporte, etc.
* Un conjunto de atributos particulares para cada tipo de objeto. Por ejemplo en las cámaras digitales fotográficas la resolución máxima de definición (medida en megapíxeles), o por ejemplo en los CDs y DVDs la duración de las películas o discos de música que contengan.

Para la gestión de toda esta información, surge de forma evidente la necesidad de guardar todos los datos en bases de datos, de tal forma que podamos gestionar la información de forma adecuada, con todas las garantías que nos da este tipo de software. Para la finalidad de lo que así se explica consideraremos que tendremos una tabla por cada tipo de objeto, cuyos campos serán las características (tanto comunes como particulares) de ese tipo de objeto. De esta forma la información asociada a cada objeto se guardará en la tabla del tipo al que pertenezca, por ejemplo los libros se guardarán en la tabla ‘Libros’.

Evidentemente todo esto es una simplificación pero nos sirve para nuestro pequeño ejemplo.

Nuestra tarea consiste básicamente en gestionar la publicación web de toda esta información (olvidemos el carrito de la compra). Publicar esta información consiste básicamente en permitir al usuario, a través de un navegador web, el poder:

* Visualizar listados de productos de un determinado tipo.
* Filtrar estos listados.
* Visualizar los detalles de un producto específico.

Tenemos básicamente dos posibilidades técnicas para llevar a buen puerto esta tarea:

* Construir o generar componentes web para cada una de estas categorías. De esta forma tendríamos un ‘componente ‘(conjunto de páginas JSPs o ASPs) distinto para cada tipo de objetos. De esta forma encapsularíamos en cada componente el conocimiento sobre las características de cada tipología. Tendríamos por ejemplo un Jsp/Asp para listar DVDs (ListDvd.jsp), y otro para visualizar la información asociada a un DVD (ShowDvd.jsp?id=83838). Esto implica tener mucho código que deberemos construir (costoso) o generar, y mantener (muy costoso).
Componentes web
* Tener un único componente web genérico de tal forma que leyendo las propiedades de cada tipo de objeto (datos que guardamos en la tabla MetaInformación), sea capaz de mostrar cualquier objeto sea cual sea su tipo. Podríamos verlo como tener un único Jsp/Asp para listados (List.jsp?type=DVD), y otro para visualizar registros (ShowElement.jsp?type=DVD&id=83838). A la información que describe la estructura de cada tipo de objeto se le llama metainformación. El coste de creación puede ser alto o no serlo, pero el de mantenimiento es muy bajo.
Componente web genérico

Generación de Código Fuente (o desarrollo manual en su defecto)

Cada tipo de objeto tiene un conjunto de características comunes con otras tipos así como otras características diferentes al resto. Esto implica que en la base de datos tendremos tablas asociadas a cada tipo de objeto, y que por lo tanto los componentes web que listan y visualizan cada tipo (en definitiva páginas JSPs, ASPs, Servlets, etc) deben tener una estructura muy similar ya que su función es prácticamente la misma, pero a su vez esta estructura o código debe ser algo diferente debido a las características particulares de cada tabla (tipo de objeto) a la que sirve de interfaz web.

De hecho el código de cada componente asociado a un tipo es totalmente dependiente de la estructura de la tabla a la que sive de interfaz, con lo que una vez definida cada tabla podríamos optar por generar de forma automatizada todo o parte del código que la lista, visualiza, etc, la otra posibilidad es utilizar la conocida técnica de copiar-pegar-modificar cuyos resultados suelen ser similares a la de la generación de código pero que es mucho más costosa y propensa a errores.

Existen multitud de herramientas que realizan funciones de generación de código, como por ejemplo CodeCharge, Xcripter, y montones de wizards de diferentes entornos de desarrollo.



Usuarios que han visto este tema también han visto...

- El Peligro de las Penalizaciones
- El log de visitas ayuda a conocer a tus usuarios
- Cómo posicionar una página Web
- Trece delitos que todo bloger debe conocer
- Errores en el diseño de sitios web


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 22-08-2008 a las 05:16:03