taller campus party

120
TALLER Desarrollo de Aplicaciones Profesionales con Tecnologías .NET

Upload: campus-party

Post on 28-Jun-2015

234 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Taller campus party

TALLERDesarrollo de Aplicaciones

Profesionales con Tecnologías .NET

Page 2: Taller campus party

Sorey García(@soreygarcia)

Page 3: Taller campus party

AGENDA

• Sesión 1– Introducción a los conceptos básicos ( 1

hora)• Orientación a Objetos• Aplicaciones Distribuidas• .NET Framework

– TALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)

Page 4: Taller campus party

AGENDA

• Sesión 2 (2 horas)– TALLER: Construyendo aplicación

profesional.• Presentación (Winforms, ASP.NET)• Lógica de Negocio• Acceso a Datos (LINQ, SQL Server 2008)

Page 5: Taller campus party

¡ADVERTENCIA!

Este taller es para personas con conocimientos básicos, y también

para aquellos que necesitan refrescarse o renovarse un poco.

Los temas serán abordados en sus formas más simples con el ánimo de dar las herramientas necesarias para

abordar las dos sesiones del taller.

Page 6: Taller campus party

¡ADVERTENCIA!

Hacer una aplicación profesional no necesariamente significa hacer algo elaborado o técnicamente complejo, significa construir software pensando

en su crecimiento, evolución y mantenimiento futuro.

Page 7: Taller campus party

Un par de consejos antes de empezar…

Page 8: Taller campus party

Antes de intentar aprender algo ten presente…

lo complejo, alguna vez… fue simple,entiende lo primero lo simple.

Page 9: Taller campus party

El problema está en la técnica,

no en la herramienta

Page 10: Taller campus party

Manejar correctamente los conceptos te ayudará a defenderte en

cualquier herramienta

Tu preocúpate por aprender a razonar y pensar, para aprender a usar las herramientas están los tutoriales

Page 11: Taller campus party

¿Listos?

Page 12: Taller campus party

AGENDA

• Sesión 1– Introducción a los conceptos básicos ( 1

hora)• Orientación a Objetos• Aplicaciones Distribuidas• .NET Framework

– TALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)

Page 13: Taller campus party

¿Qué es la

orientación a objetos?

Page 14: Taller campus party

La orientación a objetos es un

paradigma de programación

Page 15: Taller campus party

Si bien esta definición es correcta, el

problema está, en que tanto lo comprendemos…

Page 16: Taller campus party

Intentemos algo simple…

La orientación a objetos es

una forma de ver las situaciones y de analizar

el entorno…

Page 17: Taller campus party

…es una forma de entender un problema

identificando las entidades principales que se encuentran en el

Page 18: Taller campus party

El propósito de la programación orientada a objetos consiste en

proporcionar una solución informática identificando

los conceptos relevantes presentes en el problema

conceptos relevantes = entidades

Identificar los conceptos relevantes

o las entidades involucradas en un problema significa…

abstraer los detalles y particularidades y emitir un

concepto genérico

Page 19: Taller campus party

Esto se logra identificando las

características comunes de un grupo de objetos

y las acciones que realizan o bien que producen algún efecto sobre ellos

Page 20: Taller campus party

La programación orientada a objetos (POO) es por tanto

una forma de desarrollar software, pensando en las

entidades principales del problema que dicho sistema pretende resolver y por tanto los datos que se manipularán de esas entidades y las

acciones de las que estas son responsables dentro del sistema.

Page 21: Taller campus party

El lenguaje de programación es

la herramienta para resolver el problema

Page 22: Taller campus party

El propósito de la POO no tiene que ver con el lenguaje de programación

Sobre el lenguaje de programación lo que podemos decir es que este soporta unas y otras características

de la Orientación a Objetos

También podemos decir que cada quien elige la herramienta que satisface las necesidades de su

proyecto, tanto a nivel de implementación como de conocimiento disponible en su recurso humano

Page 23: Taller campus party

Y aunque es claro que existe más de una herramienta para

resolver un problema

Page 24: Taller campus party

Es seguro que también hay

formas más fáciles de hacerlo…

Page 25: Taller campus party

Veamos algunos

conceptos clave…

Page 26: Taller campus party

