Proyecto: Aplicación Windows Phone para la Federación Venezolana de Fútbol – Parte 3


Hola Comunidad,

Continuando con la parte previa del proyecto, Aplicación Windows Phone para la Federación Venezolana de Fútbol - Parte 2, anteriormente definimos los prototipos de cómo queríamos que la aplicación se visualizara. Para esto utilizamos SketchFlow Template for Windows Phone 7, y presentamos algunas pantallas que, incialmente no indicarán tanto los comportamientos como los datos que deseamos poder visualizar desde la aplicación móvil. Ahora, lo que haremos en esta tercera parte es trabajar sobre la base de una capa de datos básica, sobre la cuál poder formular nuestras estretgias de acceso a datos.

Para tal fin, utilizaré Microsoft SQL Server 2008 R2 Developer Edition, sin embargo, también puede utilizarse la versión Express de SQL Server 2008 R2. Iniclamente y graicas al apoyo de Eduardo Sojo, diseñé un modelo simple de la estructura de BD que requiero para almacenar los datos de los torneos de la temporada del fútbol nacional:

Diagrama inicial del modelo E/R:

Como pueden apreciar en el modelo, se crearon las siguientes entidades de datos:

  • Tournaments: Entidad que almacena los distintos torneos que puede contener un calendario de temporada de fútbol (Apertura, Clausura, Copa Venezuela, etc.)
  • Journals: Entidad que almacena las jornadas de ejecución del fútbol nacional dado un torneo seleccionado.
  • Stadiums: Entidad que alcena la información sobre los stadiums donde se llevan a cabo los juegos del torneo seleccionado.
  • Classifications: Entidad que almacena la clasificación de los equipos dado un torneo seleccionado.
  • Results: Entidad que elmacena la información de cada partido de una temporada y una jornada seleccionada.
  • Teams: Entidad que almacena la información de cada equipo.
  • Division: Entidad que almacena la información de la división a la cuál pertence un equipo para una temporada seleccionada.

Es importante explicar algunas decisiones de diseño que tomé, ya que posteriormente nos afectarán en el acceso a la información desde los componentes que se desarrollaran en la capa de integración de datos para este proyecto (los scripts de creación de los objetos estan disponible para descarga):

  • PKs: Para todos los PKs de las entidades utilice el tipo de datos uniqueidentifier. Utilice este tipo de datos, ya que la arquitectura me indica que el servicio de consumo de los datos puede estar colocado en cualquier plataforma, así que no utilice un tipo de datos entero o un tipo de datos fuertemente tipado como un long. Lo que haré cuando consuma los datos y los exponga mediante el servicio es que convertiré este tipo de datos en una cadena.
  • Stored Procedures: Aunque me vi tentado a pensar en que la capa de datos y la capa de consumo de esos datos fuera construída sobre LINQ para presentar dichos datos en las entidades de negocios, para esta primera etapa utilizaré procedimientos almacenados como parte de la estrategia de acceso desde la base de datos. Para una segunda actualización, cambiaré esta capa por LINQ. Para esta etapa inicial, desarrollé los siguientes SPs:
    • SP_FVF_GETCLASSIFICATION_BY_TOURNAMENT: Recupera los datos de clasificación (tabla de clasificación) de los equipos de un torneo especificado.
    • SP_FVF_GETRESULTS_ALL: Recupera todos los resultados de los equipos de un torneo especificado.
    • SP_FVF_GETRESULTS_BY_JOURNAL: Recupera todos los resultados de los equipos dada una jornada.
    • SP_FVF_GETRESULTS_BY_TEAM: Recupera todos los resultados de un equipo seleccionado.
  • Schemas: Cree un schema llamado "FVFUser" para manejar un nivel minímo de seguridad sobre los objetos que serán creados en la BD.
  • Entity Framework: En vez de crear una capa de acceso a datos desde sus inicio, o utilizar alguno de los patrones de acceso a datos que me ofrece el Enterprise Library, simplifiqué el acceso a datos través del uso del Entity Framework. Esta decisión se soporta sobre la base de que en una segunda versión, estaremos actualizando parte del acceso para utilizar estrategias de manipulación de datos mediante LINQ y la creación de una estructura (capa) que aplique algún patron de tipo adaptador para encapsular su uso.

Con esta información lista, el siguiente paso en la construcción de una capa de acceso a datos (DAL - Data Access Layer) muy simple. Para tal fin, inició Visual Studio 2010 y abro un proyecto de tipo Console Application:

Ahora, a dicho proyecto le vamos a agregar un nuevo objeto de tipo ADO.NET Entity Data Model, le colocamos como nombre ModelFVF:

Cuando agregamos este elemento al proyecto, Visual Studio 2010 nos ofrece un asistente para configurar este modelo. El asistente solicitará la ruta, driver y tipo de base de datos hacia la cuál se hará la conexión:

Construcción de la cadena de conexión (Connection String):

Selección de los objetos de la base de datos que serán incporados al modelo del Entity Framework:

 Todos los objetos incorporados:

Ahora bien, uno de los aspectos interesantes que me ofrece el Entity Framework, es la capacidad de poder incorporar al modelo, objetos personalizados provenientes de los resultados de ejecución de los procedimientos almacenados. Para esto, lo que vamos a hacer es incorporar al modelo tipos complejos que emulen el comportamiento de los datos que vamos a consumir en las capas superiores. Para esto, nuevamente nos apoyamos en Visual Studio para adicionar funciones al modelo creado:

Este proceso lo hacemos para todos los SPs, y así nos quedan los siguientes elementos en el modelo:

Al crear tipos complejos, .NET Framework resuelve su creación modificando el archivo de clases y definción de objetos (en nuestro caso FVFModel), agregando la creación de todos los tipos, como vemos en la siguiente figura:

Como pueden observar, se agrega una nueva clase parcial con el mismo nombre del tipo complejo. Esta clase define define en su constructor la creación y asignación de los parámetros de recepción de la función a propiedades definidas de la clase. Estas propiedades también se encuentran definidas en el mismo archivo de clases en la sección "Primitive Properties":

Como ven, de esta manera pueden agregar todos los tipos personalizados que ustedes deseen para sus aplicaciones. Eso si, siempre recuerden validar su modelo después de haber realizado modificaciones de esta naturaleza, ya que si el modelo se corrompe, pueden perder todo el trabajo. Para esta primera etapa del proyecto, creo que es todo. El los próximos post, estaré escribiendo sobre la capa de servicios de comunicaciones REST y su integración con la capa DAL que acabamos de crear. Por supuesto y como siempre, todos estan bienvenidos a aportar ideas, comentarios y mejoras sobre este proyecto.

Estamos en contacto!

Nestor Guadarrama

Gerente de Programas para Empresas de Desarrollo de Software

SQL.zip

Comments (1)

  1. jesus aguilarqq says:

    excelente blog de verdad da una perspectiva de como manejar las aplicaciones para windows phone

Skip to main content