tag:blogger.com,1999:blog-16716524486834922312024-02-21T07:41:12.409-08:00Eikondata - #programaciónEikondata, compañía de desarrollo de software especializada en tecnologías Microsoft.Anonymoushttp://www.blogger.com/profile/06135371082599427112noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-1671652448683492231.post-57250335465677116042013-07-08T03:35:00.002-07:002015-12-30T04:45:10.952-08:00Torneo 1. Estructura del proyecto.<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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 :</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ol>
<li>Presentation</li>
<li>Services</li>
<li>Application</li>
<li>Domain</li>
<li>Infraestructure</li>
<li>Crosscutting</li>
</ol>
<br />
<h2>
Nuevo Proyecto</h2>
Abrinos nuestro VS 2012 y creamos un nuevo proyecto, en la izquierda desplegamos el árbol de plantillas<br />
en Visual C#, Web y seleccionamos Aplicación web de ASP.NET MVC4 como nuestro proyecto de inicio.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf_wEhn9oGdftAEdEBE5NaJH3VlNZyMCAmy7TyHDS1IC1xsKsHeeDIo4fkEb-CTtPNIjsV-9NOU-sj0RXC86z_sJvFpwOd18tOHvcVyMoYO2L8PF68BjA7MEAsxQpJvkxq4vbAJ40aKAk/s955/nuevo_Proyecto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf_wEhn9oGdftAEdEBE5NaJH3VlNZyMCAmy7TyHDS1IC1xsKsHeeDIo4fkEb-CTtPNIjsV-9NOU-sj0RXC86z_sJvFpwOd18tOHvcVyMoYO2L8PF68BjA7MEAsxQpJvkxq4vbAJ40aKAk/s640/nuevo_Proyecto.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
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.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCTsS2cYW2_4JcqoU3B-BuSIz59-IqJz9kLRRfHskzij0l77fP5xIjJRON4rIKzz1xAkDzo-yzRZJZ3D283te1yZfre-T-W-46LGICaZGwH4Bl_sRWqao8KIZzSAZgisly_2EEwi_5Q3s/s683/nuevo_Proyecto_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="578" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCTsS2cYW2_4JcqoU3B-BuSIz59-IqJz9kLRRfHskzij0l77fP5xIjJRON4rIKzz1xAkDzo-yzRZJZ3D283te1yZfre-T-W-46LGICaZGwH4Bl_sRWqao8KIZzSAZgisly_2EEwi_5Q3s/s640/nuevo_Proyecto_2.png" width="640" /></a></div>
<br />
<div>
Después seleccionaremos un proyecto de Razor vacío, es importante seleccionar en el motor de vistas Razor.<br />
<br />
<h2>
Estructuración de la solución</h2>
<br />
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.<br />
Así pues en el <span style="color: orange;">Explorador de Soluciones</span>, 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"<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYAMxePWEJ7eJx1cmMnw3pHv62G08-TJxszW2tivjUgmjM4j68YdZScoho0nUDtAA7EZT5yS3nxiQUJMU6G8EafJKnPcKL1VopdjmZsn09wMskcWIqq7c6TEmvSnuXMkyMo0_xk7XZW1g/s749/add_solution_folder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="178" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYAMxePWEJ7eJx1cmMnw3pHv62G08-TJxszW2tivjUgmjM4j68YdZScoho0nUDtAA7EZT5yS3nxiQUJMU6G8EafJKnPcKL1VopdjmZsn09wMskcWIqq7c6TEmvSnuXMkyMo0_xk7XZW1g/s640/add_solution_folder.png" width="640" /></a></div>
<br />
Repetiremos este proceso para crear todas las carpetas de solución necesarias.<br />
<blockquote class="tr_bq">
1. Services<br />
2. Application<br />
3. Domain<br />
4. Infraestructure<br />
Crosscutting</blockquote>
<br />
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:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZtbiPBC50Ivda5JEkK7N36ju9EJlercOEnF-ytQNDoirZVilAgl-QZkQOn1cZmqcPievpeCisp-LahLqX49HOstlNeUXJUFbasHCe0MrwDIiKcFigAypVCUftybQvweA9V1w2IAHAhk8/s1600/Estructura_Soluci%25C3%25B3n_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZtbiPBC50Ivda5JEkK7N36ju9EJlercOEnF-ytQNDoirZVilAgl-QZkQOn1cZmqcPievpeCisp-LahLqX49HOstlNeUXJUFbasHCe0MrwDIiKcFigAypVCUftybQvweA9V1w2IAHAhk8/s640/Estructura_Soluci%25C3%25B3n_1.png" width="328" /></a></div>
<br />
<br />
Ahora iremos capa por capa añadiendo los proyectos necesarios y las referencias a los proyectos de otras capas:<br />
Hacemos click derecho en la carpeta te solución a la que le queremos añadir el proyecto, en nuestro caso 0 - Presentation,<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG9mMUMakFKhIegFyefuaxxqneo_ms6FynQIA665jW_tNDfI23DaXqanOq5HQxMEPF6kRKVFblQN0nOWe9cDBfGyYyEkZgRZzIjAYUQalQHEBWZuzouHD_NW-LcJxcTdksDg_h-mVULRY/s1600/nuevo_Proyecto_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG9mMUMakFKhIegFyefuaxxqneo_ms6FynQIA665jW_tNDfI23DaXqanOq5HQxMEPF6kRKVFblQN0nOWe9cDBfGyYyEkZgRZzIjAYUQalQHEBWZuzouHD_NW-LcJxcTdksDg_h-mVULRY/s640/nuevo_Proyecto_3.png" width="640" /></a></div>
<br />
<br />
Agregamos el proyecto de tipo Windows, Biblioteca de clases y lo llamamos "Torneo.Presentation.Util"<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg39nl81-YqGh3J6HPfe9-MK4fNqtPH93TVRQtx8PzmduYsOU7MoZPSigMMdi5FTkeuSw3BFcD8D-_WKrk3ZNMhG173OOo8cxhC7QHF-xh6uVkwOSzMXqaU75WKw3B7C8rOsua259SqmCM/s1600/nuevo_Proyecto_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="394" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg39nl81-YqGh3J6HPfe9-MK4fNqtPH93TVRQtx8PzmduYsOU7MoZPSigMMdi5FTkeuSw3BFcD8D-_WKrk3ZNMhG173OOo8cxhC7QHF-xh6uVkwOSzMXqaU75WKw3B7C8rOsua259SqmCM/s640/nuevo_Proyecto_4.png" width="640" /></a></div>
<br />
<br />
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.<br />
de momento solamente lo creamos.<br />
<br />
De igual forma creamos los proyectos del resto de las capas.<br />
<br />
<ul>
<li>1 - <u>Services: (2 Proyectos)</u></li>
<ul>
<li>Torneo.Services.MainModule</li>
<li>Torneo.Services.CacheModule</li>
</ul>
<li>2 - <u>Application (2 Proyectos)</u></li>
<ul>
<li>Torneo.Application.MainModule</li>
<li>Torneo.Application.CacheModule</li>
</ul>
<li>3- <u>Domain (1 proyecto):</u></li>
<ul>
<li>Torneo.Domain.MainModule</li>
</ul>
<li>4-<u> Infraestructure:</u></li>
<ul>
<li>Tornemo.Infraestrucuture.MainModule</li>
</ul>
<li><u>Crosscutting: (2 proyectos)</u></li>
<ul>
<li>Torneo.Crosscutting.Cache</li>
<li>Torneo.Crosscutting.Logger </li>
</ul>
</ul>
<br />
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.<br />
En aplicaciones de gran tamaño es interesante subdividir el aplicativo en diferentes módulos más manejables.<br />
<br />
En el siguiente post continuaremos creando la estructura básica del proyecto.<br />
<br />
<a href="https://www.youtube.com/watch?v=88-FozNowuk" target="_blank">Eikondata</a> en su canal de youtube.</div>
Anonymoushttp://www.blogger.com/profile/06135371082599427112noreply@blogger.com0tag:blogger.com,1999:blog-1671652448683492231.post-34356611883990421302013-06-28T03:50:00.003-07:002014-09-09T00:24:09.216-07:00Torneos mini-web en MVCBuenas 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.<br />
<br />
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. ;)<br />
<br />
<h2>
Ámbito del proyecto</h2>
El proyecto se desarrollará en <b>C#</b> con arquitectura <b>Domain Oriented N-Layer </b>y frontal en <b>MVC 4.0</b>, la persistencia de datos la realizaremos contra <b>SQL 2012 express</b>.<br />
<br />
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.<br />
<br />
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 <b>Domain Oriented N-Layer.</b><br />
<br />
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 <a href="http://microsoftnlayerapp.codeplex.com/">http://microsoftnlayerapp.codeplex.com/</a> .<br />
<br />
<h2>
Pero, ¿Qué queremos que gestione la web?</h2>
Queremos poder usar la web para gestionar todos los <b>torneos </b>que realicemos, y en ella los <b>usuarios </b>podrán registrarse para ver/apuntarse los <b>torneos </b>abiertos, ver la clasificación , el calendario con los <b>partidos</b> anteriores y los programados.<br />
<br />
<h2>
<span style="font-size: small;"><span style="font-weight: normal;">En el próximo post comenzaremos con la creación de la estructura básica del proyecto. Nos vemos pronto. </span></span></h2>
<br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/06135371082599427112noreply@blogger.com0tag:blogger.com,1999:blog-1671652448683492231.post-3293608887038500432012-12-17T05:22:00.001-08:002014-09-09T00:27:08.398-07:00Eikondata: Inauguramos blog!!<br />
Buenas a tod@s, inauguramos este blog de Eikondata como herramienta para compartir los conocimientos que hemos adquirido durante años dedicados a esto de la programación y los que adquirimos con el trabajo del diario.<br />
Eikondata es una empresa de desarrollo de aplicaciones a medida en la que usamos principalmente tecnologías de Microsoft en el desarrollo tanto de aplicaciones web como de escritorio.<br />
<br />
¿La idea de Eikondata? Crear artículos con tutoriales sobre una tecnología concreta o trucos que simplifican algunas labores e incluso pequeñas aplicaciones de cero para explicar ciertos procesos.<br />
<br />Anonymoushttp://www.blogger.com/profile/06135371082599427112noreply@blogger.com0