• E-Commerce Catalog – Kick off

    Published by on November 29th, 2007 5:03 pm under WCSF

    No Comments

    Durante las últimas semanas, el equipo de Sustaining Engeniering de p&p estuvo desarrollando una nueva Reference Implementation para Web Client Software Factory 2.0. El escenario elegido fue el de un E-Commerce debido a que es un ambiente bastante familiar y conocido. El proyecto aún está está en desarrollo y se irá actualizando periódicamente. Usted puede conseguir las ultimas versiones en WCSFContrib en la sección Source Code.

    Introducción

    E-Commerce Catalog es una aplicación Web Client Software Factory 2.0 cuyo objetivo es:

    • Mostrar buenas prácticas en el desarrollo incremental de una aplicación web.
    • Demostrar cómo comenzar y desarrollar un proyecto WCSF.
    • Demostrar cómo se pueden resolver distintos desafíos técnicos usando Web Client Software Factory 2.0.

    La aplicación E-Commerce Catalog permite buscar artículos para su venta a todos los usuarios registrados. Cada usuario puede realizar las siguientes tareas:

    1. Agregar ítems en un carro de compras virtual.
    2. Seleccionar el método de pago, la dirección de envío y la dirección donde se le cobrará.
    3. Confirmar el pedido.

    La aplicación E-Commerce Catalog está constituida por dos Web sites.

    • Development Web site: Este Web site es público y es accedido por todos los usuarios para realizar las compras.
    • Admin Web site: Este Web site es accedido por los administradores para controlar y manejar el catálogo de productos. El administrador está habilitado para agregar y editar productos, categorías, precios, envíos, forma de pago, etc.

    Este post es el primero de una serie de artículos que cubrirán todo el desarrollo de la aplicación. En este post usted podrá encontrar:

    • Cómo se diseño la aplicación.
    • Cuales fueron los primeros pasos.
    • Cuales fueron las decisiones técnicas tomadas y por qué razones.

    Primer paso

    Antes que nada necesitamos crear un diseño general de la solución. Para ello realizamos las siguientes tareas:

    • Generamos un draft con las distintas páginas que la aplicación, en principio, debería tener.
    • Hicimos una lista con las entidades involucradas en la aplicación.
    • Decidimos cuáles serán los módulos que se deberían crear. La Figura 1 muestra los módulos que tendrá la aplicación.

    Modulos

    Figura1

    Módulos de la aplicación

    Decisiones tomadas

    Antes de comenzar el desarrollo de la aplicación, tuvimos que tomar las siguientes decisiones:

    • Decidimos realizar Test Driven Development: Este tipo de desarrollo es posible gracias a:
      • El patrón Model-View-Presenter (MVP) incluido en la recipe de Web Client Software Factory el cual facilita la creación de los tests desacoplando responsabilidades y permitiendo testear si tener dependencias.
      • La Guiadance Package: permite generar proyectos de pruebas con la toda la estructura necesaria para testear a los presenter y a los servicios (generando Mocks y tests de ejemplo).
    • Decidimos guardar toda la información en memoria en lugar de persistir los datos en una base de datos. Esto permite que nos enfoquemos más en el desarrollo de la lógica de la aplicación.

    Desafíos técnicos

    La siguiente tabla muestra los principales desafíos técnicos a los cuales apunta la aplicación E-Commerce Catalog.

    Desafío Técnico

    Descripción

    ¿De qué forma está demostrado en la E-Commerce Catalog?

    Modularidad

    Habilidad de construir sitios complejos basados en módulos que pueden ser desarrollados, probados, versionados y desplegados en forma independiente.

    • Estructura de la solución del Web site.
    • Todos los Business Modules y Foundational Modules utilizan Composite Web Application Block (CWAB).
    • Los archivos Web.config están distribuidos a lo largo de la aplicación.
    • El uso de servicios aprovechando el patrón Dependency Injection para desacoplar los componentes de la aplicación.
    Manejo de la presentación de la aplicación Habilidad de crear una experiencia de usuario común a través de módulos distintos e independientes, separando el diseño de la interfaz de usuario del desarrollo de la aplicación.
    • Uso de Master Pages para el Web site público.
    • Web site con soporte para Ajax.
    • Separación del diseño y lógica de la UI a través del patrón Model-View-Presenter en Web pages, Master Pages y User controls.
    • Uso de ASP.NET themes y skins.
    • Uso de un site map provider para mostrar la acción de los módulos en el Web site.
    Navegación y Page Flow Habilidad de diseñar e implementar transiciones entre las páginas Web separando la lógica de la navegación de la lógica de negocios.
    Unit testing Habilidad de correr tests unitarios contra la lógica de la página Web.
    • Todas las vistas en el E-Commerce Catalog usan el patrón Model-View-Presenter para aislar la lógica de la UI e incrementar la superficie de testeo.
    • Los servicios y controllers fueron desarrollados usando TDD.
    • Todos los módulos de la aplicación incluyen proyectos de test.
    Perfil del usuario basado en la UI Habilidad de cambiar el comportamiento de la UI basándose en la identidad del usuario y en la información del perfil.
    • Web site configurado con dos roles de Administrador (Administrator) y Miembro (Member).
    • Las acciones disponibles en cada módulo operan bajo distintos permisos establecidos por el rol (por ejemplo, el rol Admistrator puede ver la configuración del sitio pero el Member no).
    • Usa el site map provider para mostrar las acciones permitidas en el Web site.
    • Permisos basados en los roles usando Enterprise Library Application Block definido en los archivos de configuración.
    Autenticación Habilidad para identificar a los usuarios registrados en el Web sitio.
    • Autenticación de formularios para todas las páginas protegidas.
    • Las vistas están protegidas con la configuración de los módulos en el Web.config lo cual niega el acceso a usuarios anónimos.
    • Se implementó un Membership Provider propio (XMLMembershipProvider).
    Autorización Habilidad de cambiar los permisos para diferentes usuarios.
    • Cada módulo opera con diferentes conjuntos de permisos.
    • La aplicación utiliza ASP.NET role manager.
    • Se implementó un Role Provider propio (XMLRoleProvider).
    Seguridad en los datos Asegurar a los usuarios y a la información del Web site
    • Con el uso de Web Composite Application Block, el contenido inseguro es codificado antes de ser mostrado en un navegador.
    • La información ingresada por el usuario es validada en tipo, formato, longitud y rango.
    • Las excepciones están protegidas usando Enterprise Library y la configuración de ASP.NET para evitar que se filtre información a los usuarios finales en caso de una excepción de tiempo de ejecución.
    Disponibilidad y escalabilidad del sistema Maximizar el tiempo de funcionamiento y minimizar el tiempo para diagnosticar problemas.
    • Logear excepciones usando Enterprise Library Logging Application Block para simplificar su manejo y diagnóstico.
    Fácil despliegue Minimizar la complejidad de desplegar o actualizar funcionalidad en un Web site.
    • XCopy deployment de los módulos.
    • Los módulos son desplegados independientemente unos de otros.
    • Web.config distribuídos minimiza el contenido de la configuración.
    • Uso de un Data Set en memoria para guardar los datos.
    • Uso de XMLPageFlow para la navegación.

    Eso es todo por el momento. En el próximo post les mostraré como implementamos el modulo Products.

    Ver este artículo en inglés en la sección de documentación de SCSFContrib.

About

Mariano Converti Profile Picture
Mariano Converti

Map