¿Qué es un Objeto?

Page 27: Taller campus party

Cualquier Cosa

Un Objeto es…

Page 28: Taller campus party

!En serio!

Cualquier Cosa

Page 29: Taller campus party

Cualquier Cosa…de la que puedas emitir un concepto.

Cualquier Cosa,

todo es un objeto.

Es decir…

Page 30: Taller campus party

Veamos,

Este es un objeto

Es un automóvil de plástico, rojo

con 4 llantas y 2 puertas

Page 31: Taller campus party

Si realizáramos el proceso mental lentamente,

nos daríamos cuenta de que al ver el objeto

emitimos un concepto preconcebido

es decir automóvil

Page 32: Taller campus party

En la imagen cada uno de los elementos que vemos es considerado

un objeto

Sin embargo de todos ellos

podemos emitir un concepto conocido y para ello usamos la palabra globo

Page 33: Taller campus party

A ese concepto conocido que representa una agrupación de objetos

…lo llamamos Clase

Page 34: Taller campus party

Una clase es como un molde de galletas…

… este determina la forma y

características que

la galleta (el objeto) va a tener, sin ser el objeto real

Page 35: Taller campus party

La clase es una…

…los objetos son todos los que podamos

crear mentalmente a partir de dicha clase o concepto

Page 36: Taller campus party

¿Recuerdan eso de la abstracción?

Pues bien…

Una clase esta compuesta por

características (atributos o propiedades)

y por comportamientos (acciones o métodos)

…esos que elegimos como generalidades del conjunto de

objetos comunes de nuestro problema a resolver

Page 37: Taller campus party

Así entonces…

entidad =

concepto relevante =

clase

Page 38: Taller campus party

Las características y

comportamientos de una clase son determinadas por el contexto del problema

o escenario

Esto en programación quiere decir, que dentro de un sistema, solo

implementamos los atributos y

métodos relacionados con el ámbito del problema que estamos

solucionando.

Page 39: Taller campus party

Veamos algunos conceptos adicionales…

A los valores que tienen los atributos

de un objeto se les conoce como

el estado del objeto, y a los atributos y métodos que ofrece se les

conoce como la interfaz al código usado para construir las clases

se le conoce como la

implementación de la clase.

Page 40: Taller campus party

Los objetos se comunican se comunican con otros a través de

mensajes

Un mensaje es una comunicación dirigida a un objeto, que le ordena que ejecute uno de

sus métodos con ciertos parámetros asociados al evento que lo generó.

Wikipedia

Page 41: Taller campus party

Con respecto a la comunicación entre objetos tenemos más

principiosalta cohesión y el bajo

acoplamiento

Page 42: Taller campus party

Cuando decimos que un objeto tiene una

alta cohesión hablamos de que sus características y comportamientos

están estrechamente relacionados

La relación que tienen esta determinada por el contexto del problema a resolver

Page 43: Taller campus party

Cuando decimos que un objeto tiene una bajo acoplamiento

hablamos del nivel de independencia que tiene un objeto con respecto a otros

El hacer un objeto independiente de los demás ayudará a que ese objeto pueda ser usado en otros

contexto

Page 44: Taller campus party

… la modularidad y la reusabilidad

Qué son?

Los principios que dirigen la orientación a objetos son…

Page 45: Taller campus party

En términos simples la modularidad significa

trabajar por partes…

Esas partes deberían ser lo más independientes posibles, como piezas de Lego, de esa forma podrías usar diferentes

piezas en la construcción de otro sistema

Page 46: Taller campus party

y la reusabilidad significa

¡No se invente la rueda!

Lo que ya esta hecho es para usarse y algunas de las cosas que no están hechas, deben construirse

pensando en que alguien necesitará usarlo alguna vez.

Por otro lado recuerde, reusar no es simplemente

copiar y pegar código.

Page 47: Taller campus party

Por último, veamos algunas características de la

Programación Orientada a Objetos

Page 48: Taller campus party

Encapsulamiento

Page 49: Taller campus party

Herencia

Page 50: Taller campus party

Polimorfismo

Page 51: Taller campus party

Empecemos a conocer nuestro problema

¿Qué tal algo que todos conocemos?

Aplicación de Aforo a Campus Party

Page 52: Taller campus party

