taller campus party 2011: desarrollo de aplicaciones con .net (sesión 2)

Post on 22-Jan-2015

958 Views

Category:

Education

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Esta es solo la parte teórica

TRANSCRIPT

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

top related