Ir al contenido principal

Temario del primer *examen* de Desarrollo Web en Entorno Servidor

¡Hola! ¿Cómo estás, lector? Mira, la profesora de Desarrollo Web en Entorno Servidor nos ha puesto un pequeño test de 20 preguntas mañana. Dimos el temario la semana pasada, y en lugar de dejar que se acumulen los temas nos va a poner un examen ya. Solo el hecho de oír esta palabra, ha infundido algo de terror en el aula, sobre todo porque no llevamos ni una semana de clase, pero la maestra asegura que será sencillo.

Voy a resumirlo o expresarlo con mis palabras para estudiar. Si a alguien le sirve, pues mejor.

Tema 1: Arquitecturas de desarrollo web y herramientas de programación.

Índice:

  • Modelos de programación en entornos cliente/servidor
  • Generación dinámica de páginas web
  • Integración con los lenguajes de marcas
  • Integración con los servidores web
  • Herramientas de programación
mapa conceptual







Glosario para que queden claros todos los conceptos de los que se hablarán:

  • Aplicación Web: aplicación informática a la que se accede mediante una interfaz utilizando un navegador.
  • Cliente: en el modelo cliente-servidor, los clientes solicitan funcionalidad a los servidores.
  • Servidor: en el modelo cliente-servidor, los servidores proveen servicios a los clientes.
  • Framework: plataforma para el desarrollo de aplicaciones. Puede incluir librerías y metodologías.
  • HTML: Hyper Text Markup Language. Lenguaje básico de creación de páginas web y estándar del W3C.
  • Protocolo: conjunto de reglas que se establecen entre dos distemas en el proceso de comunicación.
  • HTTP: Hyper Text Transfer Protocol. Protocolo que utilizan clientes y servidores web para comunicarse. Estándar W3C.
  • HTTPS: versión segura de HTTP.
  • IDE: Integrated Development Environment. Programa que integra herramientas útiles para programar, como editores, compiladores o control de versiones.
  • W3C: World Wide Web Consortium. Organismo que elabora y mantiene varios de los estándares más importantes de internet.

Modelos de programación en entorno Cliente-Servidor.

World Wide Web: conjunto de recursos interconectados que conforman el conocimiento humano actual. Está formada por:

  • Hubs, repetidores, puentes, pasarelas, encaminadores.
  • Protocolos de comunicaciones: TCP, IP, HTTP, FTP, SMTP.
  • Sistema de nombres de dominio (DNS).
Configuración arquitectónica más habitual: Cliente/Servidor

  • Cliente es un componente consumidor de servicios.
  • Servidor es un proceso proveedor de servicios.
La comunicación entre cliente y servidor web se realiza normalmente con los protocolos HTTP (puerto 80) o HTTPS (puerto 443).

Servidor y cliente pueden estar en la misma máquina o en máquinas distintas.

La mayoría de las veces es el cliente el que inicia la comunicación.

Funcionalidades en los entornos cliente/servidor (capas):

  • Capa de presentación: es la que ve el usuario.
  • Capa de negocio: conoce y gestiona las funcionalidades que esperamos del sistema o aplicación web
  • Capa de persistencia o de datos: donde residen los datos y la encargada de acceder a los mismos.
La capa de presentación no se comunica directamente con la de los datos, sino que lo hace a través de la capa de negocio.

Clasificación de los modelos de programación web:

  • Según el tamaño de los componentes
    • FatClient (thinServer), el mayor peso de la aplicación se ejecuta en el cliente.
    • FatServer (thinClient), funcionalidad asociada al cliente limitada a la presentación de la información enviada por el servidor
  • Según la naturaleza del servicio ofrecido: en función de las capacidades ofrecidas por el servidor.
    • Servidores de ficheros, servidores de bases de datos, servidores  de transacciones, servidores de objetos, servidores web...
  • Reparto de funciones entre cliente y servidor: gestionar y distribuir las responsabilidades de cada una de las prestaciones funcionales entre el cliente y servidor.
    • Modelo en dos capas.
    • Modelo en tres capas.

Generación dinámica de páginas web