Algunos Objetos

• (Diagrama pendiente)

Page 53: Taller campus party

AGENDA

• Sesión 1– Introducción a los conceptos básicos ( 1

hora)• Orientación a Objetos• Aplicaciones Distribuidas• .NET Framework

– TALLER: Aprendiendo .NET con C# (1 hora)

Page 54: Taller campus party

¿Qué es una aplicación distribuida?

Page 55: Taller campus party

Es una aplicación con distintos

componentes que se ejecutan en

entornos separados, normalmente en diferentes plataformas

conectadas a través de una red

Wikipedia

Page 56: Taller campus party

¿Se entendió?Veamos que tanto…

Page 57: Taller campus party

¿Cuales son los componentes que se distribuyen?

¿Qué criterios se usan para determinar que conforma un componente?

¿A través de que mecanismos se realiza la comunicación entre componentes

distribuidos?

¿Qué es un componente?

Page 58: Taller campus party

Algunos Conceptos…

Capas

Niveles

Arquitectura

Protocolos

UMLDespliegue

Cliente/Servidor

Servicios

Lógica de Negocio

Acceso a Datos

Webservices

Interfaces

Componentes

Objetos

Interfaz de UsuarioPaquetes

InteroperabilidadComunicación

Page 59: Taller campus party

Vamos por partes…

¿A qué se refiere la

distribución?

Las distribución refiere a la construcción de software por partes, a las cuales les son

asignadas un conjunto específico de responsabilidades dentro de un sistema.

Page 60: Taller campus party

Esta distribución como bien enunciaba la definición formal, habla de que las partes o

componentes se encuentran en entornos separados, sin embargo, lo

que tiene implícito esta definición, es que para realizar esta separación física

primero debe tenerse clara la separación lógica de las partes de una aplicación,

esto quiere decir que programáticamente existe una forma de

separar o agrupar los componentes.

Page 61: Taller campus party

La separación física no es en todas las ocasiones “maquinas diferentes” de

acuerdo a la arquitectura también puede ser la ubicación de un conjunto de

funcionalidades en archivos, rutas o tecnologías diferentes dentro de la

misma máquina

Page 62: Taller campus party

Ahora bien, cuando hablemos de distribución lógica lo

entenderemos como separación por “Capas” (layers) y cuando hablemos de distribución física usaremos el término separación en “Niveles”

(tiers)

Page 63: Taller campus party

La separación por capas y niveles hace parte de la arquitectura del

sistema y es definida por el arquitecto de la aplicación.

Page 64: Taller campus party

“Las capas dentro de una arquitectura son un conjunto de

servicios especializados que pueden ser accesibles por múltiples clientes y que deben ser fácilmente

reutilizables.”

Page 65: Taller campus party

Las capas además, según el escenario y tipo de

aplicación, están separadas físicamente.

Si, físicamente! Lo que significa que una capa puede ser a su vez un nivel

Page 66: Taller campus party

Una capa puede contener muchos componentes, un mismo

componente puede ubicarse en varias capas de acuerdo a su

naturaleza y a las consideraciones explicitas de la arquitectura

… como? No hay problema, lo iremos entendiendo, de eso se trata…

Page 67: Taller campus party

Veamos una definición formal...

Un componente es un elemento de software que encapsula una serie de

funcionalidades.

Un componente es una unidad independiente, que puede ser utilizado en

conjunto con otros componentes para formar un sistema más complejo.

¿Qué es un componente?

Page 68: Taller campus party

Un componente esta compuesto por elementos que pueden ser clases y/o recursos complementarios como archivos de configuración, imágenes, entre otros.

Y a su vez esas clases y recursos pueden están agrupados dentro del componente en

subpaquetes, de acuerdo a su naturaleza o necesidades de negocio.

Cada componente de un sistema puede verse como un paquete o módulo

Page 69: Taller campus party

Aplicación

Niveles

Capas

Componentes

En este punto visualizamos varios conceptos que podemos presentar de la siguiente forma…

Paquetes

Clases

Sub paquete

s

Otros Recurs

os

Page 70: Taller campus party

Ahora bien…

El paradigma básico de la separación por capas establece al menos 3 partes distintas dentro

de una aplicación

