taller campus party
Post on 28-Jun-2015
234 Views
Preview:
TRANSCRIPT
TALLERDesarrollo de Aplicaciones
Profesionales con Tecnologías .NET
Sorey García(@soreygarcia)
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)
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)
¡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.
¡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.
Un par de consejos antes de empezar…
Antes de intentar aprender algo ten presente…
lo complejo, alguna vez… fue simple,entiende lo primero lo simple.
El problema está en la técnica,
no en la herramienta
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
¿Listos?
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)
¿Qué es la
orientación a objetos?
La orientación a objetos es un
paradigma de programación
Si bien esta definición es correcta, el
problema está, en que tanto lo comprendemos…
Intentemos algo simple…
La orientación a objetos es
una forma de ver las situaciones y de analizar
el entorno…
…es una forma de entender un problema
identificando las entidades principales que se encuentran en el
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
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
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.
El lenguaje de programación es
la herramienta para resolver el problema
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
Y aunque es claro que existe más de una herramienta para
resolver un problema
Es seguro que también hay
formas más fáciles de hacerlo…
Veamos algunos
conceptos clave…
¿Qué es un Objeto?
Cualquier Cosa
Un Objeto es…
!En serio!
Cualquier Cosa
Cualquier Cosa…de la que puedas emitir un concepto.
Cualquier Cosa,
todo es un objeto.
Es decir…
Veamos,
Este es un objeto
Es un automóvil de plástico, rojo
con 4 llantas y 2 puertas
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
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
A ese concepto conocido que representa una agrupación de objetos
…lo llamamos Clase
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
La clase es una…
…los objetos son todos los que podamos
crear mentalmente a partir de dicha clase o concepto
¿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
Así entonces…
entidad =
concepto relevante =
clase
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.
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.
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
Con respecto a la comunicación entre objetos tenemos más
principiosalta cohesión y el bajo
acoplamiento
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
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
… la modularidad y la reusabilidad
Qué son?
Los principios que dirigen la orientación a objetos son…
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
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.
Por último, veamos algunas características de la
Programación Orientada a Objetos
Encapsulamiento
Herencia
Polimorfismo
Empecemos a conocer nuestro problema
¿Qué tal algo que todos conocemos?
Aplicación de Aforo a Campus Party
Algunos Objetos
• (Diagrama pendiente)
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)
¿Qué es una aplicación distribuida?
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
¿Se entendió?Veamos que tanto…
¿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?
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
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.
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.
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
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)
La separación por capas y niveles hace parte de la arquitectura del
sistema y es definida por el arquitecto de la aplicación.
“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.”
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
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…
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?
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
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
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
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
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.
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.
Así nos encontramos con componentes de diferentes
tiposEjecutables, Páginas Web, Librerías,
Controles, Procedimientos Almacenados, Servicios Web…
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
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.
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.
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.
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!
Ahora, para hacer un trabajo bien hecho, hay que reconocer
que las consideraciones asociadas al desarrollo por
capas…
¿Que consideraciones deberíamos tener en cuenta cuando pensamos en
la Capa de Presentación?
¿Y las consideraciones de la Capa de Lógica de Negocios?
¿Y las consideraciones de la Capa de Acceso a Datos?
Bueno y si ya están separadas las 3 capas principales,
¿qué es entonces una de aplicación de N capas?
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.
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.
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
¿Qué arquitectura tendrá nuestro ejemplo de Campus Party?
• (Diagrama pendiente)
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)
¿Recuerdan esto?
“No se invente la rueda....”
¿Qué es un
Framework?
Los edificios de una ciudad son todos los tipos de software que podemos construir
Veámoslo así…
Suponga que usted necesita construir un edificio…
Ahora imagine que a usted le tocara construir cada una de las partes…
¿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…
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?
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...
He ahí la razón para entender los conceptos
inicialesBien sea por que vas a usar un
framework o por que quieres construir uno
Las características principales de un framework son:
Estar enfocado en un tema específico
y el ser altamente reutilizable.
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.
¿Qué es Visual Studio .NET?
Es entorno de desarrollo (IDE), la herramienta sobre la cual los programadores desarrollan el software
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
¿Qué es .NET Framework?
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
¿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
¿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
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.
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#
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
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 …
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
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
¿Como trabaja el CLR?
Código Fuente
Cualquier lenguaje .NET
Compilador
Assembly (MSIL)
Bibliotecao Ejecutable
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
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
Estructura de un proyecto .NET
• Solución– Proyectos (Assemblies)
• Namespaces– Clases
• Archivos de configuración• Recursos adicionales
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
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)
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
• @soreygarcia• @mteheran• @dramirez2009• @khriztianmoreno• @jodageeks• @hernandgr (virtual)• @magicovercast (virtual)
ACOMPAÑAMIENTO
LOS ESPERAMOS EN LA SESIÓN 2
30 de Junio – 10 a.m. a 12 m.
top related