# Aplicació web

En enginyeria de programari, una aplicació web és una aplicació a la que s'accedeix utilitzant com a client un navegador web usant el protocol TCP/IP, ja sigui a través d'internet o d'una intranet.
Les aplicacions web són populars gràcies a la ubiqüitat del client, que acostuma a ser un navegador i se'l classifica com client lleuger. La principal característica de les aplicacions web és la seva capacitat de mantenir i actualitzar aplicacions web sense haver d'instal·lar-les sobre una quantitat indeterminada d'ordinadors client. Es fan servir per actualitzar els continguts d'un web, mantenir bases de dades, generar informació rellevant, vendre productes, jugar, així com qualsevol aplicació que es pugui portar a terme sobre un navegador.
Una aplicació web també pot ser accedida per un client a mida, el qual pot guanyar en usabilitat o incorporar funcionalitats que facilitin el seu ús o disminueixin els trànsit de dades i la càrrega del servidor.

## Motivació

Generalment cada plana enviada per un servidor web és enviada al client en un document estàtic, aconseguint també una experiència d'interactivitat amb l'enviament de seqüències de pàgines, en resposta a invocacions de l'usuari. En una aplicació web les planes també poden ser dinàmiques i l'usuari pot decidir quines dades envia, en forma de paràmetres, generalment amb l'ús de formularis. Si l'usuari demana dades que estan en una base de dades (o que el servidor pot demanar d'una altra manera), està disposant remotament de tota la potència d'accés a les dades que té el servidor, només complint el generalitzat requeriment d'un navegador web amb connexió a internet.

## Història

A les primeres tipologies d'arquitectures client-servidor cada aplicació tenia el seu propi programa client que feia la tasca d'interfície d'usuari i havia d'estar instal·lada separadament per cada ordinador personal. Una millora a la part del servidor podia implicar una reinstal·lació a cada estació de treball incrementant el cost de suport i decrementant la productivitat.
Un cop dissenyat el protocol HTTP, que va implicar el desenvolupament de navegadors web i que, ja des del principi, suportava enviament de paràmetres des del client cap al servidor, es va obrir la possibilitat de programar els primers CGIs, uns petits aplicatius en C que representaven els precursors de les aplicacions web.
En ser usats llenguatges que no disposaven de llibreries pensades en el món web, els CGIs no eren productius quant a desenvolupament ni quant a rendiment. A partir d'aquí Sun va desenvolupar la tecnologia de Servlets. Aquests tenien des del principi tres qualitats que van determinar la seva popularitat entre els programadors, per damunt de qualsevol de les ofertes del moment:
* Eren multiplataforma. Això implicava que qualsevol servidor podia suportar un servlet (Escriu un cop, executa arreu). Això va seduir els programadors perquè seguia la línia del protocol TCP/IP, que és independent de la plataforma.
* Corrien sobre un sol procés. Mentre cada invocació de cada client a un servidor implicava un nou procés, els servlets corrien tots sobre el mateix procés o conjunt de processos. El guany en rendiment era gran quan hi havia diverses peticions simultànies.
* Incorporaven una completa API pensada en l'HTTP, donant eines molt completes als programadors.
Paral·lelament d'altres companyies com Borland o Microsoft van començar a desenvolupar les seves tecnologies de la part servidora. Microsoft, líder en entorns de desenvolupament d'aplicacions locals, amb la seva tecnologia .NET, uns pocs anys endarrerit va oferir eines que augmentaven notablement la productivitat d'aplicacions web vers les seves anteriors ofertes.
Posteriorment, l'aposta de Microsoft pels Serveis web ha donat una empenta a aquesta nova tecnologia d'intercanvi de dades entre servidors, alhora que marcava la diferència respecte als seus competidors.
Eines com AJAX han donat impuls a les aplicacions web, incrementant la usabilitat dels navegadors, requeriment imprescindible per oferir una eina al públic general.
Tot això ha portat al punt actual, el web 2.0, que trasllada la construcció dels webs als usuaris, que poden enviar els seus coneixements i les seves inquietuds i emmagatzemar-los a una base de dades des d'un entorn apte per la seva implicació.

## Interfície

La interfície Web posa molt pocs límits a les funcionalitats del client. Usant Applets de Java, JavaScript, DHTML, Flash i d'altres tecnologies és possible desenvolupar mètodes específics de cada aplicació com dibuixar, reproduir audio o el drag and drop. S'han fet molts esforços en combinar les possibilitats d'aquestes tecnologies per, des d'estalviar recàrregues de pàgines, fins a maximitzar l'amigabilitat de la part client fins a portar-lo a l'aparença d'un sistema operatiu.

## Consideracions tècniques

El primer avantatge dels clients web és que són multiplataforma i el seu comportament se suposa que és idèntic arreu dels diferents sistemes operatius. Però aquest supòsit esdevé un handicap pels desenvolupadors que es troben amb la necessitat de provar i adaptar els seus productes degut a l'incompliment dels estàndards per part dels fabricant de navegadors. És un problema menor el fet que els usuaris disposen de diferents mides de pantalla o es configuren les seves pròpies mides de lletra, podent minvar la correcta visualització d'una plana web. L'alternativa d'usar Flash o applets poden estalviar part d'aquests problemes. Com que molts navegadors incorporen els plug-ins necessaris per executar aquestes aplicacions i aquests no pateixen els problemes del no acompliment d'estàndards, es pot considerar que el resultat és prou uniforme arreu de les diferents plataformes. Tenen l'afegit, que donen un gran control al programador sobre la interfície de l'usuari. Aquestes aplicacions es troben a cavall de la consideració entre un client 'babau' i un de personalitzat. Per això s'ha creat un terme que els defineix : "Rich Internet Application"

### Avantatges i inconvenients

Quant al desenvolupament d'aplicacions web, aquests són els avantatges:
* Els desenvolupadors web poden usar les seves pròpies eines.
* Es poden usar els coneixements i les habilitats que ja es tinguin quant a disseny i desenvolupament web.
* L'aplicació funcionarà en qualsevol dispositiu que tingui un navegador web.
* Es poden solucionar errors en temps real.
* El cicle de desenvolupament és més ràpid.
Els inconvenients del desenvolupament d'aplicacions web són els següents:
* No es pot accedir a totes les característiques del dispositiu mòbil.
* Pot ser difícil aconseguir efectes sofisticats en la interfície d'usuari.

## Estructura

Tot i que hi ha moltes variacions possibles, una aplicacio Web s'estructura habitualment com una aplicació de tres capes. En aquesta forma majoritària, un navegador Web és la primera capa, des del punt de vista de l'usuari. Un motor que usa una tecnologia de contingut Web (com ara ASP, ASP.NET, CGI, ColdFusion, JSP/Java, PHP, Python o Ruby on Rails), és la capa intermèdia. La tercera capa és un servidor de bases de dades. El navegador web envia peticions a la capa intermèdia, que les serveix fent queries i actualitzacions contra la base de dades i genera una resposta a l'usuari.

## Proveïdor de serveis d'aplicació

Una estratègia d'emergència per empreses de software és la de proveir accés web a programari prèviament distribuït com aplicacions locals. Depenent del tipus d'aplicació, potser caldria el desenvolupament d'una interfície basada en navegador completament diferent, o simplement adaptar una aplicació existent per usar tecnologia de presentació diferent. Aquests programes permeten a l'usuari pagar una quota mensual o anual per usar sense haver-la d'instal·lar al disc dur. Una empresa que segueix aquesta estratègia és un proveïdor de serveis d'aplicació. Aquesta branca de la indústria està rebent molta atenció actualment.

## Desenvolupament d'aplicacions web

Existeixen molts entorns per les aplicacions web, que faciliten un desenvolupament ràpid d'aplicacions permetent al programador definir una descripció d'alt nivell del programa. A més, hi ha vistes al desenvolupament d'aplicacions, encara que actualment no hi ha moltes plataformes que facin viable aquest model.
L'ús d'entorns d'aplicació web pot sovint reduir el nombre d'errors en un programa, ambdues fent que el codi sigui més simple, i permetent que un equip es concentri només en el marc. Els problemes de seguretat causats per errors al programa són una qüestió important en aplicacions que estan exposades a constants atacs de hackers a través d'internet,. Els entorns també promouen l'ús de les millors pràctiques de programació.
El Web Apllication Consortium (WASC), CGI Security i OWASP són projectes desenvolupats amb la intenció de documentar com evitar problemes de seguretat en aplicacions web.

## Vegeu també

| AJAX ASP (Active Server Pages) Application service provider (Application Service Provider) Alpha Five ASP.NET Cascading Style Sheets ColdFusion Content management framework DHTML HTML Dynamic web document JavaScript | JSP Ruby on Rails Perl PHP Python Desenvolupament de programari Web 2.0 Informàtica al núvol Programari com a servei Web application framework Serveis web Llista d'entorns d'aplicació web World Wide Web Consortium (estàndards web) Metodologia araneus |

## Referències

* 1 2 Morillo Pozo, Julián David. «Aplicacions web i aplicacions natives». Tecnologia i desenvolupament en dispositius mòbils. UOC. [Consulta: 26 agost 2014].

## Enllaços externs

* Com Microsoft va perdre la guerra de les APIs (anglès)
* Web Applications 1.0 (anglès)
* Directes per l'altre camí (anglès)
* Web Client Software Factory (anglès)