3. 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)
5. Es una aplicación con distintos componentesque se ejecutan en entornos separados, normalmente en diferentes plataformas conectadas a través de una red Wikipedia
6. ¿Cuales son los componentesque 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?
7. Algunos Conceptos… Protocolos Cliente/Servidor Capas Despliegue Webservices UML Servicios Objetos Interfaces Niveles Comunicación Interoperabilidad Arquitectura Lógica de Negocio Acceso a Datos Interfaz de Usuario Paquetes Componentes
8. 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íficode responsabilidades dentro de un sistema.
9. 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ógicade las partes de una aplicación, esto quiere decir que programáticamente existe una forma de separaro agruparlos componentes.
10. La separación físicano 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
11. 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)
12. La separación por capas y niveles hace parte de la arquitectura del sistema y es definida por el arquitecto de la aplicación.
13. “Las capasdentro de una arquitectura son un conjunto de servicios especializados que pueden ser accesibles por múltiples clientes y que deben ser fácilmente reutilizables.”
14. Una capa puede contener muchoscomponentes, un mismo componente puede ubicarse en variascapas de acuerdo a su naturaleza y a las consideraciones explicitas de la arquitectura … como? No hay problema, lo iremos entendiendo, de eso se trata…
15. ¿Qué es un componente? Un componentees un elementode software que encapsulauna serie de funcionalidades. Un componentees una unidad independiente, que puede ser utilizado en conjunto con otros componentes para formar un sistema más complejo.
16. Cada componente de un sistema puede verse como un paqueteo módulo Un componente esta compuesto por elementos que pueden ser clasesy/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.
17. En este punto visualizamos varios conceptos que podemos presentar de la siguiente forma… Aplicación Niveles Capas Componentes Paquetes Clases Otros Recursos Sub paquetes
18. Ahora bien… El paradigma básico de la separación por capas establece al menos 3 partes distintas dentro de una aplicaciónLa PresentaciónLa Lógica de NegocioEl Acceso a Datos y los Datos
19. La Presentación o interfaz de usuario se refiere al mecanismo de interacción del usuario con el sistemaLos 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
20. 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.
21. El Acceso a Datos refiere al medio a través del cual podemos acceder y manipular los datospersistentes de un sistemaEl Almacenamiento de Datos refiere a la forma en que se encuentran guardados dichos datos, por ejemplo, en archivos o bases de datos.
22. Así nos encontramos con componentes de diferentes tipos Ejecutables, Páginas Web, Librerías, Controles, Procedimientos Almacenados, Servicios Web…
23. Después de conocer estos conceptos básicos, podemos pasar entonces a ver, los diferentes tipos de aplicaciónAplicaciones MonolíticasAplicaciones Cliente/ServidorAplicaciones de 3 CapasAplicaciones de N Capas
24. 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.
25. Una aplicación Cliente/Servidor o aplicación de doscapas 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.
26. 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.
27. ¡ATENCIÓN! 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.
28. Ahora, para hacer un trabajo bien hecho, hay que reconocer que las consideraciones asociadas al desarrollo por capas…
32. Bueno y si ya están separadas las 3 capas principales, ¿Qué es entonces una de aplicación de N capas?
33. 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 transparenteel obtener información de un sistema u otro.
34. 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.
35. Usuarios Auditoria y Control de Excepciones Seguridad Comunicación Componentes de Interfaz de Usuario Componentes de Proceso de Interfaz de Usuario Interfaces de Servicio Flujos de Negocio Componentes de negocio Entidades de Negocio ComponentesAccesoDatos Agentes de Servicio ServiciosExternos Orígenes de Datos UnapropuestaMicrosoft Patterns & Practices