taller campus party 2011: desarrollo de aplicaciones con .net (sesión 2)
DESCRIPTION
Esta es solo la parte teóricaTRANSCRIPT
TALLERDesarrollo de Aplicaciones
Profesionales con Tecnologías .NET
Sorey García(@soreygarcia)
AGENDA
• Sesión 2 (Junio 30 10:00 A.M. a 12:00.M.)– Introducción a los conceptos
• Aplicaciones Distribuidas
– TALLER: Construyendo aplicación profesional• Presentación (Winforms, ASP.NET, C#.NET)• Servicios Web (ASP.NET, C#.NET)• Lógica de Negocio (C#.NET)• Acceso a Datos (C#.NET, LINQ, SQL Server
2008)
¿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
¿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 rutas de
despliegue 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.”
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…
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?
• @soreygarcia• @mteheran• @dramirez2009• @khriztianmoreno• @jodageeks• @andreslon• @pavelespitia• @dxp2• @hernandgr (virtual)• @magicovercast (virtual)• @elianaca (virtual)
ACOMPAÑAMIENTO
¡GRACIAS!Síguenos @Avanet