8 - Web app e CMS - 17/18

37
Università degli Studi di Milano Bicocca Dipartimento di Informatica, Sistemistica e Comunicazione Corso di Strumenti e applicazioni del Web 8. Le applicazioni Web e i CMS Giuseppe Vizzari Edizione 2017-18

Transcript of 8 - Web app e CMS - 17/18

Page 1: 8 - Web app e CMS - 17/18

Università degli Studi di Milano BicoccaDipartimento di Informatica, Sistemistica e Comunicazione

Corso di Strumenti e applicazioni del Web

8. Le applicazioni Web e i CMS

Giuseppe Vizzari

Edizione 2017-18

Page 2: 8 - Web app e CMS - 17/18

Queste slides

Queste slides fanno parte del corso “Strumenti e applicazioni del Web”. Il sito delcorso, con il materiale completo, si trova in https://gvizzari.hopto.org/wp/. Data larapida evoluzione della rete, il corso viene aggiornato ogni anno.

Il presente materiale è pubblicato con licenza Creative Commons“Attribuzione - Non commerciale - Condividi allo stesso modo – 3.0”(http://creativecommons.org/licenses/by-nc-sa/3.0/it/deed.it ):

La licenza non si estende alle immagini provenienti da altre fonti e allescreen shot, i cui diritti restano in capo ai rispettivi proprietari, che, ovepossibile, sono stati indicati. L'autore si scusa per eventuali omissioni, e restaa disposizione per correggerle.

Page 3: 8 - Web app e CMS - 17/18

Applicazioni Web

• Oltre che "navigare", l'utente deve poter "interagire" con un sito, fornendo dei dati che il sito elaborerà fornendo le risposte opportune

• Nell’impostazione del Web 2.0 l’idea è che l’utente deve poter contribuire o addirittura costruire un sito web

• Non solo "Web site" ma "Web application"

3

Page 4: 8 - Web app e CMS - 17/18

Applicazioni Web: script client-side

4

HTTPinternet

Browser

Web

server

HTML con script

client-side

HTML con programmi

client-side

Esecutore dei

programmi client-side

Esempi:

• Javascript (script interpretati) con librerie DOM

• Applet Java (codice precompilato interpretato da

JVM (Java Virtual Machine)

• Ajax (rende asincrona l'interazione col server)

AJAX Engine

Page 5: 8 - Web app e CMS - 17/18

Programmazione lato client

• JavaScript (creato da Netscape, 1995)Semplice linguaggio di scripting, inserito nel codice HTML e (standardizzato da ECMA col nome di ECMAScript)Interpretato da una Javascript Engine

• DOM (Document Object Model)Librerie di funzioni associate a Javascript, per la manipolazione delle pagine e degli elementi dell'interfaccia del browser

• Applet Java (Java: linguaggio a oggetti creato da Sun, 1995)Programmi già compilati in codice intermedio ("bytecode"), che viene eseguito da una Java Virtual Machine. Devono essere inviati dal server, e quindi per motivi di sicurezza non hanno accesso al file system del client (Sandbox).

• AJAX (Asynchronous JavaScript and XML)Un gruppo di tecnologie e metodi che rendono asincrone la gestione della interazione con l'utente e il dialogo con il web server

5

Page 6: 8 - Web app e CMS - 17/18

Applicazioni Web: script client-side

6

HTTPinternet

Browser

Web

server

HTML con script

client-side

Esecutore dei

programmi client-side

Sandbox: in questo contesto, si intende un meccanismo

per mantenere separati gli script dalle risorse del client

(memoria, memoria persistente). Non è detto che i diversi

esecutori di script client-side siano davvero efficaci in

questo senso… sistemi open source danno maggiore

affidabilità (trasparenza)

AJAX Engine

Page 7: 8 - Web app e CMS - 17/18

Esempi

<html><head> …. </head>

<body>….<script type="text/javascript">

Document.write('Hello World')</script>

…..</body>

</html>

7

<applet

code="Hello class” width="200" hight="200">

</applet>

Page 8: 8 - Web app e CMS - 17/18

Applet Java: esempio

8

Page 9: 8 - Web app e CMS - 17/18

Applicazioni Web: script server-side (pagine dinamiche)

9

HTTPinternet

Browser

Web

server

HTML con programmi

server- e client-side

HTML con script

client-side

Esempi:

• script PHP (Personal Home Page Tools)

• script JSP (Java Server Pages)

• Servlet Java

• …

Codice generato

server-side

Esecutore di

programmi server-side

Codice server-side

Page 10: 8 - Web app e CMS - 17/18

La trasmissione dei dati di input

10

HTTP

Web

server

HTML

HTTP e HTML forniscono degli strumenti per richiedere dati

all'utente e trasmetterli al Web server

GET (URL)1

HTML

PUT

2

Nome:

OK

3

5

GET URL', Nome=mario

4

Scrive "Mario"

e preme OK

6

Elaborazione dati e

produzione / invio di

una nuova pagina

Page 11: 8 - Web app e CMS - 17/18

<form method="get" action=http://www.google.com/search>

<input type="text" name="querystring">

<input type="submit" name="button1" value="Google

Search">

</form>

Form: esempio

11

bla bla

querystring=bla+bla&button1=Google+SearchAl server

Page 12: 8 - Web app e CMS - 17/18

AJAX (Asynchronous JavaScript and XML)

12Da leggere: http://www.adaptivepath.com/ideas/ajax-new-approach-web-applications

Page 13: 8 - Web app e CMS - 17/18

Architetture a più livelli ("multi-tier")

13

HTTPinternet

Browser

Web

server HTML con script

client-side

Pagine generate

dinamicamente

Application

server

db

server

Data base

Page 14: 8 - Web app e CMS - 17/18

Come “installare” un sito Web?

14

HTTPinternet

Browser

Web

server

Pagine

web

Editor

HTTP

FTP

HTML

Es.:

Dreamweaver

Una soluzione elementare

Page 15: 8 - Web app e CMS - 17/18

Content Management Systems (CMS)

15

HTTPinternet

Browser

Web

server

Pagine generate

dinamicamente

CMS db

server

Data base

Lettore

Un'applicazione che permette di costruire

e installare le pagine, e di servirle ai lettori

Page 16: 8 - Web app e CMS - 17/18

Content Management Systems (CMS)

16

HTTPinternet

Browser

Web

server

Pagine generate

dinamicamente

CMS db

server

Data base

Lettore

Browser

Editor

Page 17: 8 - Web app e CMS - 17/18

Browser

Content Management Systems (CMS)

17

HTTPinternet

Browser

Web

server

Pagine generate

dinamicamente

CMSdb

server

Data base

Autore

Lettore

Browser

Amministratore

Page 18: 8 - Web app e CMS - 17/18

Content Management Systems (CMS)

18

HTTPinternet

Browser

Web

server

Pagine generate

dinamicamente

CMSdb

server

Data base

Browser

Autore

Lettore

Browser

Amministratore

Templates

Materiale autore

Materiale amministratore

Page 19: 8 - Web app e CMS - 17/18

CMS: tipologie

19

Codice proprietario Codice aperto

(open source)

Codice

preinstallato

(server di

terza parte)

Codice da

installare

(necessità di

un server)

“Online site builders”

Es.:

blogger (Google)

Weebly, Webs,

Ning, Socialgo, …

Es.:

www.wordpress.com

….

Es.:

wordpress

Joomla

drupal

(ne esistono, ma

sono molto meno

interessanti…

esempio: il sito di

Ateneo*)

* a breve verrà pubblicata una nuova versione del sito web di Ateneo basata su Drupal

Page 20: 8 - Web app e CMS - 17/18

CMS: tipologie

20

Codice proprietario Codice aperto

(open source)

Codice

preinstallato

(server di

terza parte)

Codice da

installare

(necessità di

un server)

“Online site builders”

Es.:

blogger (Google)

Weebly, Webs,

Ning, Socialgo, …

Es.:

www.wordpress.com

….

Es.:

wordpress

Joomla

drupal

(ne esistono, ma

sono molto meno

interessanti…)

Domanda legittima, anzi,

quasi obbligatoria… come

si collocano i cosidetti Wiki

in questo schema?

Page 21: 8 - Web app e CMS - 17/18

I wikiLo strumento più semplice per scrivere testi cooperativi bottom-up sul Web

21

Ward Cunningham ha

realizzato il primo wiki nel

1995, come strumento

collaborativo per discutere

pattern languages

"Wiki wiki" in lingua hawaiana

che significa “molto veloce”:

mette in evidenza la facilità con

cui le pagine possono essere

create e aggiornate

Browser

Page 22: 8 - Web app e CMS - 17/18

Wiki: i problemi del lavoro cooperativo distribuito

• Chiunque può cancellare il lavoro degli altri (per errore o volontariamente) Ogni modifica viene registrata automaticamente in una

cronologia, e può essere sempre ripristinata

• Più utenti che lavorano contemporaneamente sullo stesso testo possono ostacolarsi

→ Regole di sincronizzazione

22

Page 23: 8 - Web app e CMS - 17/18

Wiki engines

• Esistono moltissimi gestori di wiki, spesso open source, per es.:

• MediaWiki (usato da Wikipedia)

• PmWiki

• Twiki

• SocialText

• …• http://www.wikimatrix.org/index.php

• http://c2.com/cgi/wiki?TopTenWikiEngines

23

Page 24: 8 - Web app e CMS - 17/18

MediaWiki

• Realizzato per sviluppare Wikipedia a partire dal 2001

• Il nome (dato nel 2003) è un gioco di parole derivato da Wikimedia Foundation

• Free e open source, distribuito sotto GNU General Public License

• Attualmente, più di 2000 estensioni

• https://en.wikipedia.org/wiki/MediaWiki

24

Page 25: 8 - Web app e CMS - 17/18

Corporate wiki

• Supportano la condivisione di conoscenza nelle organizzazioni (informazioni aziendali, di clienti, di progetti e del flusso documentale)

• Accessibili dalla intranet aziendale, e quindi non visibili all’esterno

• Possono essere integrati con i sistemi informativi aziendali e fornire funzioni aggiuntive specifiche

• Principali sistemi di corporate wiki sono PmWiki e Socialtext (www.socialtext.net)

• http://en.wikipedia.org/wiki/Corporate_wiki

http://en.wikipedia.org/wiki/Socialtext

25

Page 26: 8 - Web app e CMS - 17/18

Online site builders

• Applicazioni proprietarie che permettono di costruire e

pubblicare siti web interamente on-line, senza necessità di

programmazione

• Il sito può essere personalizzato in vari modi: scelta del tema

grafico, uso di widget, … A volte si può personalizzare il

codice o modificare i CSS

• Quasi sempre a pagamento (canone mensile), a volte servizi

di base gratuiti

• Esempi:

Per blog: www.blogger.com (di Google, gratuito), …

Per siti: www.weebly.com, www.webs.com, …

Per social networks: www.ning.com, www.socialgo.com, …

26

Page 27: 8 - Web app e CMS - 17/18

CMS open source

• Si deve scaricare il software e installarlo su un server (proprio o di un

provider)

• Si rivolgono a utenti più esperti, e sono più flessibili

• L’amministrazione di questo genere di sistema richiede uno sforzo

maggiore

• La gestione può coinvolgere più persone, con ruoli differenti

• Si possono definire flessibilmente template di contenuti e addirittura

workflow

• Esempi:

• WordPress (www.wordpress.org)

Molto semplice da usare, molto ricco di plugin pronti all’uso.

Esiste anche una versione online semplificata: www.wordpress.com

(funzionalmente limitata, molto diffusa: http://en.wordpress.com/stats/ )

• Joomla (www.joomla.org)

Più complesso

• Drupal (www.drupal.org)

Più complesso

R.Polillo -Marzo 2015

27

Page 28: 8 - Web app e CMS - 17/18

WordPress

• Il CMS open source più diffuso

•Nato per realizzare blog nel 2003 sulla base di un precedente sistema del 2001, ora permette di realizzare anche siti molto sofisticati

•Grande community che ne sviluppa l'ecosistema

•Facile da usare, può essere personalizzato anche in modo molto sofisticato (HTML, PHP, MySQL)

•http://en.wikipedia.org/wiki/WordPress

28

Page 29: 8 - Web app e CMS - 17/18

WordPress: cosa permette di fare

• In WordPress si possono gestire diversi tipi di contenuti:• Pagine: documenti semi-statici, gestibili dai ruoli di amministratore o

editor

• Post: entry del blog incluso, gestibili dai precedenti ruoli ma creabili anche dagli autori (che non hanno permessi “amministrativi” a parte la creazione di post e il caricamento di immagini)

• Esiste la possibilità di prevedere dei ruoli di contributor che possono caricare dei post che però devono essere approvati da editor per essere pubblicati

• Funzionalità amministrative / di organizzazione:• Possibilità di definire e organizzare categorie e tag

• Implicitamente prevista la possibilità di avere una struttura editoriale (più persone coinvolte nella gestione del sito): un po’ più di un semplice blog…

Page 30: 8 - Web app e CMS - 17/18

Blog iniziale:tema di default

30

Page 31: 8 - Web app e CMS - 17/18

Temi: strutture tipiche

31

Header

Colonna 1 Colonna 2 [Colonna 3]

Footer

[Menu orizzontale]

1, 2 o 3

colonne

Page 32: 8 - Web app e CMS - 17/18

Altro tema predefinito (2 colonne)

32

Page 33: 8 - Web app e CMS - 17/18

Altro tema predefinito:

2 colonne

33

Page 34: 8 - Web app e CMS - 17/18

Altro tema predefinito (3 colonne)

34

Page 35: 8 - Web app e CMS - 17/18

35

Altro tema predefinito (3 colonne)

Page 36: 8 - Web app e CMS - 17/18

Esempi realizzati con WordPress

Versione .com:

• https://strumentiapplicazioniweb.wordpress.com/

• http://www.corsow.wordpress.com

Versione scaricabile:

• http://www.rpolillo.it

• http://www.stylenest.co.uk

• http://mosaic-consulting.com

Showcase di siti WordPress:

• https://wordpress.org/showcase/

36

Page 37: 8 - Web app e CMS - 17/18

CMS più complessi? Due parole su Drupal• Differenze più marcate:

• Pagine e post, ma anche articoli, sondaggi, topic di un forum, sono chiamati nodi

• Trattare tutti i contenuti come nodi permette di definire nuovi tipi di contenuti e trattarli comunque in modo uniforme

• Esempio: il sito di un Dipartimento dovrebbe poter avere dei contenuti specifici relativi ai corsi, e la descrizione di ogni corso dovrebbe avere una struttura specifica (titolo, docente, anno e semestre, …)

• Necessità di poter definire anche le porzioni di nodi, regioni (es. header, footer, sidebar, …) e blocchi (es. menu, form, …)

• Ruoli non solo predefiniti ma flessibili, anche in termini di regole di accesso ai diversi tipi di nodi

• Nell’esempio precedente i docenti dovrebbero poter lavorare sul programma del proprio corso, ma non (tutti) i docenti dovrebbero poter modificare l’orario delle lezioni

• Se WordPress è più di un sistema di gestione di blog, mantenendo però la stessa facilità d’uso, CMS come Drupal e Joomla offrono funzionalità necessarie per la gestione di siti di organizzazioni di medio-grande dimensione, ma hanno una curva di apprendimento più ripida

• Non a caso trovate pacchetti che offrono versioni estese e pre-configurate di Drupal adatte a certi tipi di organizzazione (es. OpenScholar)