IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Alert.png Aquesta wiki forma part dels materials d'un curs
Curs: Eines web
Fitxers: No hi ha
Repositori SVN:
Usuari: anonymous
Paraula de pas: sense paraula de pas
Autors: Sergi Tur Badenas

Tecnologies web

Arquitectura multicapa. Aplicacions de 3 capes

Gràfica d'una aplicació genèrica de 3 capes

L' arquitectura de tres capes (en anglès Three-tier) és una arquitectura Client-Servidor en la qual la interfície d'usuari, el model (o també anomenat lògica de negoci), i les dades són desenvolupades i mantingudes com a mòduls independents i/o fins i tot en plataformes computacionals diferents.

Les tres capes són:

  • Capa de presentació (Presentation Tier): This is the topmost level of the application. The presentation tier displays information related to such services as browsing merchandise, purchasing, and shopping cart contents. It communicates with other tiers by outputting results to the browser/client tier and all other tiers in the network.
  • Capa d'aplicació/Capa de Model/Business Logic: Com podeu veure té múltiples noms, entre d'altres logic tier, data access tier, o middle tier: The logic tier is pulled out from the presentation tier and, as its own layer, it controls an application’s functionality by performing detailed processing.
  • Capa de dades(Data tier): This tier consists of database servers. Here information is stored and retrieved. This tier keeps data neutral and independent from application servers or business logic. Giving data its own tier also improves scalability and performance.


El model de tres capes és una arquitectura de software molt utilitzada i també és un patró de disseny molt utilitzat.

Més enllà dels avantatges típics del desenvolupament modular, un dels objectius del model de tres capes és permetre que qualsevol de les tres capes pugui ser actualitzada o fins i tot reemplaçada sense que això afecti al conjunt de l'aplicació. Un clar exemple són les aplicacions web, en les quals un canvi de sistema operatiu o de navegador web a l'entorn client (capa de presentació) no afecta al correcte funcionament de l'aplicació. Aquests tipus d'aplicacions faciliten el treball multiplataforma.

Típicament la interfície d'usuari s'executa a una estació de treball o PC d'escriptori (Desktop Computer). En aquesta estació de treball es pot utilitzar una aplicació específica de software per a la capa de presentació o en el cas d'aplicacions web és pot utilitzar una aplicació estàndard, és a dir un navegador web.

Servidors d'aplicacions

LAMP

Consulteu LAMP

Java

Consulteu Contenedors de Servlets

Vegeu també:

Python. Zope

Vegeu també:

TODO:

.Net

TODO:

Vegeu

Altres

Entorns de treball

Entorn de desenvolupament