La PresentaciónLa Lógica de Negocio

El Acceso a Datos y los Datos

Page 71: Taller campus party

La Presentación o interfaz de usuario se refiere al mecanismo de

interacción del usuario con el sistema

Los tipos de interfaces de software más comunes son las aplicaciones de

ventanas y web

Los tipos de interfaces de hardware más comunes son el ratón, el teclado, el

micrófono, pantallas táctiles, dispositivos de audio

Page 72: Taller campus party

La Lógica de Negocio refiere el conjunto de reglas que determinan

específicamente como funciona un sistema, según su naturaleza, y bajo que parámetros y condiciones de acuerdo a

las necesidades de los clientes y usuarios.

Page 73: Taller campus party

El acceso a datos refiere al medio a través del cual podemos acceder y

manipular los datos persistentes de un sistema

El almacenamiento de datos refiere a la forma en que se encuentran guardados dichos datos, por ejemplo, en archivos o

bases de datos.

Page 74: Taller campus party

Así nos encontramos con componentes de diferentes

tiposEjecutables, Páginas Web, Librerías,

Controles, Procedimientos Almacenados, Servicios Web…

Page 75: Taller campus party

Después de conocer estos conceptos básicos, podemos pasar entonces a ver, los diferentes tipos de aplicación

Aplicaciones MonolíticasAplicaciones Cliente/Servidor

Aplicaciones de 3 CapasAplicaciones de N Capas

Page 76: Taller campus party

Una aplicación monolítica o de una capa es aquella cuya interfaz, lógica de negocio y acceso a datos se encuentran mezclados o altamente acoplados, esto

dificulta que pueda hacerse una separación lógica y física donde alguna de

las partes pueda ser reutilizable.

Page 77: Taller campus party

Una aplicación Cliente/Servidor o aplicación de dos capas es aquella donde los datos y la

lógica de negocio se encuentran separados de la interfaz, este tipo de aplicación también es

denominada, cliente liviano.

Otro escenario válido para una aplicación Cliente/Servidor, se da separando los datos de

la interfaz y la lógica de negocio, este tipo de aplicación también es denominado, cliente

pesado.

Page 78: Taller campus party

Una aplicación 3 capas es aquella donde la interfaz, la lógica de

negocio, el acceso a datos y los datos se encuentran separados.

Page 79: Taller campus party

Es muy importante entender, que la separación de la que se habla no es

necesariamente física, como ya se había dicho antes, la primera separación que se

da es lógica y debemos reiterar que la separación lógica es programática.

¡ATENCIÓN!

Page 80: Taller campus party

Ahora, para hacer un trabajo bien hecho, hay que reconocer

que las consideraciones asociadas al desarrollo por

capas…

Page 81: Taller campus party

¿Que consideraciones deberíamos tener en cuenta cuando pensamos en

la Capa de Presentación?

Page 82: Taller campus party

¿Y las consideraciones de la Capa de Lógica de Negocios?

Page 83: Taller campus party

¿Y las consideraciones de la Capa de Acceso a Datos?

Page 84: Taller campus party

Bueno y si ya están separadas las 3 capas principales,

¿qué es entonces una de aplicación de N capas?

Page 85: Taller campus party

Pues bien, la evolución de la tecnología y las redes de comunicaciones, hacen

que cada día se generen nuevos escenarios de intercambio de

información entre empresas, y entre los mismos sistemas existentes dentro de las empresas, de forma que se satisfagan las necesidades constantes y cambiantes de clientes y usuarios, para quienes debe

resultar transparente el obtener información de un sistema u otro.

Page 86: Taller campus party

Otra de las razones importantes por las que surge este concepto, es debido a que en la evolución del desarrollo de software, se ha identificado la necesidad de crear

nuevas capas, especializadas en funciones especificas, diferentes a las 3

identificadas previamente.

Tal es el caso de la seguridad, el control de excepciones, el transporte de

datos entre capas, la generación de trazas de errores, entre otros.

Page 87: Taller campus party

Componentes de Interfaz de Usuario

Componentes de Proceso de Interfaz de Usuario

Componentes Acceso Datos

Flujos de Negocio

Componentes de negocio

Usuarios

Entidades de Negocio

Agentes de Servicio

Au

dito

ria y

