Introducción aos Servizos Web

De Wiki do Ciclo ASIR do IES de Rodeira
Saltar á navegación Saltar á procura

O Protocolo HTTP

Cando utilizamos un navegador Web, o proceso de traballo é o seguinte:

1. Escribimos unha URL dunha páxina, por exemplo: http://servidor.dominio.com/lista.html 2. O navegador envía unha solicitude á máquina servidor.dominio.com, indicándolle que queremos recibir o documento lista.html. 3. O software de servicio web (servidor Web) executándose en servidor.dominio.com recibe a petición, carga o documento e o envía á máquina que o solicitou. 4. O navegador Web que solicitou o documento, o recibe e o pinta na pantalla según lle indica a linguaxe de marcas XHTML presente no documento.

Como podemos observar, neste tipo de comunicación existen dúas partes diferenciadas: Unha que solicita un servicio (unha páxina), e outra que ofrece ese servicio (a páxina). O software que solicita servicios denomínase ''cliente, mentras que o que os ofrece chámase servidor. A comunicación entre sistemas que empregan este esquema chámase cliente/servidor, e é maioritaria en Internet. Os servicios web, ftp, ou o correo electrónico empregan este esquema.

En outros tipos de comunicación o software que se comunica incorpora a mesma funcionalidade, sin existir dúas partes diferenciadas en canto a ofrecer ou solicitar servicios. Neses casos falamos de comunicación P2P, peer to peer, ou comunicación entre pares.

No caso concreto das páxinas Web, os clientes denomínanse navegadores Web (firefox, IE, chrome, Opera...), e os servidores servidores Web (Apache, IIS, light-httpd, comanche...) e para comunicarse (realizar as peticións e enviar as respostas) empregan un protocolo denominado HTTP (Hypertext Transfer Protocol).

Boxinfo info.png
Por ser http un protocolo de uso común e estar aberto habitualmente ao acceso externo, existen múltiples servicios que empregan este protocolo para ofrecer servicios en Internet, son os chamados Servizos Web

Tecnoloxías de Programación Web

A simple transferencia de hipertexto (texto que fai referencia ou enlaza outro texto) non proporciona a funcionalidade que hoxe en día se precisa nas páxinas web. É necesario que o usuario poda interactuar coa páxina que está visualizando para facer tarefas concretas. Para cumplir este obxectivo é necesaria unha linguaxe de programación que permita procesar as accións do usuario e a información suministrada para conseguir o resultado desexado.

A este nivel podemos distinguir entre dúas tipoloxías diferenciadas en canto ao lugar de execución: As Tecnoloxías de Programación no Servidor, e as Tecnoloxías de programación no cliente.

Tecnoloxías de programación no servidor

Unha das primeiras solucións atopadas a este problema foi dotar aos servidores Web da capacidade de invocar a execución de programas externos sobre a petición dun cliente. Deste xeito, o cliente introduciría información nun formulario HTML que indicaría ao servidor a aplicación encargada de procesala. O servidor web se encargaría de lanzar a execución dese programa enviándolle como argumentos a información recibida a través dun protocolo denominado CGI (Common Gateway Interface)'. A saída producida pola execución da aplicación se redirixe de volta hacia o cliente (as aplicacións a ser executadas como CGI normalmente visualizan HTML). Con este sistema é posible crear programas utilizando calqueira linguaxe de programación capaz de encargarse do procesamento da información suministrada aos servidores web.

Mais adiante, desenvolvéronse linguaxes interpretados (scripting) co obxectivo de realizar esta mesma función. Os servidores web incorporan como funcionalidade (normalmente cun módulo) a posibilidade de interpretar código incluído nas propias páxinas e producir unha páxina web resultado que se envía ao navegador. Existen diversas linguaxes dispoñibles para o seu uso en scripts web, sendo o máis popular PHP. Unha tecnoloxía simple de este tipo incorporada na maioría dos servidores Web son os Server Side Includes (SSI) , que permiten un certo grao de lóxica de programación e a invocación a aplicacións e comandos externos.

Estas solucións son apropiadas para a realización de pequenas aplicacións, xa que permiten un rápido desplegue, pero a medida que a complexidade da aplicación aumenta, resulta máis difícil o seu mantemento. En particular, resulta complexo vincular a execución da aplicación a todos os clientes que a están a utilizar nun instante determiñado, xa que en realidade únicamente se están a executar scripts independentes en cada petición.

