viernes, 8 de mayo de 2009

Desarrollando tu propia Framework para SharePoint – Decisiones de Arquitectura

Hace algún tiempo me dispuse a iniciar mi propia Framework para agilizar el desarrollo en SharePoint. Ya luego de iniciar este proyecto, y de revisar patrones de diseño, compartir comentarios con colegas y revisando la guía desarrollo de SharePoint de los amigos de P&P. He decido compartir mis pensamientos en este proceso de desarrollo del proyecto para armar mi propia Framework.

Mi Motivación:

  1. Verdadera reutilización del código a nivel de configuración. Con Unity
  2. Desarrollar componentes desacoplados y agruparlos en módulos. Una idea tomada de la Entlib 4.1. Aquí la refrencia: http://msdn.microsoft.com/en-us/library/dd203213.aspx
  3. Abstracción del API de SharePoint del dominio que me estoy enfocando. Metodología a utilizar para esta tarea TDD ayudado con TypeMock (Estoy preparando un artículo sobre ello)
  4. Integración Continua para el desarrollo e instalación de la solución. Busco poder automatizar todos los proceso de Pruebas Unitarias, “Deployment” de la solución para SharePoint (Como: Elementos Web, Flujos de trabajo, Event Receiver a través de WSPBuilder) y el contenido con el Asistente de Deployment que utiliza la API de SharePoint de Deployment

Patrones de diseño y Arquitectura de la solución:

  • Patrón MVP (Model-View-Presenter) estoy me ayudará a separar la vista de la lógica de presentación y realizar las pruebas unitarias correspondientes
  • Patrón Facade para facilitar el acceso a cada modulo
  • Patrón Wrapper para encapsular y abstraer el API de SharePoint de la lógica de negocios
  • Patrón de Inyección de Dependencia, para ello utilizaré como contenedor de IoC Unity de la Entlib 4.1 así mismo utilizaré los bloques de aplicación como Logging, Validation, Injector como módulos transversales dentro de la solución
  • Arquitectura en Capas hasta el momento ha demostrado tener un gran éxito en la separación de “concerns
  • Entidades de negocio en vez de objetos de SharePoint. Estos son mas ligeros y abstraemos cualquier proveedor de almacenamiento como lo es SharePoint o Base de datos. Ambos utilizados en soluciones de portales

image

Bueno hasta aquí la primera publicación de varias que continuarán, espero evolucionar el diseño y llevar a feliz terminó todos los objetivos planteados. La culminación de este proyecto será depositar el proyecto completo en el sitio de CodePlex.

Hasta la próxima, espere muy pronto, y recuerde Code4Fun!,

Manolo Herrera

2 comentarios:

Gerson dijo...

Que interesante Manolo felicitaciones, una pregunta, de estos temas hablaras en tu charla en el codecamp del sabado?

Lucarbeta dijo...

Hola espero me puedas ayudar, en la empresa donde laboro actualmente implementaron SharePoint 2007 (MOSS) y me han pedido que desarrolle un Site donde las personas puedan llenar un formulario y saque unos reportes pues muy fácil cree una lista y cada columna era una campo del formulario jajaja, lo malo es que en 1 mes la lista se lleno hasta los 20000 registros y el site se volvió inmanejable, que harías tu recurrías a InfoPath, o a una DB externa y el desarrollo que implica? es un problema de arquitectura creo yo espero me regales un buen consejo de antemano muchas gracias por tu tiempo.