• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Aplicaciones Distribuidas
 

Aplicaciones Distribuidas

on

  • 69,607 views

Material en construcción sobre aplicaciones distribuidas. ...

Material en construcción sobre aplicaciones distribuidas.

Si las imagenes contenidas en estas diapositivas violan derechos de autor, por favor comunicarmelo. este material es exclusivamente de caracter academico y colaborativo.

Statistics

Views

Total Views
69,607
Views on SlideShare
66,275
Embed Views
3,332

Actions

Likes
145
Downloads
1,048
Comments
66

36 Embeds 3,332

http://blog.soreygarcia.me 1003
http://tutoria.uisek.edu.ec 655
http://www.slideshare.net 396
http://dmae.utpuebla.edu.mx 352
http://soreygarcia.zobyhost.com 300
http://aulaweb.uca.edu.ni 138
http://yhenao.blogspot.com 92
http://www.sined.ec 81
http://aulaedune.esy.es 78
http://soreygarcia.blogspot.com 53
http://www.uisrael.net 32
http://yhenao.blogspot.mx 31
http://soreygarcia.me 19
http://blog.uca.edu.ni 15
http://127.0.0.1 14
http://www.soreygarcia.me 13
http://abequipo2.blogspot.com 11
http://presentacion.org 6
http://www.yhenao.blogspot.com 5
https://twitter.com 5
http://www.linkedin.com 5
http://sistemaxs.blogspot.com 4
http://webcache.googleusercontent.com 4
http://rybtec.blogspot.com 3
http://yhenao.blogspot.fr 3
http://www.yhenao.blogspot.mx 2
http://www.facebook.com 2
http://static.slidesharecdn.com 2
http://www.google.com.mx 1
http://evirtual.espoch.edu.ec 1
http://coderwall.com 1
http://abequipo2.blogspot.mx 1
http://sistemasdistribuidosurg.blogspot.com 1
http://tecnologiaxmanos.blogspot.com 1
http://www.avanet.org 1
https://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

110 of 66 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • excelente podras compartirla por fa
    kmtorres1992@gmail.com
    Are you sure you want to
    Your message goes here
    Processing…
  • muy bueno pasame una copia mi correo hlandero30@hotmail.com
    Are you sure you want to
    Your message goes here
    Processing…
  • Hola muy buen aporte, pero deberias permitir descargalo, bye
    Are you sure you want to
    Your message goes here
    Processing…
  • Hola, esta genial tu trabajo y quería saber si me puedes proporcionar una copia por favor mi correo es ingsagi@msn.com
    Are you sure you want to
    Your message goes here
    Processing…
  • como puedo descargar muy buena informacion
    Are you sure you want to
    Your message goes here
    Processing…

110 of 66 previous next