En aplicacions web a l'hora de desenvolupar és sol fer en entorn separat de l'entorn final (entorn d'aplicació) on realment s'executarà l'aplicació. Això de fet és així en gairebé qualsevol aplicació mitjanament seriosa, però és especialment important en aplicacions web pel fet de que aquestes estan connectades a Internet i per tant qualsevol problema o canvi en l'entorn d'explotació és molt més "visible".

En sistemes operatius Windows és força comú utilitzar aplicacions WAMP o tipus XAMP que faciliten la instal·lació i configuració d'un entorn LAMP.

En GNU/Linux i particularment a Ubuntu no cal que utilitzeu aquest tipus d'eines ja que podeu disposar d'un entorn LAMP de forma molt senzilla instal·lant un paquet especial (tasca) anomenat lamp-server:

$ sudo tasksel install lamp-server

Consulteu l'article LAMP.

Vegeu també:

Entorn d'explotació

A Linux i particularment a Ubuntu no hi haurà un especial diferència entre els sistemes que utilitzeu per a proves i per a explotació.

NOTA: Que els sistemes utilitzats per a proves o explotació siguin molt similars no vol dir ni de bon tros que hagin de ser el mateix sistema, de fet és imperatiu que els sistemes/ordinadors siguin diferents

Normalment l'entorn de proves és un entorn d'escriptori i s'utilitzen versions de Linux d'escriptori i amb entorn gràfic (p. ex. Ubuntu Desktop).

A l'entorn d'explotació utilitzeu una sistema operatiu preparat per treballar en aquest tipus d'entorns, és a dir una distribució de servidor com per exemple Ubuntu Server.

IMPORTANT: Treballar amb un entorn de servidor no implica necessàriament no disposar d'entorn gràfic. Es pot instal·lar un entorn gràfic a una versió de servidor com per exemple Ubuntu Server. Ara bé, no utilitzeu mai una versió d'escriptori per a un servidor ja que el nucli del sistema operatiu (linux) de una versió de servidor està especialment preparada/compilada per treballar en un entorn de servidor on les aplicacions que s'executen són molt diferents de les aplicacions que s'executen en un entorn d'escriptori.

Instal·lar un entorn gràfic a un entorn d'explotació

Es pot fer instal·lant un tasca amb tasksel:

$ sudo tasksel install ubuntu-desktop

Com podem activar l'entorn gràfic només quan el necessitem?

L'entorn gràfic és gestionat pel que s'anomena Gestors de pantalla o Display Managers. En el cas de l'entorn d'escriptori Gnome el gestor de pantalla és Gnome Display Manager (GDM). GDM és l'eina que inicia la sessió.

Podeu reiniciar (compte guardeu el que tingueu pendent de guardar) l'entorn gràfic de Gnome amb:

$ sudo /etc/init.d/gdm restart

Si esteu en un entorn de servidor i només teniu la línia d'ordres, si prèviament heu instal·lat l'entorn gràfic amb:

$ sudo tasksel install ubuntu-desktop

Aleshores podeu iniciar l'entorn gràfic amb:

$ sudo /etc/init.d/gdm start

La recomanació és que inicieu l'entorn gràfic només quan el necessiteu. En el moment que abandoneu el servidor i el deixeu treballant en segon pla sense cap sessió interactiva de treball atureu l'entorn gràfic amb:

$ sudo /etc/init.d/gdm stop

Recordeu que podeu utilitzar les consoles virtuals (Ctrl+Alt+FX) per obtenir una consola no gràfica. Per què atura l'entorn gràfic:

  • Menys consum de recursos del sistema --> Més recursos disponibles per als serveis que ofereix el servidor
  • Millora seguretat: una de les màximes de la seguretat és: executa només allò que et sigui necessari i minimitza la possibilitat de falles de seguretat.
  • Solució més robusta: quan menys aplicacions s'executen menys possibilitats de que falli l'entorn.

NOTA: El concepte sessió és molt important. Quan esteu entrant a l'entorn gràfic, totes les aplicacions executades en aquest entorn formen part d'una sola sessió

Si us interessa entrar és més profunditat al tema Interfícies gràfiques consulteu:

Configurar l'entorn de servidor per tal que no inicii per defecte l'entorn gràfic a l'arrancar

Hi ha dos formes de fer-ho:

  • Forma tradicional

Podeu utilitzar l'ordre update-rc.d:

$ sudo update-rc.d -f gdm remove


Cal modificar:

/etc/init$ cat gdm.conf 
# gdm - GNOME Display Manager
#
# The display manager service manages the X servers running on the
# system, providing login and auto-login services

description	"GNOME Display Manager"
author		"William Jon McCann <mccann@jhu.edu>"

start on (filesystem
         and started dbus
         and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
              or stopped udevtrigger))
stop on runlevel [016]

emits starting-dm

env XORGCONFIG=/etc/X11/xorg.conf

script
    if [ -n "$UPSTART_EVENTS" ]
    then
	[ ! -f /etc/X11/default-display-manager -o "$(cat /etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/gdm" ] || { stop; exit 0; }

	# Check kernel command-line for inhibitors
	for ARG in $(cat /proc/cmdline)
	do
	    case "${ARG}" in
		text|-s|s|S|single)
		    plymouth quit || :  # We have the ball here
		    exit 0
		    ;;
	    esac
	done
   fi

   if [ -r /etc/default/locale ]; then
	. /etc/default/locale
	export LANG LANGUAGE
   elif [ -r /etc/environment ]; then
	. /etc/environment
	export LANG LANGUAGE
   fi
   export XORGCONFIG

   exec gdm-binary $CONFIG_FILE
end script


Cal modificar la línia:

stop on runlevel [016]

per

stop on runlevel [0126]

Vegeu també

Enllaços externs