Con

trol d

e

Excep

cio

nes

Seg

urid

ad

Com

un

icació

n

Interfaces de Servicio

Orígenes de Datos Servicios Externos

Una propuesta Microsoft Patterns & Practices

Page 88: Taller campus party

¿Qué arquitectura tendrá nuestro ejemplo de Campus Party?

• (Diagrama pendiente)

Page 89: Taller campus party

AGENDA

• Sesión 1– Introducción a los conceptos básicos ( 1

hora)• Orientación a Objetos• Aplicaciones Distribuidas• .NET Framework

– TALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)

Page 90: Taller campus party

¿Recuerdan esto?

“No se invente la rueda....”

¿Qué es un

Framework?

Page 91: Taller campus party

Los edificios de una ciudad son todos los tipos de software que podemos construir

Veámoslo así…

Page 92: Taller campus party

Suponga que usted necesita construir un edificio…

Page 93: Taller campus party

Ahora imagine que a usted le tocara construir cada una de las partes…

Page 94: Taller campus party

¿Cuánto tiempo cree que tardaría

en terminar?

Lo mismo sucede con el software, si cada vez tuviéramos que construir todos los

componentes que lo conforman, tardaríamos mucho más tiempo…

Page 95: Taller campus party

Un framework es, básicamente, un conjunto de clases que interactúan en

forma cooperativa para dar solución a una determinada necesidad.

¿Qué es un Framework?

Page 96: Taller campus party

En términos simples un framework es un

conjunto de clases base agrupadas en componentes, que pueden ser reutilizadas

para la construcción de nuevo software

Ahora un poco menos conceptual...

Page 97: Taller campus party

He ahí la razón para entender los conceptos

inicialesBien sea por que vas a usar un

framework o por que quieres construir uno

Page 98: Taller campus party

Las características principales de un framework son:

Estar enfocado en un tema específico

y el ser altamente reutilizable.

Page 99: Taller campus party

Microsoft .NET

.NET es el conjunto de tecnologías en las que Microsoft ha trabajado con el objetivo de

obtener una plataforma sencilla y potente para distribuir el software en forma de servicios que puedan ser suministrados

remotamente y que puedan comunicarse y combinarse unos con otros de manera

totalmente independiente de la plataforma, lenguaje de programación y

modelo de componentes con los que hayan sido desarrollados.

Page 100: Taller campus party

¿Qué es Visual Studio .NET?

Es entorno de desarrollo (IDE), la herramienta sobre la cual los programadores desarrollan el software

Page 101: Taller campus party

Línea de Tiempo

2005

2007

2008

Beta

2008

.NET Framework 3.0

.NET Framework 3.5

.NET Framework 2.0

2010.NET Framework 4

2010

Page 102: Taller campus party

¿Qué es .NET Framework?

Page 103: Taller campus party

Es una Plataforma de Desarrollo, la cual esta

compuesta por:

Un entorno de ejecución (Runtime)Bibliotecas de funcionalidad (Class Library)Lenguajes de programación Compiladores

.NET Framework

Page 104: Taller campus party

¿Qué NO es?

• NO es un sistema operativo• NO es un lenguaje de

programación• NO es un entorno de desarrollo• NO es un servidor de aplicaciones

Page 105: Taller campus party

¿Qué es el .NET Framework?• Un conjunto de tecnologías que me

permiten:– Unir las aplicaciones Web actuales que están

aisladas, de manera muy fácil– Acceder a información en cualquier momento, en

cualquier lugar– Simplificar el desarrollo y la implementación– Desarrollar aplicaciones para cualquier

dispositivo, sin necesidad de mucho esfuerzo.– Reutilizar mucho código– Hacer más, con menos

Page 106: Taller campus party

Algunas Características• Completamente Orientado a Objetos• Multilenguaje• Modelo de programación único para todo

tipo de aplicaciones y dispositivos de hardware

• Se integra fácilmente con aplicaciones existentes desarrolladas en plataformas Microsoft o en otras plataformas.

Page 107: Taller campus party

Línea de Tiempo

.NET FrameworkVisual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASP

Visual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#

Visual Studio 2008.NET Framework 3.0 – 3.5.NET Compact Framework

2000 2001 2002 2003 2004 2005 2006 2008 2010

Visual Studio 2005.NET Framework 2.0.NET Compact Framework 2.0

Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#

Visual Studio 2010.NET Framework 4.0F#

Page 108: Taller campus party

Microsoft .NET Framework 2.0

Biblioteca de Clases Base

Common Language Specification

Common Language Runtime

ADO.NET: Datos y XML

VB C++ C#V

isu

al S

tud

io .N

ET

ASP.NET: Servicios Weby Web Forms

J# …

WindowsForms

Page 109: Taller campus party

Windows 7, Windows Vista, Windows XP, Windows Server 2008

Common Language Runtime (CLR)

Biblioteca de Clases

ASP.NET WPF

WCF

WF

WCS

CLS y CTS

VB C# J# IronPhyton

¿Qué son los demás?

ADO.NET LINQ

Add-in Framework

WindowsForms

WF & WCF

Enhancements

Additional

Enhancements

MVC

Dynamic Data

Entity Framework

Data Services

Ruby …

Page 110: Taller campus party

Microsoft .NET Framework

Core

Servicios

Base Class Library

Common Language Runtime

Windows Workflow

Foundation

Managed Extensibility Framework

Data Services

Windows Communicat

ion Foundation

“Velocity”

PresentaciónWindows

Presentation

Foundation

ASP.NET(WebForms,

MVC, Dynamic

Data)

Acceso a Datos

Entity Framework

LINQ

ADO.NET

Parallel Extensions

WinForms LINQ to SQL

LanguagesDynamic Language Runtime

Page 111: Taller campus party

Common Language Runtime (CLR)• Es el motor de ejecución de .NET• Caracteristicas:

– Compilacion Just In Time (JIT)– Gestion de Memoria (Garbage Collector)– Gestion de Errores (excepciones)– Ejecucion basada en componentes

(assemblies)– Gestion de seguridad– Multithreading

Page 112: Taller campus party

¿Como trabaja el CLR?

Código Fuente

Cualquier lenguaje .NET

Compilador

Assembly (MSIL)

Bibliotecao Ejecutable

Page 113: Taller campus party

Tiempos: Compilación y Ejecución

Compilación

Antes de la instalación o cuando se ejecuta por primera vez

Ejecución

JIT Compiler

Código Nativo

MSILCódigo

Metadata

CódigoFuente

CompiladorLenguaje

Page 114: Taller campus party

VB.NETCódigoFuente

Compilador VB.NET

C++.NETC#

AssemblyCódigo MSIL

Sistema Operativo (Windows)

Common Language Runtime

Compilador JIT

Código Nativo

Código Manejado

ComponenteNo Manejado

Modelo de Ejecución del CLR

CompiladorC#

CompiladorC++ .NET

AssemblyCódigo MSIL

AssemblyCódigo MSIL

Page 115: Taller campus party

Estructura de un proyecto .NET

• Solución– Proyectos (Assemblies)

• Namespaces– Clases

• Archivos de configuración• Recursos adicionales

Page 116: Taller campus party

Estructura de un Assembly

Metadata

Código CompiladoMSIL

Recursos

MiBiblioteca.DLL

Descripción de Tipos

ClasesClases BaseInterfaces ImplementadasAtributos de las ClasesMétodos de las Clases

NombreVersiónCultura

Manifiesto del Assembly

Otros AssembliesPermisos de SeguridadTipos Externos

Page 117: Taller campus party

AGENDA

• Sesión 1– Introducción a los conceptos básicos ( 1

hora)• Orientación a Objetos• Aplicaciones Distribuidas• .NET Framework

– TALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)

Page 118: Taller campus party

TAREA

• Para desarrollar la siguiente sesión del taller se espera que se traiga una idea de proyecto para implementar

• Si no quieres crear una nueva idea igual puedes bajar el material y el avance del que estamos trabajando en www.avanet.org

Page 119: Taller campus party

• @soreygarcia• @mteheran• @dramirez2009• @khriztianmoreno• @jodageeks• @hernandgr (virtual)• @magicovercast (virtual)

ACOMPAÑAMIENTO

Page 120: Taller campus party

LOS ESPERAMOS EN LA SESIÓN 2

30 de Junio – 10 a.m. a 12 m.