SlideShare uma empresa Scribd logo
1 de 52
Arquitectura de la Web y
Computación en el Servidor
Jose Emilio Labra Gayo
Depto. Informática
Universidad de Oviedo
Pilares de la Web
3 pilares
Interacción: Protocolos HTTP, FTP, SMTP, etc.
Identificación: URIs
Formatos de representación: HTML, JSON, XML, ...
Identificación
URI
Formatos
HTML, JSON,...
Identificación
URI
Interacción
Protocolos
Formatos
HTML, JSON,...
WWW
Protocolos: HTTP
HTTP (Hypertext Transfer Protocol)
Versión 0.9 (1991)
HTTP 1.0 (1996) desarrollado por HTTP WG (IETF)
HTTP/1.1 (1999) RFC 2616
Modo texto
Arquitectura de la Web
SPDY (2009) Google
HTTP/2.0 (2015)
Cabeceras comprimidas, formato binario
Objetivo: rendimiento
Esquema conceptual de HTTP
Usuario Navegador
Cliente
Servidor
URI
Representación
WWW
HTTP
Petición
Respuesta
Recursos
La Web está formada por recursos
Recurso = cualquier fuente de contenido Web
Se identifican mediante URIs
Diversas Posibilidades:
Estáticos: almacenados en Sistema de Ficheros
Páginas HTML
Otros formatos multimedia: Imágenes, vídeos, sonidos, ...
Dinámicos: bajo demanda
Generado a partir de bases de datos
Integrando información de otros servicios Web
Información onlineNOTA: La mayoría de la información disponible en la Web se
genera dinámicamente
Recursos
Navegador
Cliente
Servidor
URI
WWW
HTTP
Fichero texto
Imagen
Base
datos
Programa
Sistema ficheros
=
Gateway
Gateway
Gateway
Gateway
Otro
servidor
Cámara
Web
Base
datos
Informac.
Bursátil
Control
Robot
Tipos de recursos
Los servidores asocian un tipo a cada recurso
Tipos MIME (Multipurpose Internet Mail Extensions)
Ejemplos:
text/plain, text/html, application/xml, image/jpg,...
El cliente decide qué hacer con dichos tipos
Usuario
Navegador
Cliente
Servidor
Petición
Respuesta
WWW
HTTP
Content-type: image/jpeg
Content-length: 8854
HTTP: Formato de mensajes
Modo texto: línea inicial
cabecera del mensaje*
cuerpo del mensaje ?
Navegador
Cliente
Servidor
Petición
WWW
HTTP
HTTP/1.1 200 OK
Date: Thu, 12 Oct 2013 09:36:05 GMT
Server: Apache
Content-length: 80554
Content-type: text/html; charset=utf-8
<html>
<head>
<title>Curso XML</title>
<head>
...
</html>
GET /index.html HTTP/1.1
Host: www.uniovi.es
User-Agent: Mozilla/5.0 …
Accept: text/html
Accept-language: es, en
Respuesta
Mensajes de petición
Formato general:
POST /admin HTTP/1.1
Host: www.uniovi.es
User-Agent: Mozilla/5.0 …
Accept: text/html
Accept-language: es, en
...datos POST...
<method> <url> <version>
<headers> *
<entity-body>
GET /index.html HTTP/1.1
Host: www.uniovi.es
User-Agent: Mozilla/5.0 …
Accept: text/html
Accept-language: es, en
<headers> = parejas de la forma:
nombre1: valor1
nombre2: valor2
<method>= GET,PUT,POST,DELETE,...
Ejemplos:
HTTP/1.1 200 OK
Date: Thu, 12 Oct 2013 09:36:05 GMT
Server: Apache
Content-length: 80554
Content-type: text/html; charset=utf-8
<html>
<head>
<title>Curso XML</title>
<head>
...
</html>
Mensajes de respuesta
Formato general:
HTTP/1.1 404 Not found
Content-length: 0
<version> <status> <reason-phrase>
<headers> *
<entity-body>
<Status>
Códigos estándar:
2**: Variaciones de OK
3**: redirecciones
4**: Problemas del cliente
5**: problemas del servidor
Ejemplos:
Utilidades
Diversas utilidades
curl http://curl.haxx.se/
Hurl http://hurl.it
Redbot http://redbot.org
Web-sniffer: http://web-sniffer.net/
RestClient http://code.google.com/p/rest-client/
curl http://cursoxml.herokuapp.com
Algunas opciones:
-v (verbose)
-H (cabeceras)
-X (verbos POST, PUT, DELETE,...)
CURL
Ejemplos:
curl http://cursoxml.herokuapp.com
curl -H "Accept-language:es" http://cursoxml.herokuapp.com
curl -H "Accept:text/html" http://cursoxml.herokuapp.com/search?course=html5
curl -H "Accept:application/xml" http://cursoxml.herokuapp.com/search?course=html5
curl -X POST http://cursoxml.herokuapp.com/login -d email="pepe@abc.org" -password="abc"
Métodos HTTP
GET: Solicita una representación de un recurso
PUT: Crear un recurso
POST: Envía datos para que un recurso los procese
Puede implicar la creación/actualización de recursos
DELETE: Elimina un recurso
Otros
HEAD: Similar a GET, pero obtiene únicamente la cabecera
TRACE: Pide la solicitud que se envió al servidor
OPTIONS: Solicita los métodos que soporta el servidor
CONNECT: Convierte la petición en un túnel TCP/IP
Facilita la comunicación a través de SSL
Métodos HTTP
Propiedades
Método Bases de
datos*
Función Segura? Idempotente?
PUT Create Crear recurso No SI
POST Update Actualizar No No
GET Retrieve Consultar recurso Si Si
DELETE Delete Eliminar recurso No Si
* Aunque son similares, las operaciones CRUD de bases de datos y los métodos
GET, PUT, POST y DELETE de HTTP no son idénticos
Cabeceras en la petición
Accept: Tipos de representaciones aceptables
Accept-charset: Conjunto de caracteres aceptable
Accept-encoding: Codificación de caracteres aceptable
Accept-language: Idiomas aceptables
Authorization: Indicar credenciales de autorización
Cache-control: Especificar directivas para controlar la cache
Connection: Tipo de conexión preferida
Cookie: Cookie enviada previamente por el servidor
Content-length: Longitud de la petición
Content-type: Tipo MIME del cuerpo de la petición
Date: Fecha/hora de la solicitud
If-Modified-Since: Permite enviar código 304 No modificado si no se ha modificado
el contenido desde una fecha
If-None-Match: Permite enviar código 304 No modificado (ETag)
User-Agent: Identifica el tipo agente de usuario utilizado
. . .
Respuestas HTTP
Ejemplo
HTTP/1.1 200 OK
Date: Fri, 17 Nov 2006 15:36:32 GMT
Server: Apache
Last-Modified: Fri, 17 Nov 2006 09:05:32 GMT
Content-length: 43305
Content-type: text/html
<!DOCTYPE html>
<html>
…
</html>
Cabeceras en la respuesta
Content-type: Tipo MIME de la respuesta
Cache-control: Especificar directivas para controlar la cache
Content-encoding: Tipo de codificación utilizado en el mensaje
Content-language: Idioma utilizado en el mensaje
Content-length: Tamaño del mensaje
Content-location: Localización alternativa de los datos devueltos
Date: Fecha/hora de la respuesta
ETag: Identificador de la versión de un recurso
Expires: Fecha a partir de la cual el contenido puede eliminarse de la caché
Server: Identifica el tipo de servidor
Set-cookie: Activa una cookie en el cliente
WWW-Authenticate: Indica el esquema de autentificación a utilizar
. . .
URIs
Recursos
Recurso = Unidad básica de la Web
Cualquier cosa que se identifique con una URI
URI ≠ Recurso ≠ Representación
URI
http://tiempo.com/Asturias/Oviedo
Metadatos:
Content-type: text/html
Datos:
<html>
<head><title>Tiempo</title></head>
<body>
<h1>Tiempo en Oviedo</h1>
<p>Nubes y claros</p>
</body>
</html>
Representación
Recurso
Tiempo en Oviedo
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://www.uniovi.es
<!DOCTYPE html>
<html>
<head>
<title>Universidad de Oviedo</title>
</head>
<body>
<h1>Universidad de Oviedo</h1>
<p>Fundada en el año 1608 en
<a href="http://www.wikipedia.org/Oviedo">
Oviedo</a></p>
. . .
</body>
</html>
identifica
Ejemplo: Una página Web
Una página Web
Recurso de información
Formato HTML
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://www.di.uniovi.es/~labra/images/asturias.jpg
identifica
Ejemplo: Una fotografía (recurso multimedia)
Una fotografía
Recurso de información
Formato JPG
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://www.w3.org/People/Berners-Lee/card#i
identifica
Ejemplo: Una persona
Una persona (Tim Berners-Lee)
Recurso de no información
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://xmlns.com/foaf/0.1/Person
identifica
Ejemplo: Conjunto de todas las personas
Conjunto de Personas (concepto abstracto)
Recurso de no información
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://purl.org/dc/terms/creator
identifica
Ejemplo: Propiedad de creación
Propiedad de creación (concepto abstracto)
Recurso de no información
¿Qué se puede identificar con una URI?
Cualquier cosa concreta o abstracta
http://purl.org/dc/terms
identifica
Ejemplo: Espacio de nombres
Espacio de nombres (concepto)
Recurso de no información
description
language
publisher
. . .
Formato de una URI
Más información: Especificación
http://tools.ietf.org/html/rfc3986
esquema://autoridad camino ?consulta#fragmento
http://ejemplo.com:8042 /libros/castellano?autor=Cervantes #capitulo2
Otros ejemplos de URIs:
ftp://ftp.is.co.za/rfc/rfc1808.txt
mailto:pepe@ejemplo.com
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
Nota: Significado especial de espacios, ?, /, etc.
Nota: las URNs identifican nombres únicos solamente. Sin protocolo
Partes de una URI
Más información: Especificación
http://tools.ietf.org/html/rfc3986
Nota: las URNs identifican nombres únicos solamente. Sin protocolo
esquema autoridad
//usuario@host:port
path querystring fragment
http
http
http
ftp
mailto
urn
//localhost:3000
//google.com
//uniovi.es/
//ftp.is.co.za
pepe@uni.es
isbn:045125021
/about
/
/course/view.php
/rdf/rfc1808.txt
?a=1&b=2
?q=pepe
?id=4590
?subject=Curso
#historia
http://localhost:3000/about?a=1&b=2#historia
http://google.com/?q=pepe
http://uniovi.es/course/view.php?id=4590
ftp://ftp.is.co.za/rdf/rfc1808.txt
mailto:pepe@uni.es?subject=curso
urn:isbn:045125021
Ejemplos
Dereferenciación
Dereferenciar una URI = Acceder al contenido de una URI
Obtener una representación del recurso identificado por la URI
Habitualmente se utiliza protocolo HTTP
Pueden existir diferentes representaciones
La representación puede incluir enlaces a otras URIs con
información relacionada
Principio: Follow your nose (“Sigue tu instinto”)
A partir de una URI, se puede ir encontrando más información y
más recursos relacionados fácilmente y de casualidad
(serendipia)
Estabilidad de las URIs
URIs = pilar fundamental de cualquier aplicación Web
Objetivo: Esquema de URIs estable
Lema: Cool URIs don’t change
Modificar una URI puede romper aplicaciones existentes
Evitar URIs que dependen de detalles de implementación
Ejemplo: http://156.35.41.34:8080/pagina.php
Importancia de nombres adecuados para URIs
http://www.w3.org/Provider/Style/URI
Formatos de Representación
Formatos de representación
En la Web, el formato más habitual es HTML
Existen muchos más formatos: XML, JSON, RDF, PNG, …
Un recurso puede tener diferentes tipos de representación
Cada tipo de representación sirve para un propósito
HTML
Tipo de representación más popular en la Web
Objetivo: representar hipertexto
Ejemplo:
<!DOCTYPE html>
<html>
<head>
<title>Pedido</title>
<meta charset="utf-8" />
</head>
<body>
<h1>Pedido</h1>
<table>
<tr><th>Código</th><th>Nombre</th><th>Cantidad</th><th>Comentarios</th></tr>
<tr><td>R23</td><td>Rotulador RX2</td><td>20</td><td>Comprobad que escriben</td></tr>
<tr><td>G56</td><td>Grapadora Lin</td><td>2</td><td>Envuelta para regalo</td></tr>
</table>
<p>Más información:
<a href="http://empresa.com">Empresa</a>
</body>
</html>
XML
Facilita intercambio de información
Objetivo: procesamiento automático
Comercio electrónico
<?xml version="1.0">
<pedido>
<producto codigo="R23">
<nombre>Rotulador RX2</nombre>
<cantidad>20</cantidad>
<comentarios>Comprobad que escriben</comentarios>
</producto>
<producto codigo="G56">
<nombre>Grapadora Lin</nombre>
<cantidad>2</cantidad>
<comentarios>Envuelta para regalo</comentarios>
</producto>
</pedido>
JSON
Facilita intercambio de información
Objetivo: procesamiento automático
Servicios Web { "pedido": [
{
"type": "producto",
"codigo": "R23",
"nombre": "Rotulador RX2",
"cantidad": 20,
"comentarios": "Comprobad que escriben"
},
{
"type": "producto",
"codigo": "G56",
"nombre": "Grapadora Lin",
"cantidad": 2,
"comentarios": "Envuelta para regalo"
}
]
}
RDF
Permite integración de información
Integración automática de los datos
Objetivo: Evitar ambigüedad en cadenas de texto
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix schema: <http://schema.org/> .
@prefix : <http://example.org/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
:pedido a schema:Order ;
schema:orderedItem [ :code "R23";
schema:name "Rotulador RX2";
rdfs:comment "Comprobad que escriben";
schema:orderQuantity 20 ] ;
schema:orderedItem [ :code "G56";
schema:name "Grapadora Lin";
rdfs:comment "Envuelta para regalo";
schema:orderQuantity 2
] .
Tipos de representación
Los tipos de representación se identifican con MIME
MIME (Multipurpose Internet Mail Extensions)
Identificar el tipo de contenido (Cabecera Content-type)
Formato tipo/subtipo
Ejemplos:
text/html: Página Web en formato HTML
text/xml, application/xml : Documento XML
application/json: Documento JSON
application/pdf: Fichero PDF
image/jpeg: Imagen JPEG
application/xhtml+xml: Documento XHTML
application/rdf+xml: Documento RDF
text/turtle: Documento Turtle
. . .
Lista oficial: http://www.iana.org/assignments/media-types
Funcionamiento de la Web
2 computadores conceptuales: Cliente y Servidor
La representación puede calcularse dinámicamente
Computación en Cliente
Computación en servidor
Usuario Navegador
Cliente
Servidor
URI
Representación
WWW
HTTP
Cliente
También se conoce como Agente de Usuario
Normalmente es un navegador (browser)
Múltiples tipos de agentes de usuarios y navegadores
Navegadores: Internet Explorer, Chrome, Firefox, Lynx, …
Dispositivos móviles
Lectores de pantalla
eBooks
TVs
…
Componentes de un navegador
Interfaz
Analizador
Motor visualización
Intérprete ECMAScript procesa eventos y modifica árbol
Usuario
Navegador
Cliente
URI
Representación
WWW
HTTP
Analizador
Árbol
DOM
Motor
VisualizaciónInterfaz
Usuario
Intérprete
ECMAscript
URI
Componentes de un Servidor
La arquitectura del servidor depende de muchos factores
Descomposición habitual
Vista: Se encarga de preparar la representación
Negocio: Gestión de objetos de negocio
Datos: Modelos de datos
Capa
Vista
Capa
Negocio
URI
Capa
Datos
Representación
URI
WWW
HTTP
Computación en Servidor
Contenido es generado dinámicamente
1. Llega la petición al servidor
2. El servidor analiza parámetros de petición
Verbo (GET, PUT, POST, ...), Ruta (URI), Cabeceras, Entorno
3. Servidor "computa" y envía una respuesta
Usuario Navegador
Cliente
Servidor
URI
Representación
WWW
HTTP
Petición
Respuesta
Método
URI
Headers
Environment
Múltiples alternativas
CGIs
Lenguajes específicos para Web: PHP
Lenguajes dinámicos: Perl, Python, Ruby,...
Javascript en servidor: Nodejs
Lenguajes generales compilados
JVM: Java (JSP, Servlets,...), Scala, Groovy
CLR: C# (ASP.Net), F#, ...
Otros: Frameworks, CMS, etc.
CGI
CGI (Common Gateway Interface), 1.1 (2004)
Método estándar para transmitir parámetros entre
servidor y programas ejecutables
Nombres de variables
SERVER_NAME, SERVER_SOFTWARE, GATEWAT_INTERFACE
SERVER_PROTOCOL, REQUEST_METHOD, QUERY_STRING,
...
Los programas CGIs son ejecutados por el servidor
Devuelve la respuesta de la ejecución
Otras variantes:
FastCGI (optimiza creación de procesos)
PHP
Lenguaje interpretado por el servidor
El código se incrusta en HTML mediante marcas
especiales
Cuando el servidor reconoce código PHP:
Llama al intérprete
Ejecuta el código
Devuelve el resultado
Según w3techs, el 81.1% de los sitios Web utiliza
PHP
Lenguajes dinámicos
Python, Ruby
Lenguajes interpretados de propósito general
Buenos frameworks y librerías para Web
Ruby: Ruby on Rails
Python: Django
...
Javascript lado servidor
Librería Node.js
Incluye V8, el motor Javascript de Google
Permite utilizar Javascript en el servidor
Entrada/Salida basada en eventos
Creciendo en popularidad
Lenguajes generales compilados
2 ecosistemas
Java (JVM) .Net (CLR)
JVM
Máquina virtual de Java
Empotrado: JSP
Servlets y Contenedores de aplicaciones
TOMCAT
Otros lenguajes sobre JVM
Scala, Groovy, ...
Programación políglota!
ASP.Net
Basado en CLR
Máquina virtual de C#
ASP Permite empotrar lenguaje en HTML
Extensión aspx <% .... código %>
Diversos frameworks: ASP.Net MVX
Otras lenguajes:
VB.Net, F#,...
Web Frameworks
Micro-frameworks
Basados en protocol HTTP
Enrutan verbos HTTP (GET, PUT, POST, DELETE) con
acciones
MVC based
Abstracción del modelo de la Web
Separación: Modelo, Vista, Controlador
Pueden utilizar ORMs
Micro-frameworks
PHP: Slim, Silex
Ruby: Sinatra
Python: Flask
Java: Spark,
Scala: Scalatra
Frameworks Web
Numerosos frameworks
PHP: CakePHP, Zend, Symfony
Ruby: Ruby on Rails
Python: Django, Zope
Java: Spring MVC, Play
Scala: Play, Lift
Groovy: Grails
Haskell: Yesod
Más información:
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks

Mais conteúdo relacionado

Mais procurados

HTTP fundamentals for developers
HTTP fundamentals for developersHTTP fundamentals for developers
HTTP fundamentals for developersMario Cardinal
 
Arquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasArquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasanibalsmit
 
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...Edureka!
 
Programacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidorProgramacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidorJose Felix Moran Agusto
 
REST - Representational state transfer
REST - Representational state transferREST - Representational state transfer
REST - Representational state transferTricode (part of Dept)
 
Angular - a real world case study
Angular - a real world case studyAngular - a real world case study
Angular - a real world case studydwcarter74
 
Git flow for daily use
Git flow for daily useGit flow for daily use
Git flow for daily useMediacurrent
 
SOA (arquitectura orientada a servicios)
SOA (arquitectura orientada a servicios)SOA (arquitectura orientada a servicios)
SOA (arquitectura orientada a servicios)dina_k_d
 
Aplicaciones prácticas de las arquitecturas orientadas al servicio
Aplicaciones prácticas de las arquitecturas orientadas al servicioAplicaciones prácticas de las arquitecturas orientadas al servicio
Aplicaciones prácticas de las arquitecturas orientadas al servicioGrial - University of Salamanca
 
Ventajas y desventajas de los servidores apache y IIS
Ventajas y desventajas de los servidores apache y IISVentajas y desventajas de los servidores apache y IIS
Ventajas y desventajas de los servidores apache y IISelianaespinoza
 
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...Daniel Rene FOUOMENE PEWO
 
Webservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTWebservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTPradeep Kumar
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 CapasFani Calle
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 

Mais procurados (20)

HTTP fundamentals for developers
HTTP fundamentals for developersHTTP fundamentals for developers
HTTP fundamentals for developers
 
Patrones Creacionales
Patrones CreacionalesPatrones Creacionales
Patrones Creacionales
 
Arquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasArquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capas
 
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
 
Programacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidorProgramacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidor
 
REST - Representational state transfer
REST - Representational state transferREST - Representational state transfer
REST - Representational state transfer
 
Angular - a real world case study
Angular - a real world case studyAngular - a real world case study
Angular - a real world case study
 
Git flow for daily use
Git flow for daily useGit flow for daily use
Git flow for daily use
 
SOA (arquitectura orientada a servicios)
SOA (arquitectura orientada a servicios)SOA (arquitectura orientada a servicios)
SOA (arquitectura orientada a servicios)
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
Hadoop
HadoopHadoop
Hadoop
 
Aplicaciones prácticas de las arquitecturas orientadas al servicio
Aplicaciones prácticas de las arquitecturas orientadas al servicioAplicaciones prácticas de las arquitecturas orientadas al servicio
Aplicaciones prácticas de las arquitecturas orientadas al servicio
 
Ventajas y desventajas de los servidores apache y IIS
Ventajas y desventajas de los servidores apache y IISVentajas y desventajas de los servidores apache y IIS
Ventajas y desventajas de los servidores apache y IIS
 
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 
Webservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTWebservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and REST
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 Capas
 
