jueves, 26 de septiembre de 2013

Despliegue de aplicaciones web: Aplicaciones web. IIS vs. Apache.

Artículo realizado por Pablo Medina Suárez y Rafael Urbano Jiménez, 2º D.A.W.
  1. Define “aplicación web”  e indica sus ventajas e inconvenientes.
    Podemos comprender como aplicación web a cualquier producto de software que es accedida a través de una web, utilizando una red como Internet, extranet o intranet.
    El término es utilizado para designar a aquellos programas informáticos ejecutados en un navegador web, o programado utilizando algún lenguaje soportado por navegadores.
Un ejemplo de aplicación web puede ser una applet de Java, un cliente de correo electrónico web (Gmail, Outlook), redes sociales, etc.

Ventajas que aportan las aplicaciones web:

  • Ahorran tiempo. Al no tener que descargar ni instalar ningún programa.
  • No ocupan espacio en el disco duro. Sólo el espacio requerido para instalar un navegador.
  • Bajo consumo de recursos. Debido a que el procesamiento es tarea del servidor donde es ejecutada la aplicación, los recursos del cliente apenas se ven afectados.
  • Multiplataforma. Tener un navegador actualizado es el único requisito, por lo que no hay problemas de compatibilidad relacionados con el sistema operativo del sistema.
  • Alta disponibilidad. Al ser contenidas en servidores dedicados a proveer la aplicación.
  • Portabilidad. Como son accedidas desde un navegador, son independientes del ordenador donde sean utilizadas. Estar conectado a una red con acceso al servidor donde la aplicación está contenida  es el único requisito.
  • Acceso concurrente y colaborativo.  Debido a que el acceso se realiza desde una única ubicación, se hace posible el acceso y la compartición de datos entre varios usuarios a la misma vez. Por ejemplo, suites ofimáticas online como Google Drive.
  • Actualizaciones. Los clientes no tienen que actualizar la aplicación, sólo su navegador para asegurar el correcto acceso a la aplicación.

Desventajas de las aplicaciones web:

  • La disponibilidad depende de terceros. El acceso a la aplicación depende de la disponibilidad de la conexión a la red y de la disponibilidad del servidor de la aplicación y del cliente. Por lo tanto, si alguna de estas falla, se pierde el acceso pese a que el cliente funcione sin problemas.
  • Cantidad de funcionalidades ofrecidas. Las funcionalidades de la aplicación pueden verse limitadas por el navegador web, al ser más reducidas que las que puede ofrecer un sistema operativo.Sin embargo, el desarrollo de aplicaciones está cada vez más orientado hacia la web, por lo que no paran de expandirse las funcionalidades de los navegadores web.
  • La aplicación desaparece si el desarrollador lo desea o se extingue el servicio. En cambio, en las aplicaciones de escritorio es posible su uso posterior.
  • Privacidad. El desarrollador de la aplicación web puede rastrear cualquier actividad del usuario. Un correcto cifrado de las comunicaciones y datos almacenados es una práctica necesaria, tanto en temas de seguridad como para mantener la privacidad.
  1. Arquitectura Cliente-Servidor. Descríbela brevemente y enumera los elementos involucrados en ella. Indica sus características y software necesario en cada parte.
    La arquitectura cliente-servidor es una arquitectura de red en la que cada ordenador o proceso en la red se distingue entre cliente o servidor. Esta arquitectura implica la existencia de una relación entre procesos que solicitan servicios (clientes) y procesos que responden a estos servicios (servidores).
    Los clientes presentan como características:
  • Inician las solicitudes o peticiones y esperan y reciben las respuestas del servidor.
  • Pueden conectarse a varios servidores simultáneamente.
  • Presentan interfaz gráfica para la comunicación directa con el usuario.
    Los servidores tienen las siguientes características:
  • Esperan a que lleguen las solicitudes de los clientes y, tras recibirlas, la procesan y luego envían una respuesta de vuelta al cliente.
  • Pueden aceptar conexiones desde un gran número de clientes, según las capacidades del hardware.
  • No suelen interactuar directamente con los usuarios finales.
    La arquitectura cliente/servidor permite la creación de aplicaciones distribuidas. La principal ventaja de esta arquitectura es que facilita la separación de las funciones según su servicio, permitiendo situar cada función en la plataforma más adecuada para su ejecución.
    Este sistema presenta las siguientes características:
  • Existe una combinación de la parte cliente (o front-end), parte con la que interactúa el usuario; y la parte servidor (o back-end), que interactúa con los recursos compartidos (bases de datos, impresoras, etc.).
  • El cliente y el servidor tienen necesidades distintas en cuanto a recursos y a la hora de ejecutarse: velocidad de procesamiento, velocidad y capacidad de los discos duros, etc.
  • Entorno heterogéneo: el hardware y sistema operativo del cliente pueden diferir entre el cliente y el servidor. Estos se suelen comunicar a través de una API (Application Program Interface) y RPC (Remote Procedure Call) conocidas.
  • La parte cliente suele hacer uso de una interfaz gráfica agradable para el usuario, siendo la parte servidor destinada a un usuario más avanzado.
Tipos de arquitecturas dentro del sistema cliente/servidor:
Existen arquitecturas de dos y tres niveles.
Cuando hablamos de arquitectura de dos niveles se está haciendo referencia a aplicaciones donde el cliente mantiene la lógica de presentación, de negocio, y de acceso a los datos, y el servidor únicamente gestiona los datos. Suelen ser aplicaciones cerradas que supeditan la lógica de los procesos cliente al gestor de bases de datos que se está usando.
Modelos de distribución en la arquitectura de dos niveles.
Presentación distribuida:
Aplicación distribuida:
Datos distribuidos:
En las arquitecturas de tres niveles, la lógica de presentación, la lógica de negocio y la lógica de datos están separadas, de tal forma que mientras la lógica de presentación se ejecutará normalmente en la estación cliente, la lógica de negocio y la de datos pueden estar repartidas entre distintos procesadores. En este tipo de aplicaciones suelen existir dos servidores: uno contiene la lógica de negocio y otro la lógica de datos.
Ejemplo de arquitectura de tres niveles:
  1. Define las tecnologías de desarrollo usadas para la  parte cliente (lenguaje HTML, etc) y las usadas en la parte servidor (HTML, lenguajes script, etc) en un servicio web.
Las tecnologías que se suelen emplear para programar el cliente web son:
  • HTML (HyperText Markup Language). Hace referencia al lenguaje de marcado para la elaboración de páginas web.
  • CSS. Las hojas de estilo en cascada hacen referencia a un lenguaje de hojas de estilos usado para describir el aspecto y formato de un documento escrito en lenguaje de marcas.
  • DHTML. El HTML Dinámico designa el conjunto de técnicas que permiten crear sitios web interactivos utilizando una combinación de lenguaje HTML estático, un lenguaje interpretado en el lado del cliente (como JavaScript), el lenguaje de hojas de estilo en cascada (CSS) y la jerarquía de objetos de un Document Object Model (DOM).
  • Lenguajes de script: JavaScript (lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico), VBScript, etc.
  • ActiveX.
  • Applets programados en Java.
  • Distintas tecnologías que necesitan la existencia de un plug-in en el navegador:
  • Adobe Acrobat Reader, Autodesk MapGuide, Live Picture PhotoVista, Macromedia
  • Flash, Macromedia Shockwave, Virtual Reality Modeling Language (VRML), etc.
Las tecnologías empleadas en la actualidad en el lado servidor son:
  • CGI es una importante tecnología de la World Wide Web que permite a un cliente (navegador web) solicitar datos de un programa ejecutado en un servidor web.
  • PHP es un lenguaje de programación de uso general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico.
  • ASP es una tecnología de Microsoft del tipo “lado del servidor” para páginas web generadas dinámicamente, que ha sido comercializada como un anexo a Internet Information Services (IIS).
  • JSP es una tecnología que ayuda a los desarrolladores de software a crear páginas web dinámicas basadas en HTML, XML entre otros tipos de documentos. JSP es similar a PHP pero usa el lenguaje de programación Java.
  • ColdFusion es un servidor de aplicaciones y un lenguaje de programación usado para desarrollar aplicaciones de Internet, generalmente sitios web generados dinámicamente. En este aspecto, es un producto similar a ASP, JSP o PHP.
  1. IIS vs Apache.
    1. Indica qué tienen en común IIS y Apache y qué servicios proporcionan cada uno de ellos.
 Servicio
Partes en común
Servicios proporcionados
ISS
- Permite el uso de PHP
-Permite correr aplicaciones web de .NET
FTP, SMTP, NNTP,  HTTP, HTTPS
Apache
- Permite el uso de PHP
-Permite correr aplicaciones web de .NET
-Soporte de seguridad SSL y TLS.
-Puede realizar autentificacion de datos utilizando SGDB.
-Puede dar soporte a diferentes lenguajes, como Perl, PHP, Python y TCL.
    1. Indica ahora sus principales diferencias.
Apache es multiplataforma, mientras que IIS sólo funciona en sistemas operativos Windows.
El soporte técnico de IIS se hace a través del personal responsable de la compañía Microsoft mientras que en Apache el soporte lo da la comunidad.
IIS acepta nativamente ASP (lenguaje de programación de páginas web) de Microsoft, en cambio Apache no acepta este lenguaje (de forma nativa).
ISS no es modular, hasta la versión ISS 7.0, Apache, en cambio, siempre ha sido modular.
    1. Investiga cuál de los dos es más usado. Indica los artículos de donde hayas sacado la información.
    Apache es el más utilizado con diferencia, como podemos consultar en el siguiente gráfico, que forma parte de este artículo
    En este otro artículo de Netcraft podemos ver otras comparaciones realizadas en febrero de este año: número de sitios web que emplean ambos servicios, cuota de mercado, cuota de tráfico de usuarios, entre otras.
Fuentes:
  • “Programación de Aplicaciones Web: Historia, Principios básicos y Clientes Web”, de Sergio Luján Mora. ISBN: 84-8454-206-8.
  • “Administración de servicios de internet: De la teoría a la práctica”, de Francisco Maciá Pérez. ISBN: 847908989X, 9788479089894.
  • Netcraft

domingo, 22 de septiembre de 2013

Descripción del PLE

A continuación pasaré a describir mi PLE (Entorno Personal de Aprendizaje), en el que algunas cosas ya las venía haciendo y otras o bien son nuevas o bien las iré incorporando:

  • He retomado la cuenta "profesional" de Twitter, en la que aparto todo lo personal, o no relacionado con temas estrictamente profesionales. Le daré un uso similar al RSS, para seguir noticias de interés.
  • Cambiaré el uso de los marcadores del navegador web por abrir una cuenta en Delicious.
  • Darle más vida a este blog para subir trabajos y usarlo a modo de currículum virtual.
  • Aplicación "a mi manera" del método GTD mediante el programa de "notas adesivas" del móvil.
 No descarto ampliar mi PLE en un futuro, de modo que esta entrada es susceptible de edición en cualquier momento.