Coa idea de simplificar o mantemento das aplicacións e aumentar a súa velocidade de execución xurdiron os servidores de aplicacións. Os servidores de aplicacións ofrecen un entorno onde os clientes poden acceder a unha “aplicación” (entorno de aplicación). En cada petición non se executan scripts independentes, se non que son atendidas por unha aplicación que está funcionando permantentemente no sistema, deste xeito e moi fácil que a acción dun cliente sexa inmediatamente percibida polos demáis. A diferencia das linguaxes de script ou dos CGI, os servidores de aplicacións non precisan dun servidor web, se non que eles mesmos ademáis de encargarse da execución da aplicación poden servir páxinas HTML estáticas. Os máis populares hoxe en día son Tomcat, basado en JAVA e IIS basado en .NET.

Como resumo, as vantaxes e inconvenientes destas tecnoloxías son as seguintes:

CGI
Vantaxes:
  • Pódense realizar en calqueira linguaxe de programación, compilada ou interpretada.
  • As linguaxes compiladas execútanse a gran velocidade, sendo axeitados para a execución de procesos que requiren grande capacidade de cómputo.
  • Os CGI teñen acceso ao sistema como unha aplicación máis, cos privilexios otorgados polo servidor web.
Inconvenientes:
  • E necesario crear un proceso por cada nova petición (e poden ser moitas por segundo), e a creación de procesos é lenta, o que fai que esta tecnoloxía non sexa axeitada para sistemas que reciben moitas peticións/sg. O uso de fastCGI permite aliviar este problema.
  • O que o CGI teña pleno acceso ao sistema pode dar lugar a erros de seguridade.
Scripting
Vantaxes:
  • A execución dos scripts non precisa de creación de novos procesos, polo que son máis eficaces procesando un gran número de peticións que os CGI.
  • Permiten un desenvolvemento e implantación moi rápido.
  • A execución do script está restrinxida ao servidor web.
  • Facilidade de administración.
Inconvenientes:
  • A execución dos scripts é máis lenta que a dos programas nativos, sendo máis lentos para tarefas de cálculo intensivo.
  • E necesario unha gran disciplina para a realización de aplicacións mantibles, xa que facilitan moito o desenvolvemento rápido e “sobre a marcha” sen un deseño previo.
Servidores de Aplicacións
Vantaxes:
  • As aplicacións son normalmente fácilmente mantibles e ampliables, xa que o sistema obliga a un deseño previo.
  • Proporciónase un entorno de aplicación que facilita a comunicación entre distintos clientes da aplicación.
  • E fácil producir código reutilizable para outros propósitos.
  • Maior velocidade de execución, sobre todo en aplicacións con gran número de peticións ou con cálculo intensivo.
Inconvenientes:
  • Maior traballo de implantación. É necesario un deseño previo da aplicación e a creación da infraestructura para a mesma.
  • Maior complexidade na administración do servidor.
  • Necesidade dun software servidor de aplicacións.

Tecnoloxías de programación no cliente

Coa programación no servidor, solucionáronse a maior parte de necesidades nas aplicacións Web, pero en moitas ocasións aínda que xa se dispuña no cliente da información necesaria, era necesario o envío dunha petición ao servidor e a carga dunha nova páxina para a realización de tarefas simples, como por exemplo o desplegue dun menú, ou a comprobación dunha letra do DNI.

Para solucionar este problema, Netscape incorporou ao seu cliente web (navegador ou browser) a posibilidade de executar scripts incluídos nas propias páxinas mediante unha nova etiqueta <script> dando lugar a linguaxe JavaScript. Esta linguaxe foi adoptada mais tarde por todos os navegadores dando lugar a un estándar, do que JavaScript é un dialecto: ECMAScript.

Hoxe en día JavaScript é unha linguaxe de programación con orientación a obxectos que permite a realización de aplicacións complexas, aínda que a súa misión principal é reaccionar aos distintos eventos producidos polo usuario na páxina web modificando o seu aspecto(DHTML ou HTML Dinámico), ou validar as entradas dos formularios antes do seu envío ao servidor para ser procesados.

Existen ademáis librerías de fucións e obxectos JavaScript que permiten realizar tarefas complexas de uso común dun xeito simple, sendo a máis coñecida e utilizada JQuery.

Boxinfo info.png
O HTML Dinámico ou DHTML consiste no emprego de JavaScript para alterar o HTML da páxina dinámicamente en resposta a distintos eventos, normalmente producidos polo usuario (clicks en botóns, movimentos do rato, etc).

Outras tecnoloxías de programación no cliente consisten na descarga do servidor web dunha aplicación que posteriormente é executada empotrada no navegador mediante o uso dun plugin. Os applets JAVA e Flash son os exemplos máis comúns destas tecnoloxías. Os sistemas Windows permiten tamén a descarga e execución no sistema (en lugar de facelo dentro de un plugin no navegador) de aplicacións dun servidor mediante compoñentes ActiveX. A execución de aplicacións provintes do servidor no sistema do cliente pode supoñer un risco para a integridade do sistema, polo que se recurre á firma criptográfica das aplicacións e a solicitude de autorización de execución por parte do usuario.