Microservices
MicroservicesMicroservices
Microservices
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Git / Guía Básica
Git / Guía BásicaGit / Guía Básica
Git / Guía Básica
 

Semelhante a Arquitectura de la Web y Computación en el Servidor

Semelhante a Arquitectura de la Web y Computación en el Servidor (20)

Tecnologias Web Semantica
Tecnologias Web SemanticaTecnologias Web Semantica
Tecnologias Web Semantica
 
Tecnologias Web Semantica
Tecnologias Web SemanticaTecnologias Web Semantica
Tecnologias Web Semantica
 
Fundamentos de la web
Fundamentos de la webFundamentos de la web
Fundamentos de la web
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació Web
 
1 fundamentos web
1 fundamentos web1 fundamentos web
1 fundamentos web
 
Fundamentos de la web
Fundamentos de la webFundamentos de la web
Fundamentos de la web
 
html
htmlhtml
html
 
Protocolo http
Protocolo httpProtocolo http
Protocolo http
 
Introducción a PHP5
Introducción a PHP5Introducción a PHP5
Introducción a PHP5
 
Servidor web apache
Servidor web apacheServidor web apache
Servidor web apache
 
Tema 3 - Seguridad en Internet
Tema 3 - Seguridad en InternetTema 3 - Seguridad en Internet
Tema 3 - Seguridad en Internet
 
