lunes, 8 de julio de 2013

Torneo 1. Estructura del proyecto.


Hola de nuevo, vamos a ponernos manos a la obra con nuestro proyecto de torneos, lo primero es crear los distintos proyectos con los que poblaremos las distintas capas, vamos a tener :
  1. Presentation
  2. Services
  3. Application
  4. Domain
  5. Infraestructure
  6. Crosscutting

Nuevo Proyecto

Abrinos nuestro VS 2012 y creamos un nuevo proyecto, en la izquierda desplegamos el árbol de plantillas
en Visual C#, Web  y seleccionamos Aplicación web de ASP.NET MVC4 como nuestro proyecto de inicio.

Este será el principal proyecto de nuestra capa de presentación, aquí generaremos las páginas que presentaremos a los usuarios con RAZOR, la arquitectura de N-Layer ayuda a organizar los proyectos en capas, cada capa cumple una función especifica y debe estar lo más desacoplada posible del resto de las capas, por ejemplo el cometido de la capa de presentación es interactuar  con los usuarios, recoger sus peticiones y mostrar los resultados con el formato deseado.


Después seleccionaremos un proyecto de Razor vacío, es importante seleccionar en el motor de vistas Razor.

Estructuración de la solución


Y es fundamental  organizar la solución en carpetas lógicas ya que está arquitectura genera una gran cantidad  de proyectos que hacen bastante engorroso moverse entre los ellos si no los tenemos bien organizados.
Así pues en el Explorador de Soluciones, hacemos click derecho sobre el nombre de la solución y seleccionaremos Añadir/ Nueva carpeta de soluciones, y el pondremos el nombre de "0. Presentation"

Repetiremos este proceso para crear todas las carpetas de solución necesarias.
1. Services
2. Application
3. Domain
4. Infraestructure
Crosscutting

Por último seleccionamos el proyecto Torneo.Presentation.Mvc y lo arrastramos a la carpeta de presentación, deberíamos tener una estructura similar a esta:



Ahora iremos capa por capa añadiendo los proyectos necesarios y las referencias a los proyectos de otras capas:
Hacemos click derecho en la carpeta te solución a la que le queremos añadir el proyecto, en nuestro caso 0 - Presentation,



Agregamos el proyecto de tipo Windows, Biblioteca de clases y lo llamamos "Torneo.Presentation.Util"


En este proyecto crearemos la infraestructura para obtener el acceso a los métodos públicos de la capa de servicio, y crearemos algunas utilidades importantes como el SessionHelper, Extensiones, etc.
de momento solamente lo  creamos.

De igual forma creamos los proyectos del resto de las capas.

  • 1 - Services: (2 Proyectos)
    • Torneo.Services.MainModule
    • Torneo.Services.CacheModule
  • 2 - Application  (2 Proyectos)
    • Torneo.Application.MainModule
    • Torneo.Application.CacheModule
  • 3- Domain (1 proyecto):
    • Torneo.Domain.MainModule
  • 4- Infraestructure:
    • Tornemo.Infraestrucuture.MainModule
  • Crosscutting: (2 proyectos)
    • Torneo.Crosscutting.Cache
    • Torneo.Crosscutting.Logger 

Observar que a través de todas las capas ya estamos haciendo una división lógica dentro de la aplicación por módulos de momento nuestra aplicación tiene dos módulos el "MainModule" y el CacheModule.
En aplicaciones de gran tamaño es interesante subdividir el aplicativo en diferentes módulos más manejables.

En el siguiente post continuaremos creando la estructura básica del proyecto.

Eikondata en su canal de youtube.

viernes, 28 de junio de 2013

Torneos mini-web en MVC

Buenas a tod@s de nuevo, hemos estado bastante liados con algunos proyectos y nos ha sido imposible empezar en con blog de programación hasta ahora, pero llega el verano y estamos todos un poco más tranquilos.

Con la llegada del verano y vamos a empezar en Eikondata un torneo de padel, y como no puede ser de otra forma, vamos a desarrollar una mini-web para la gestión del torneo. ;)

Ámbito del  proyecto

El proyecto se desarrollará en C# con arquitectura Domain Oriented N-Layer y frontal en MVC 4.0, la persistencia de datos la realizaremos contra SQL 2012 express.

Debo decir que esta morfología de aplicación no es la mejor para desarrollos pequeños, se tarda más en montar la arquitectura que en desarrollar la aplicación pero con lo hacemos con fines educativos cuanto más pequeña es la aplicación mejor.

Este proyecto nace con el objetivo de ser un ejemplo sencillo de limitado a .NET y la implementación de algunos de los patrones más usados en Domain Oriented N-Layer.

No os voy a contar aquí todas las ventajas e inconvenientes que tiene trabajar con está arquitectura, si os recomiendo ampliar vuestros conocimientos con la gente de Codeplex http://microsoftnlayerapp.codeplex.com/ .

Pero, ¿Qué queremos que gestione la web?

Queremos poder usar la web para gestionar todos los torneos que realicemos, y en ella los usuarios podrán registrarse para ver/apuntarse los torneos abiertos, ver la clasificación , el calendario con los partidos anteriores y los programados.

En el próximo post comenzaremos con la creación de la estructura básica del proyecto. Nos vemos pronto.