Post Comment
Edit your comment

    Aplicaciones Distribuidas Aplicaciones Distribuidas Presentation Transcript

    • Aplicaciones Distribuidas Por: Sorey Bibiana García Zapata
    • Sobre mi… Una frase para empezar… “ El conocimiento esta condicionado por la experiencia” Me sé algunas, me gusta compartir las que me sé, las que no sé, me gusta aprenderlas, recibo todo tipo de aportes y correcciones… Y pues lo que no sepamos, lo averiguamos.
    • Sobre el curso… Este curso esta enfocado a dar las nociones principales alrededor del desarrollo de aplicaciones distribuidas, reconociendo las tecnologías relacionadas a cada una de las partes fundamentales de estas y por supuesto las consideraciones asociadas a su desarrollo.
    • Importante! ... desarrollar software , no es programar … … este curso requiere conocer claramente esa diferencia!
    • El desarrollo de software incluye todas las disciplinas asociadas a la ingeniería de software desde el análisis hasta la puesta en producción … el desarrollo de aplicaciones distribuidas sugiere por tanto consideraciones durante la ejecución de todo el ciclo de vida …
    • Recomendación! Si a este momento, no reconoce conceptos como, ingeniería de software u orientación a objetos , inicie con el aprendizaje de estos antes de profundizar técnicamente en la distribución de aplicaciones. Ahora si, comencemos…
    • Que 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 ? Que criterios se usan para determinar que conforma un componente ? A través de que mecanismos se realiza la comunicación entre componentes distribuidos ? Que es un componente ?
    • Que debería saberse y/o tenerse en cuenta para desarrollar una aplicación distribuida ?
    • Capas Niveles Arquitectura Protocolos Calidades Sistémicas UML Despliegue Cliente/Servidor Servicios Lógica de Negocio Acceso a Datos Webservices Interfaces Componentes Comunicación Objetos Interfaz de Usuario Paquetes Interoperabilidad Comunicación
    • Vamos por partes… A que 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 arquitectura tambien puede ser la ubicación de un conjunto de funcionalidades en archivos, rutas o montadas sobre técnologías diferentes dentro de la misma máquina
    • Ahora bien, cuando hablemos de distribución lógica lo entenderemos como separación por “ Capas ” (tiers) y cuando hablemos de distribución física usaremos el término separación en “ Niveles ” (layers)
    • La separación por capas y niveles hace parte de la arquitectura del sistema y es definida por el arquitecto de la aplicación. … una situación evidente si conocemos la ingeniera de software… Nuestra tarea en este curso está en familiarizarnos con este tipo de tareas.
    • Ambos tipos de distribución se hacen con base en las necesidades técnicas , de diseño y/o de negocio … esas necesidades son las que aprenderemos a identificar en este curso.
    • La separación en niveles tiene una serie de consideraciones de tipo técnico y también económico , a las que nos referiremos mas adelante, por ahora lo concebiremos de forma básica, como separación física de los componentes. Sin embargo de las capas , tenemos más que decir…
    • “ 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…
    • … bueno y a todo esto… Qué es un componente ?
    • 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 .
    • Cada componente de un sistema puede verse como un paquete o módulo
    • 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.
    • En este punto visualizamos varios conceptos que podemos presentar de la siguiente forma… Aplicación Niveles Capas Componentes Paquetes Clases Sub paquetes Otros Recursos
    • Hablar de clases en este punto, nos hace recordar que debemos hacer un recuento nuestros conocimientos sobre programación orientada a objetos , ya que la construcción de componentes esta basada es los mismos principios y/o características con las que cumple este conocido paradigma
    • … la modularidad y la reusabilidad Qué son? Recordemos lo más básico … Los principios que dirigen la orientación a objetos son
    • En términos simples la modularidad significa trabajar por partes … (de hecho, tal cual como lo plantea el desarrollo por componentes)
    • 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
    • Que es una clase ? Que es un objeto ? Que es un mensaje ? Que son atributos , características o propiedades ? Que son métodos , procedimientos , funciones o servicios ? Que significa que un objeto esta compuesto por una interfaz , una implementación y un estado ? Veamos, que tanto recordamos…
    • Que es abstracción , encapsulamiento , polimorfismo , herencia ? Después de este repaso avancemos un poco más Si en este punto se encuentra un poco confundido, recuerde mi consejo, no profundice más hasta no entender claramente los conceptos mencionados
    • Los componentes igual que los objetos deben cumplir con dos características importantes la alta cohesión y el bajo acoplamiento … que tan claros son?….
    • Cuando decimos que un componente tiene una alta cohesión hablamos de que todos los elementos dentro de el están estrechamente relacionados … el criterio de relación debe ser de negocio o técnico y no subjetivo
    • Cuando decimos que un componente tiene una bajo acoplamiento hablamos del nivel de independencia que tiene un componente con respecto a otros … esta independencia se refiere al grado en que un componente puede funcionar sin recurrir a otros y se refiere a relaciones de acoplamiento diferentes a la funcional o arquitectónica…
    • Tener estas dos metas en mente durante la construcción de componentes , ahorrará trabajo y tiempos de desarrollo a los equipos y proyectos … si reconocemos el valor de la ingeniería de software, entenderemos lo que esto significa…
    • Los componentes desarrollados satisfacen una necesidad asociada a una o varias partes de una aplicación, y son separados de acuerdo a su uso o a por una agrupación lógica que determina la relación entre ellos.
    • El paradigma básico de la separación por capas establece al menos 3 partes distintas dentro de una aplicación La Presentación La Lógica de Negocio El Acceso a Datos y los Datos Ahora bien…
    • Veamos entonces que significan cada una de estas partes …
    • 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 .
    • Después de conocer estos conceptos básicos, podemos pasar entonces a ver, los diferentes tipos de aplicación Aplicaciones Monolíticas Aplicaciones Cliente/Servidor Aplicaciones de 3 Capas Aplicaciones de N Capas … veamos unas definiciones básica sobre estas
    • 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 .
    • “ Es muy tentador para los desarrolladores mezclar una o más capas ; por ejemplo implementando alguna validación u otro proceso de negocios dentro de la capa de presentación en vez de en la capa de lógica de negocio, ….”
    • Sin embargo ubicar la lógica de programación en las capas adecuadas , es más un comportamiento que debería ser inherente al trabajo como programador, obviamente uno que este interesado en hacer su trabajo, bien hecho. Los problemas que conllevan la mala separación de la lógica de programación , no son inmediatos, sus efectos se verán muy seguramente en el transcurso de la evolución de las aplicaciones.
    • Y pues para hacer un trabajo bien hecho, hay que reconocer que las consideraciones asociadas al desarrollo por capas… Veamos cada una de ellas y enumeremos algunas consideraciones iniciales…
    • 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 ?
    • Es mucho más que una cuestión de gusto, hay que pensar en los costos, la productividad, portabilidad e interoperabilidad entre muchos otros factores… Solo por mencionar los más populares…
    • Y las consideraciones de la Capa de Acceso a Datos ?
    • Nuevamente solo por mencionar los más usados…
    • Bueno y si ya están separadas las 3 capas principales, que 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.
    • Este por ejemplo es la propuesta de Microsoft para una aplicación distribuida y que como vemos tiene más de 3 capas … Sin estrés, no hemos pasado de la tierra al cielo, con el tiempo iremos entendiendo que significa todo esto
    • Ya que hemos hecho énfasis en el significado del desarrollo o distribución de la lógica de programación y recursos del sistema por capas , continuemos hablando de los componentes .
    • Hay componentes de diferentes tipos Ejecutables, Páginas Web, Librerías, Controles, Procedimientos Almacenados, Servicios Web… … ahora bien…
    • Los ejecutables refieren programas o aplicaciones de escritorio que corren sobre un sistema operativo
    • Una pagina web es una fuente de información adaptada para la World Wide Web (WWW), que es accesible mediante un navegador de Internet y normalmente forma parte de un sitio web. Wikipedia
    • Las librerías refieren bibliotecas o conjunto de clases que contienen lógica de programación implementada como servicios que pueden ser utilizados desde otras librerías o aplicaciones
    • Los controles refieren librerías de tipo grafico que pueden ser usada en la construcción de interfaces de usuario.
    • Un servicio web (en inglés Web service ) es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones Wikipedia Suena complicado verdad? … no hay problema, este tema lo ampliaremos más adelante!
    • Lo que debemos saber inicialmente sobre los servicios web es que actualmente son la forma mas popular de comunicación entre niveles, que si recordamos, refiere a entornos separados e incluso de tecnologías diferentes .
    • Tratemos de simplificar lo que acabamos de leer… Generalmente las aplicaciones exponen a los usuarios una interfaz gráfica que permite interactuar con los datos de un negocio. Los servicios web son un tipo de aplicación que permite exponer servicios ( métodos, procedimientos ) existentes en clases o librerías clases, a través de los cuales se accede a la lógica de negocio que ofrece un sistema, este es el mecanismo más comúnmente utilizado actualmente para compartir información entre empresas.
    • Estos son los conceptos iníciales , entenderlos y apropiarse de su manejo nos garantizará entender su detalle y los temas que vienen más adelante, pero antes de terminar veamos una aclaración…
    • Importante! No es lo mismo hablar de una aplicación distribuida y un sistema distribuido
    • Un sistema distribuido se define como: Una colección de computadores separados físicamente y conectados entre sí por una red de comunicaciones distribuida; cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistema Wikipedia
    • Es el caso del conocido buscador de Google , el cual funciona utilizando una red de computadores que realizan simultáneamente las búsquedas solicitadas por un usuario, sin que el usuario perciba siquiera que esto esta sucediendo . Una razón importante para la existencia de los sistemas distribuidos tiene que ver con la limitación de recursos del hardware .
    • A pesar de actualmente contamos con altos niveles de procesamiento en el hardware disponible, estos niveles son limitados en recursos, es decir en capacidad de procesamiento, memoria, ancho de banda , entre otros criterios. Esta situación hace que los arquitectos de software , tengan que implementar estrategias en donde mas de un servidor atiende las solicitudes de los sistemas que tienen por ejemplo muchos usuarios accediendo de forma concurrente al mismo sistema .
    • Un aplicación distribuida puede requerir ser implementada como un sistema distribuido, sin embargo esta condición no es indispensable, puesto que está determinada por necesidades específicas para tipos de aplicaciones y/o escenarios en los que priman principalmente factores como la escalabilidad horizontal y el desempeño … estas ultimas refieren calidades sistémicas, temas que veremos más adelante…
    • Nos vemos en la próxima! Ciao