Desarrollo de Aplicaciones Web II - Sesión 02 - Conceptos Generales e Introdu...
Desarrollo de Aplicaciones Web II - Sesión 02 - Conceptos Generales e Introdu...Desarrollo de Aplicaciones Web II - Sesión 02 - Conceptos Generales e Introdu...
Desarrollo de Aplicaciones Web II - Sesión 02 - Conceptos Generales e Introdu...
 
Módulo 0
Módulo 0Módulo 0
Módulo 0
 
Http al descubierto
Http al descubiertoHttp al descubierto
Http al descubierto
 
Http al descubierto
Http al descubiertoHttp al descubierto
Http al descubierto
 
Uri urn url
Uri urn urlUri urn url
Uri urn url
 
Curso HTML CSS 1/4
Curso HTML CSS 1/4Curso HTML CSS 1/4
Curso HTML CSS 1/4
 
PROTOCOLO HTTP
PROTOCOLO HTTPPROTOCOLO HTTP
PROTOCOLO HTTP
 
ASR_Tema_3.pdf
ASR_Tema_3.pdfASR_Tema_3.pdf
ASR_Tema_3.pdf
 
Http
HttpHttp
Http
 

Mais de Jose Emilio Labra Gayo

Introducción a la investigación/doctorado
Introducción a la investigación/doctoradoIntroducción a la investigación/doctorado
Introducción a la investigación/doctoradoJose Emilio Labra Gayo
 
Challenges and applications of RDF shapes
Challenges and applications of RDF shapesChallenges and applications of RDF shapes
Challenges and applications of RDF shapesJose Emilio Labra Gayo
 
Legislative data portals and linked data quality
Legislative data portals and linked data qualityLegislative data portals and linked data quality
Legislative data portals and linked data qualityJose Emilio Labra Gayo
 
Validating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesValidating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesJose Emilio Labra Gayo
 
Legislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesLegislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesJose Emilio Labra Gayo
 
Como publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosComo publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosJose Emilio Labra Gayo
 

Mais de Jose Emilio Labra Gayo (20)

Publicaciones de investigación
Publicaciones de investigaciónPublicaciones de investigación
Publicaciones de investigación
 
Introducción a la investigación/doctorado
Introducción a la investigación/doctoradoIntroducción a la investigación/doctorado
Introducción a la investigación/doctorado
 
Challenges and applications of RDF shapes
Challenges and applications of RDF shapesChallenges and applications of RDF shapes
Challenges and applications of RDF shapes
 
Legislative data portals and linked data quality
Legislative data portals and linked data qualityLegislative data portals and linked data quality
Legislative data portals and linked data quality
 
Validating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesValidating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectives
 
Wikidata
WikidataWikidata
Wikidata
 
Legislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesLegislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologies
 
ShEx by Example
ShEx by ExampleShEx by Example
ShEx by Example
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
Introducción a la Web Semántica
Introducción a la Web SemánticaIntroducción a la Web Semántica
Introducción a la Web Semántica
 
RDF Data Model
RDF Data ModelRDF Data Model
RDF Data Model
 
2017 Tendencias en informática
2017 Tendencias en informática2017 Tendencias en informática
2017 Tendencias en informática
 
RDF, linked data and semantic web
RDF, linked data and semantic webRDF, linked data and semantic web
RDF, linked data and semantic web
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
19 javascript servidor
19 javascript servidor19 javascript servidor
19 javascript servidor
 
Como publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosComo publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazados
 
16 Alternativas XML
16 Alternativas XML16 Alternativas XML
16 Alternativas XML
 
XSLT
XSLTXSLT
XSLT
 
XPath
XPathXPath
XPath
 
RDF validation tutorial
RDF validation tutorialRDF validation tutorial
RDF validation tutorial
 

Último

PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoJosDanielEstradaHern
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxnandoapperscabanilla
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 

Último (20)

Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 