Clasificación de las aplicaciones web:

  • Aplicaciones web estáticas: el usuario recibe una página web cuya interacción no conlleva ningún tipo de acción.
  • Aplicaciones web dinámicas: la interacción del cliente con el recurso recibido por parte del servidor (página web) produce algún tipo de cambio en la visualización del mismo.
  • Aplicaciones web interactivas: la interacción del usuario hace que se genere un diálogo entre el cliente y el servidor.

Programación de entorno servidor

Lenguaje de programación correspondiente a un entorno servidor:

  • Aquel cuyo código, bien sea como objeto precompilado o bien como código interpretado, es ejecutado por un software específico en el componente que actúa como servidor.
Tipos:
  • Lenguajes de scripting
  • Aplicaciones CGI y derivados
  • Aplicaciones híbridas de código repartido
Lenguajes de scripting:
  • PHP
  • ASP
  • Python
  • JSP
  • Ruby

Lenguajes de programación de entorno servidor

Aplicaciones CGI y derivados:
  • Delegan la creación de páginas dinámicas a un programa externo, que recibe ciertos parámetros de entrada y devuelve como resultado el contenido que debe visualizar el cliente. Se encuentra en un servidor. Casi siempre generan páginas web o servicios web. El servidor le pide al CGI la petición del cliente. El CGI lo devuelve al servidor y éste al cliente.
  • El estándar CGI (Common Gateway Interface), especificado en la RFC3875, define este comportamiento.
  • El programa externo no depende del código a generar.
  • Habitualmente programados en C, C++, Java, Visual Basic, Cobol y Perl.
  • Desventaja: escaso rendimiento a la hora de responder a múltiples peticiones CGI simultáneamente. Alternativas:
    • FastCGI.
    • Servlets.
    • EJB / JavaBeans
Aplicaciones híbridas de código repartido:
  • Tecnología intermedia alternativa a los lenguajes de scripting (interpretados) y a las aplicaciones CGI y derivadas.
  • Solución más representativa: ASP.NET
    • Los formularios web están contenidos en archivos con una extensión ASPX que son los que el cliente solicita a través de una URL al servidor.
    • Estos ficheros ASPX contienen código HTML o estático y también etiquetas propias de la plataforma .NET. Estas etiquetas definen controles web y controles de usuario.

Integración con los lenguajes de marcas

Las páginas dinámicas tienen dos partes: una estática (HTML) y otra dinámica en algún lenguaje de programación.

Al solicitar una página, el servidor busca bloques de código. Si los encuentra, los ejecuta y genera una salida.

Ejemplo:

Cuando se solicita esta página, la salida será así:

Integración con los servidores web

La capacidad de responder a una petición hecha por un cliente depende de los módulos que se tengan instalados y de las posibilidades que tenga el servidor.

Para que un servidor pueda atender una petición, ésta ha de constar de unos elementos concretos. Las peticiones serán de tipo URL.

Tipos de peticiones: GET y POST.

Herramientas de programación

El proceso de desarrollo no tiene por qué realizarse en el mismo equipo en el que finalmente se despliegue y ejecute la aplicación web que se está desarrollando.

Instrumentos involucrados en el desarrollo web:
  • Navegadores.
  • Editores de documentos.
  • Entornos de programación.
  • Herramientas de tratamiento de imágenes.
  • Herramientas para la creación y administración de bases de datos.
  • Frameworks.
Entornos de programación: programas, aplicaciones o simples utilidades destinadas a la programación web. Tipos:
  • Marcadores de texto:
    • Nos ayudan a identificar mejor la sintaxis del lenguaje, cambiando de color las etiquetas, realizando tabulaciones en el texto, etc.
    • Arachnophilia, Notepad++, UltraEdit, Context Editor...
  • Herramientas genéricas:
    • Ofrecen capacidades tales como la sugerencia de estructuras o funciones predeterminadas o la posibilidad de validar la corrección del código escrito.
    • Eclipse, Dreamweaver, etc.
  • Herramientas específicas:
    • Herramientas específicas para una tecnología concreta, que exigen que el desarrollador tenga instalada una plataforma de desarrollo concreta.
    • Microsoft Visual Studio, NetBeans, etc.
  • Entornos de programación:
    • Frameworks para desarrollo web:
      • Spring
      • Ruby on Rails
      • Django
      • AngularJS
      • Symfony
That's all, folks!