Arquitectura de la Web y Computación en el Servidor

  • 1. Arquitectura de la Web y Computación en el Servidor Jose Emilio Labra Gayo Depto. Informática Universidad de Oviedo
  • 2. Pilares de la Web 3 pilares Interacción: Protocolos HTTP, FTP, SMTP, etc. Identificación: URIs Formatos de representación: HTML, JSON, XML, ... Identificación URI Formatos HTML, JSON,... Identificación URI Interacción Protocolos Formatos HTML, JSON,... WWW
  • 3. Protocolos: HTTP HTTP (Hypertext Transfer Protocol) Versión 0.9 (1991) HTTP 1.0 (1996) desarrollado por HTTP WG (IETF) HTTP/1.1 (1999) RFC 2616 Modo texto Arquitectura de la Web SPDY (2009) Google HTTP/2.0 (2015) Cabeceras comprimidas, formato binario Objetivo: rendimiento
  • 4. Esquema conceptual de HTTP Usuario Navegador Cliente Servidor URI Representación WWW HTTP Petición Respuesta
  • 5. Recursos La Web está formada por recursos Recurso = cualquier fuente de contenido Web Se identifican mediante URIs Diversas Posibilidades: Estáticos: almacenados en Sistema de Ficheros Páginas HTML Otros formatos multimedia: Imágenes, vídeos, sonidos, ... Dinámicos: bajo demanda Generado a partir de bases de datos Integrando información de otros servicios Web Información onlineNOTA: La mayoría de la información disponible en la Web se genera dinámicamente
  • 7. Tipos de recursos Los servidores asocian un tipo a cada recurso Tipos MIME (Multipurpose Internet Mail Extensions) Ejemplos: text/plain, text/html, application/xml, image/jpg,... El cliente decide qué hacer con dichos tipos Usuario Navegador Cliente Servidor Petición Respuesta WWW HTTP Content-type: image/jpeg Content-length: 8854
  • 8. HTTP: Formato de mensajes Modo texto: línea inicial cabecera del mensaje* cuerpo del mensaje ? Navegador Cliente Servidor Petición WWW HTTP HTTP/1.1 200 OK Date: Thu, 12 Oct 2013 09:36:05 GMT Server: Apache Content-length: 80554 Content-type: text/html; charset=utf-8 <html> <head> <title>Curso XML</title> <head> ... </html> GET /index.html HTTP/1.1 Host: www.uniovi.es User-Agent: Mozilla/5.0 … Accept: text/html Accept-language: es, en Respuesta
  • 9. Mensajes de petición Formato general: POST /admin HTTP/1.1 Host: www.uniovi.es User-Agent: Mozilla/5.0 … Accept: text/html Accept-language: es, en ...datos POST... <method> <url> <version> <headers> * <entity-body> GET /index.html HTTP/1.1 Host: www.uniovi.es User-Agent: Mozilla/5.0 … Accept: text/html Accept-language: es, en <headers> = parejas de la forma: nombre1: valor1 nombre2: valor2 <method>= GET,PUT,POST,DELETE,... Ejemplos:
  • 10. HTTP/1.1 200 OK Date: Thu, 12 Oct 2013 09:36:05 GMT Server: Apache Content-length: 80554 Content-type: text/html; charset=utf-8 <html> <head> <title>Curso XML</title> <head> ... </html> Mensajes de respuesta Formato general: HTTP/1.1 404 Not found Content-length: 0 <version> <status> <reason-phrase> <headers> * <entity-body> <Status> Códigos estándar: 2**: Variaciones de OK 3**: redirecciones 4**: Problemas del cliente 5**: problemas del servidor Ejemplos:
  • 11. Utilidades Diversas utilidades curl http://curl.haxx.se/ Hurl http://hurl.it Redbot http://redbot.org Web-sniffer: http://web-sniffer.net/ RestClient http://code.google.com/p/rest-client/ curl http://cursoxml.herokuapp.com Algunas opciones: -v (verbose) -H (cabeceras) -X (verbos POST, PUT, DELETE,...)
  • 12. CURL Ejemplos: curl http://cursoxml.herokuapp.com curl -H "Accept-language:es" http://cursoxml.herokuapp.com curl -H "Accept:text/html" http://cursoxml.herokuapp.com/search?course=html5 curl -H "Accept:application/xml" http://cursoxml.herokuapp.com/search?course=html5 curl -X POST http://cursoxml.herokuapp.com/login -d email="pepe@abc.org" -password="abc"
  • 13. Métodos HTTP GET: Solicita una representación de un recurso PUT: Crear un recurso POST: Envía datos para que un recurso los procese Puede implicar la creación/actualización de recursos DELETE: Elimina un recurso Otros HEAD: Similar a GET, pero obtiene únicamente la cabecera TRACE: Pide la solicitud que se envió al servidor OPTIONS: Solicita los métodos que soporta el servidor CONNECT: Convierte la petición en un túnel TCP/IP Facilita la comunicación a través de SSL
  • 14. Métodos HTTP Propiedades Método Bases de datos* Función Segura? Idempotente? PUT Create Crear recurso No SI POST Update Actualizar No No GET Retrieve Consultar recurso Si Si DELETE Delete Eliminar recurso No Si * Aunque son similares, las operaciones CRUD de bases de datos y los métodos GET, PUT, POST y DELETE de HTTP no son idénticos
  • 15. Cabeceras en la petición Accept: Tipos de representaciones aceptables Accept-charset: Conjunto de caracteres aceptable Accept-encoding: Codificación de caracteres aceptable Accept-language: Idiomas aceptables Authorization: Indicar credenciales de autorización Cache-control: Especificar directivas para controlar la cache Connection: Tipo de conexión preferida Cookie: Cookie enviada previamente por el servidor Content-length: Longitud de la petición Content-type: Tipo MIME del cuerpo de la petición Date: Fecha/hora de la solicitud If-Modified-Since: Permite enviar código 304 No modificado si no se ha modificado el contenido desde una fecha If-None-Match: Permite enviar código 304 No modificado (ETag) User-Agent: Identifica el tipo agente de usuario utilizado . . .
  • 16. Respuestas HTTP Ejemplo HTTP/1.1 200 OK Date: Fri, 17 Nov 2006 15:36:32 GMT Server: Apache Last-Modified: Fri, 17 Nov 2006 09:05:32 GMT Content-length: 43305 Content-type: text/html <!DOCTYPE html> <html> … </html>
  • 17. Cabeceras en la respuesta Content-type: Tipo MIME de la respuesta Cache-control: Especificar directivas para controlar la cache Content-encoding: Tipo de codificación utilizado en el mensaje Content-language: Idioma utilizado en el mensaje Content-length: Tamaño del mensaje Content-location: Localización alternativa de los datos devueltos Date: Fecha/hora de la respuesta ETag: Identificador de la versión de un recurso Expires: Fecha a partir de la cual el contenido puede eliminarse de la caché Server: Identifica el tipo de servidor Set-cookie: Activa una cookie en el cliente WWW-Authenticate: Indica el esquema de autentificación a utilizar . . .
  • 18. URIs
  • 19. Recursos Recurso = Unidad básica de la Web Cualquier cosa que se identifique con una URI URI ≠ Recurso ≠ Representación URI http://tiempo.com/Asturias/Oviedo Metadatos: Content-type: text/html Datos: <html> <head><title>Tiempo</title></head> <body> <h1>Tiempo en Oviedo</h1> <p>Nubes y claros</p> </body> </html> Representación Recurso Tiempo en Oviedo
  • 20. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://www.uniovi.es <!DOCTYPE html> <html> <head> <title>Universidad de Oviedo</title> </head> <body> <h1>Universidad de Oviedo</h1> <p>Fundada en el año 1608 en <a href="http://www.wikipedia.org/Oviedo"> Oviedo</a></p> . . . </body> </html> identifica Ejemplo: Una página Web Una página Web Recurso de información Formato HTML
  • 21. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://www.di.uniovi.es/~labra/images/asturias.jpg identifica Ejemplo: Una fotografía (recurso multimedia) Una fotografía Recurso de información Formato JPG
  • 22. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://www.w3.org/People/Berners-Lee/card#i identifica Ejemplo: Una persona Una persona (Tim Berners-Lee) Recurso de no información
  • 23. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://xmlns.com/foaf/0.1/Person identifica Ejemplo: Conjunto de todas las personas Conjunto de Personas (concepto abstracto) Recurso de no información
  • 24. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://purl.org/dc/terms/creator identifica Ejemplo: Propiedad de creación Propiedad de creación (concepto abstracto) Recurso de no información
  • 25. ¿Qué se puede identificar con una URI? Cualquier cosa concreta o abstracta http://purl.org/dc/terms identifica Ejemplo: Espacio de nombres Espacio de nombres (concepto) Recurso de no información description language publisher . . .
  • 26. Formato de una URI Más información: Especificación http://tools.ietf.org/html/rfc3986 esquema://autoridad camino ?consulta#fragmento http://ejemplo.com:8042 /libros/castellano?autor=Cervantes #capitulo2 Otros ejemplos de URIs: ftp://ftp.is.co.za/rfc/rfc1808.txt mailto:pepe@ejemplo.com telnet://192.0.2.16:80/ urn:oasis:names:specification:docbook:dtd:xml:4.1.2 Nota: Significado especial de espacios, ?, /, etc. Nota: las URNs identifican nombres únicos solamente. Sin protocolo
  • 27. Partes de una URI Más información: Especificación http://tools.ietf.org/html/rfc3986 Nota: las URNs identifican nombres únicos solamente. Sin protocolo esquema autoridad //usuario@host:port path querystring fragment http http http ftp mailto urn //localhost:3000 //google.com //uniovi.es/ //ftp.is.co.za pepe@uni.es isbn:045125021 /about / /course/view.php /rdf/rfc1808.txt ?a=1&b=2 ?q=pepe ?id=4590 ?subject=Curso #historia http://localhost:3000/about?a=1&b=2#historia http://google.com/?q=pepe http://uniovi.es/course/view.php?id=4590 ftp://ftp.is.co.za/rdf/rfc1808.txt mailto:pepe@uni.es?subject=curso urn:isbn:045125021 Ejemplos
  • 28. Dereferenciación Dereferenciar una URI = Acceder al contenido de una URI Obtener una representación del recurso identificado por la URI Habitualmente se utiliza protocolo HTTP Pueden existir diferentes representaciones La representación puede incluir enlaces a otras URIs con información relacionada Principio: Follow your nose (“Sigue tu instinto”) A partir de una URI, se puede ir encontrando más información y más recursos relacionados fácilmente y de casualidad (serendipia)
  • 29. Estabilidad de las URIs URIs = pilar fundamental de cualquier aplicación Web Objetivo: Esquema de URIs estable Lema: Cool URIs don’t change Modificar una URI puede romper aplicaciones existentes Evitar URIs que dependen de detalles de implementación Ejemplo: http://156.35.41.34:8080/pagina.php Importancia de nombres adecuados para URIs http://www.w3.org/Provider/Style/URI
  • 31. Formatos de representación En la Web, el formato más habitual es HTML Existen muchos más formatos: XML, JSON, RDF, PNG, … Un recurso puede tener diferentes tipos de representación Cada tipo de representación sirve para un propósito
  • 32. HTML Tipo de representación más popular en la Web Objetivo: representar hipertexto Ejemplo: <!DOCTYPE html> <html> <head> <title>Pedido</title> <meta charset="utf-8" /> </head> <body> <h1>Pedido</h1> <table> <tr><th>Código</th><th>Nombre</th><th>Cantidad</th><th>Comentarios</th></tr> <tr><td>R23</td><td>Rotulador RX2</td><td>20</td><td>Comprobad que escriben</td></tr> <tr><td>G56</td><td>Grapadora Lin</td><td>2</td><td>Envuelta para regalo</td></tr> </table> <p>Más información: <a href="http://empresa.com">Empresa</a> </body> </html>
  • 33. XML Facilita intercambio de información Objetivo: procesamiento automático Comercio electrónico <?xml version="1.0"> <pedido> <producto codigo="R23"> <nombre>Rotulador RX2</nombre> <cantidad>20</cantidad> <comentarios>Comprobad que escriben</comentarios> </producto> <producto codigo="G56"> <nombre>Grapadora Lin</nombre> <cantidad>2</cantidad> <comentarios>Envuelta para regalo</comentarios> </producto> </pedido>
  • 34. JSON Facilita intercambio de información Objetivo: procesamiento automático Servicios Web { "pedido": [ { "type": "producto", "codigo": "R23", "nombre": "Rotulador RX2", "cantidad": 20, "comentarios": "Comprobad que escriben" }, { "type": "producto", "codigo": "G56", "nombre": "Grapadora Lin", "cantidad": 2, "comentarios": "Envuelta para regalo" } ] }
  • 35. RDF Permite integración de información Integración automática de los datos Objetivo: Evitar ambigüedad en cadenas de texto @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix schema: <http://schema.org/> . @prefix : <http://example.org/> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . :pedido a schema:Order ; schema:orderedItem [ :code "R23"; schema:name "Rotulador RX2"; rdfs:comment "Comprobad que escriben"; schema:orderQuantity 20 ] ; schema:orderedItem [ :code "G56"; schema:name "Grapadora Lin"; rdfs:comment "Envuelta para regalo"; schema:orderQuantity 2 ] .
  • 36. Tipos de representación Los tipos de representación se identifican con MIME MIME (Multipurpose Internet Mail Extensions) Identificar el tipo de contenido (Cabecera Content-type) Formato tipo/subtipo Ejemplos: text/html: Página Web en formato HTML text/xml, application/xml : Documento XML application/json: Documento JSON application/pdf: Fichero PDF image/jpeg: Imagen JPEG application/xhtml+xml: Documento XHTML application/rdf+xml: Documento RDF text/turtle: Documento Turtle . . . Lista oficial: http://www.iana.org/assignments/media-types
  • 37. Funcionamiento de la Web 2 computadores conceptuales: Cliente y Servidor La representación puede calcularse dinámicamente Computación en Cliente Computación en servidor Usuario Navegador Cliente Servidor URI Representación WWW HTTP
  • 38. Cliente También se conoce como Agente de Usuario Normalmente es un navegador (browser) Múltiples tipos de agentes de usuarios y navegadores Navegadores: Internet Explorer, Chrome, Firefox, Lynx, … Dispositivos móviles Lectores de pantalla eBooks TVs …
  • 39. Componentes de un navegador Interfaz Analizador Motor visualización Intérprete ECMAScript procesa eventos y modifica árbol Usuario Navegador Cliente URI Representación WWW HTTP Analizador Árbol DOM Motor VisualizaciónInterfaz Usuario Intérprete ECMAscript URI
  • 40. Componentes de un Servidor La arquitectura del servidor depende de muchos factores Descomposición habitual Vista: Se encarga de preparar la representación Negocio: Gestión de objetos de negocio Datos: Modelos de datos Capa Vista Capa Negocio URI Capa Datos Representación URI WWW HTTP
  • 41. Computación en Servidor Contenido es generado dinámicamente 1. Llega la petición al servidor 2. El servidor analiza parámetros de petición Verbo (GET, PUT, POST, ...), Ruta (URI), Cabeceras, Entorno 3. Servidor "computa" y envía una respuesta Usuario Navegador Cliente Servidor URI Representación WWW HTTP Petición Respuesta Método URI Headers Environment
  • 42. Múltiples alternativas CGIs Lenguajes específicos para Web: PHP Lenguajes dinámicos: Perl, Python, Ruby,... Javascript en servidor: Nodejs Lenguajes generales compilados JVM: Java (JSP, Servlets,...), Scala, Groovy CLR: C# (ASP.Net), F#, ... Otros: Frameworks, CMS, etc.
  • 43. CGI CGI (Common Gateway Interface), 1.1 (2004) Método estándar para transmitir parámetros entre servidor y programas ejecutables Nombres de variables SERVER_NAME, SERVER_SOFTWARE, GATEWAT_INTERFACE SERVER_PROTOCOL, REQUEST_METHOD, QUERY_STRING, ... Los programas CGIs son ejecutados por el servidor Devuelve la respuesta de la ejecución Otras variantes: FastCGI (optimiza creación de procesos)
  • 44. PHP Lenguaje interpretado por el servidor El código se incrusta en HTML mediante marcas especiales Cuando el servidor reconoce código PHP: Llama al intérprete Ejecuta el código Devuelve el resultado Según w3techs, el 81.1% de los sitios Web utiliza PHP
  • 45. Lenguajes dinámicos Python, Ruby Lenguajes interpretados de propósito general Buenos frameworks y librerías para Web Ruby: Ruby on Rails Python: Django ...
  • 46. Javascript lado servidor Librería Node.js Incluye V8, el motor Javascript de Google Permite utilizar Javascript en el servidor Entrada/Salida basada en eventos Creciendo en popularidad
  • 47. Lenguajes generales compilados 2 ecosistemas Java (JVM) .Net (CLR)
  • 48. JVM Máquina virtual de Java Empotrado: JSP Servlets y Contenedores de aplicaciones TOMCAT Otros lenguajes sobre JVM Scala, Groovy, ... Programación políglota!
  • 49. ASP.Net Basado en CLR Máquina virtual de C# ASP Permite empotrar lenguaje en HTML Extensión aspx <% .... código %> Diversos frameworks: ASP.Net MVX Otras lenguajes: VB.Net, F#,...
  • 50. Web Frameworks Micro-frameworks Basados en protocol HTTP Enrutan verbos HTTP (GET, PUT, POST, DELETE) con acciones MVC based Abstracción del modelo de la Web Separación: Modelo, Vista, Controlador Pueden utilizar ORMs
  • 51. Micro-frameworks PHP: Slim, Silex Ruby: Sinatra Python: Flask Java: Spark, Scala: Scalatra
  • 52. Frameworks Web Numerosos frameworks PHP: CakePHP, Zend, Symfony Ruby: Ruby on Rails Python: Django, Zope Java: Spring MVC, Play Scala: Play, Lift Groovy: Grails Haskell: Yesod Más información: http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks