Java enterprise edition e Microosoft .NET, MVC - Descrizioni piattaforme, Schemi riassuntivi di Sistemi Informatici. Università degli Studi di Roma Tor Vergata
ElenaP
ElenaP

Java enterprise edition e Microosoft .NET, MVC - Descrizioni piattaforme, Schemi riassuntivi di Sistemi Informatici. Università degli Studi di Roma Tor Vergata

PDF (316 KB)
13 pagine
4Numero di download
1000+Numero di visite
100%su 1 votiNumero di voti
Descrizione
Java enterprise edition, Da architetture monolitiche a multistrato, Java EE application model, API e container, Persistenza relazionale per ambiente JAVA Microsoft .NET, caratteristiche, CLI CIL CLR, Componenti framewor...
20 punti
Punti download necessari per scaricare
questo documento
Scarica il documento
Anteprima3 pagine / 13
Questa è solo un'anteprima
3 pagine mostrate su 13 totali
Scarica il documento
Questa è solo un'anteprima
3 pagine mostrate su 13 totali
Scarica il documento
Questa è solo un'anteprima
3 pagine mostrate su 13 totali
Scarica il documento
Questa è solo un'anteprima
3 pagine mostrate su 13 totali
Scarica il documento

1

Piattaforme JavaEE, .NET, MVC

1. Java enterprise edition

1.Introduzione Java enterprise edition  analisi delle caratteristiche della piattaforma JAVA ENTREPRISE EDITION: particolare ambiente in cui sono eseguite delle applicazioni scritte in linguaggio Java (link ad oggetti). • 3 tipologie di piattaforma: 1. Java ME: Java platform Micro edition per applicazioni da eseguire su piccoli device 2. Java SE: Java platform Standard edition 3. Java EE: Java platform enterprise edition stnd per l’implementazione di applicazioni industriali

distribuite • Costituite da 2 moduli: 1. JVM: java virtual machine programma specifico del SO che permette l’esecuzione delle applic

JAVA 2. API: application programming interface: componenti sw utilizzabili come mattoni • Vantaggi: 1. portabilità 2. potenza 3. stabilità 4. facilità d’uso 5. sicurezza

Da architetture monolitiche a multistrato • arch monolitiche: contesto di business stabile presenza di mainframe e PC in modalità stand alone tutte le applic appartengono ad 1 sola macchina concentrate in 1 solo blocco difficilmente manutenibile (spaghetti code) • arch multistrato: nuovo contesto di business caratterizzato da cambiamenti continui e imprevedibili la concentrazione di logica di business, di presentazione e accesso ai dati diventa 1 ostacolo per le continue implementare modificheseparazione delle logiche applicative a. 2trier: separazione in 2 macchine di logica applicativa+presentazione da quella di accesso ai dati b. 3trier: separazione fisica delle tre logiche applicative:  frame work JAVA EE

2

2.Paradigma Java EE Java EE application model • Modello applicativo fondato sul concetto di arch multistrato paradigma che permette flex+scalabilità+disponibilità+gestibilità • Suddivisione delle attività di sviluppo in 2: 1. logica di business e di presentazione realizzate da programmatore 2. servizi stnd forniti da piattaforma JEE • logica applicativa divisa in 3 strati (corrisp a 3 macchine) su cui si installano 4 componenti (componenti= sw scritto con sintassi Java che espone delle fx attraverso le classi): 1. strato C componenti C = application C e applet sullo strato C 2. strato server a) componenti WEB sul server JavaEE =Java Servlet, Java S pages, Java S Faces sullo strato web del S b) componenti business sul server JavaEE = enterprise Java beans sullo strato business del S 3. il SIA su uno strato dedicato

J

1. strato client

• browser web che ha il compito di visualizzare le pg web 1. thin: esecuzione di compiti semplici delegando alle applicazioni server side operazioni più complesse >sicurezza e velocità 2. thick: sul C risiede la logica applicativa> user experience possono contenere una applet (programma scritto in Java eseguito C side) • application C: sw risedente sul C che permette di eseguire compiti che rich 1 interf + sofisticata  dialogo diretto con regole di business senza passare per webS

2. strato server

a) componenti web • JEEserver: applicazione dello strato S che

- implementa le API - fornice servizi ”application S” perche esaudiscono rich C • possibili componenti web alternative per la creazione di contenuti dinamici: 1. servlet 2. java server pg 3. java server faces b) componenti business Contiene la logica per implementare le esigenze specifiche di 1 particolare settore industriale:

- ricevono dati dai C li processanoli memorizzano - estraggono dati dal DB li inviano al C

4. enterprise java beans EJB

3

3. strato SIA

Stato connesso con quelli superiori su cui risiede • il SIA (es:ERP) • i DB • i sistemi legacy N.B. sia lo strato C che web possono contenere delle Java beans per gestire la comunicazione in input vs gli enterprise beans sullo strato business

3.API e container Container • probl: applicazioni thin C complesse da realizzare(cod molto intricato) sol: piattaforma JEE:

- semplicità nella scrittura di applicazioni con logica di business articolata in componenti riutilizzabili

- disponibilità di servizi di base sotto forma di conteiner specifici per ogni componente • i conteiners sono delle interfacce tra:

- un componente - una funzionalità di basso livello

• scopo container è supportare i componenti: all’invocazione, prima dell’esecuzione, ogni comp deve essere compilato dal suo container che provvede a gestire servizi:

- connettività - sicurezza - transazione - ciclo di vita - persisteza dati - accesso API

Tipologie container 1. EJB conteiner : sul server, gestisce esecuzione

degli EB 2. web container: sul server java, gestisce

esecuzione pg JSP e servlet 3. application C container: sul C,esecuzione

componenti applicativi C 4. applet container: sul C come plug-in del B,

esecuzione Applet

4

API Una delle fx del conteiner è mettere a disp della API per lo sviluppo di applicazioni • API Application Programming Interface: insieme di procedure raggruppate a formare un set di strumenti specifici per un particolare compito • Tre tipologie 1. JSTI: libreria di tag che incapsulano la

logica applicativa comune per lo sviluppo di applicazioni web semplificano la struttura della pg rendendo visibile solo la sintassi XML

2. J server faces: per semplificare lo sviluppo dell’interfaccia grafica crea di comp grafiche riutilizzabili, le assembla nella pg, le collega a sorgenti dati: è così possibile separare nettamente logica di pres da quella di business

3.

API a disposizione della piattaforma JAVA EE5

Persistenza relazionale per ambiente JAVA A. Persistenza relazionale :

1. Problema della prestazione dei dati tc 1 applicazione perde di utilità se non è in grado di conservare in modo permanente 1 info

2. tecnologia relazionale: soluzione tecno per condividere dati tra + applic tc rappr il mcd tra diverse piattaforme e sistemi

B. i contesti obj oriented sn strutturalmente diversi rispetto alla logica relazionale: non ci sono interrogazioni SQL alla BD ma è la stessa logica di business delle strato applicativo che interagisce con il modello ad oggetti interconnessi che, dopo aver disassamblato l’obj, provvede a memorizzalo nell’opportuna tabella relazionale

• probl:discrepanza tra i 2 modelli= paradigm mismatch  diverse scuole di pensiero: codifica manuale con SQL (minus: portabilità) vs tecnologia ad oggetti per DB • soluzione: ORM (object relational mapping): soluzione completa al problema della persistenza dei dati in ambiente java attraverso l’uso di un middleware che gestisce in modo trasparente l’interazione tra l’applicazione e la BD • vantaggi:

- produttività: diminuzione del lavoro nec per implementare il codice dedito alla gestione della persistenza

- manutenibilità: la riduzione del # di righe di codice aumenta la comprensibilità e evidenzia la logica di business

- performance: > semplicità nell’ottimizzazione - indipendenze dal vendor: astrazione tot dal tipo d DB sottostante (portabilità dell’applicazione)

5

2. Microsoft .NET 1.Introduzione Caratteristiche e obiettivi • caratteristiche:

- implementazione microsoft di un application server analogo a Java EE - piattaforma si sviluppo sw trasparente alle rete e indip dal SO che permette di sviluppare

applicazioni web. - la vasta libraria standard sottostante permette di implementare qlq applicazione

• obiettivi 1. sicurezza e integrità dei dati 2. ambiente di programmazione consistente ed orientato ad oggetti 3. min nec di depliyment del sw 4. min incompatibilità 5. esecuzione di codice sicuro 6. superamento dei problemi di performance degli scripting 7. def di standard di comunicazione e per l’integrazione di codice

Paradigma e tecnologia • concetto di sw modulare come evoluzione di COM eredita:

- separazione dell’interfaccia dall’applicazione - gestione delle transazioni - gestione delle code di componenti

inoltre introduce: - superamento problema della sicurezza degli ActiveX usati da COM

• tecnologie: - originariamente versione concorrente a java - evoluzione con J++ e J# - anche visualbasic

CLI CIL CLR 1. per ogni linguaggio di alto livello supportato esiste un compilatore che lo traduce in CIL= common intermediate language, linguaggio di basso livello (ruolo di byte code linguaggio assembly orientato ad oggetti) 2. la CLI esegue poi istruzioni codificate in CIL  qlq ling ad oggetti di alto livello è interpretato dalla CLI common language INFRASTRUCTURE(Funzionamento analogo alla JVM) 3. l’ambiente di esecuzione del CIL è il CLR (common language runtime), insieme di libreria stnd della piattaforma al cui interno agiscono i compilatori responsabili della traduzione dei ling d alto livello

6

Componenti frame work .NET 1. visual studio .NET 2. LINGUAGGI AD OBJ DI

ALTO LIVELLO 3. CLS 4. ASP.net 5. Window forms 6. ADO.NET 7. CLR 8. CLASS LIBRARY 9. SO

La tecnica di programmazione basata sullo scripting viene sostituita blocchi di codice che vengono eseguiti in risposta a determinate azioni effettuate su controlli dotati di visualizzazione grafica su desktop-l’intero codice con cui è scritto il sito è racchiuso in una libreria di classi e pre-compilato in un insieme di file dll gestito da 1 S web. [il frame work fx sono qlq SO anche se solo con window è possibile avere max performance ] è supportata anche la tecnologia XML responsabile dell’accesso ai web services

2. Componenti principali Visual studio .NET è un IDE (integrated development envirorment) sviluppato per fornire un ambiente di sviluppo integrato per la generazione + rapida di applicazioni web

CLS Common language specification Particolare sottoinsieme del CLR che i compilatori dv supportare per garantire l’interoperabilità dei diversi linguaggi di alto livello

ASP.net Insieme delle tecnologie utilizzate per lo sviluppo di sw per il web: frame work di programmazione sulla base del CLR 1. ASP.NET WEB FORMS: per la generazione dinamica di pg web progettato per risolvere le debolezze di ASPpermette di strutturare la pg secondo 1 logica ordinata non casuale e fornire strumenti di sviluppo 2. ASP.NET WEB SERVICES: i siti diventano non più vetrine ad accesso passivo ma web services intelligenti e riutilizzabili i CLR forniscono nativamente supporto per la loro realizzazione ottenendo applicazioni scalabili e accessibili da tutti i client (supporto di stnd internet aperti) 3. ASP.NET WEB APPLICATION Si definiscono applicazioni come somme dei file, delle pg dei moduli degli strumenti di gestione e del codice eseguibile ogni web application è eseguita in 1 dominio che garantisce la creazione di sandbox sicure 4. ASP.NET CACHAING Tecnica utilizzata per incrementare le performance mantenendo in memoria i dati richiamati con frequenzamemorizzazione di risp create dinamicamente o di dati 5. CONFIGURAZIONE ASR.NET Configurazione gerarchica che consente una configurazione estensibile dei dati e facilità la manutenzione delle applicazioni web

7

ADO.NET • Si occupa di gestire l’integrazione con il DB: consente l’accesso relazionale alle fonti di dati in ambiente multitier garantendo l’interoperabilità con i don XML • Architettura disconnessa: le applicazioni rimangono connesse al al DB solo per il tempo necessario all’estrazione/aggiornamento e il DB è svincolato da connessioni inattive- >prestazioni e >scalabilità • Dataset: se fosse necessario accedere al DB per ogni elaborazione di un record i vantaggi del dell’architettura disconnessa sarebbero vani si intro un dataset su cui si memorizzano temporaneamente i record estratti : le operazioni fatte sul dataser vengono poi propagate nel DB • Il dataadapter serve per modificare /estrarre realmente i dati che comprende le istruzioni necessarie per popolare il dataset e quindi aggiornare il DB • La persistenza dei dati è creata all’esterno del DB attraverso la memorizzazione in XML (formato stnd che permette lo scambio facile dei dati)

Architettura ADO:NET 2 componenti: 1. datasetcomprende 2 raccolte a. datatable collectiontabelle dati = datatable che contiene i.datacolumn collection=schema tab ii.data row collection=contenuto tab iii.constraint collection=vincoli b. data relation collectionrealazioni dati associa alle righe di 1 tab quelle di 1 altra tab

2. .NET data provider Ha il compito di comunicare dirattamente con il DB 4 classi: a. Connection: stabilisce connessione con DB b. Command: esecuzione operazioni DB c. Datareader: d. dati da DB e. Dataadapter: riconcilia dati tra dataset e DB

CLR • Si distinguono 2 tipologie di applicazioni

- Managed: usano codice sicuro aderente alle specifiche CLR che permette di risolvere problemi come perdite di memoria e riferimenti non validi

- Unmanaged: applicazioni che non aderiscono alle spec CLR ma caricano nei singoli processi il CLR avviando così l’esecuzione di codice managed

• Il CLR garantisce l’interoperabilità tra codice managed e unmanaged permettendo agli sviluppatori di utilizzare i componenti COM e i dll che preferiscono • le caratt del codice managed: garantiscono la sicurezza del sw eseguibile del contenuto nelle pg web offra particolari prestazioni senza accedere ai dati personali dell’ut • Il CTS ( common type sysem) è un componente del CLR con lo scopo di rafforzare la robustezza del codice non def una sintassi, ma l’insieme dei tipi che devono essere presenti nei linguaggi costruiti sul CLR • Compilatore just in time: elemento che permette al codice managed di esser eseguito nel linguaggio macchina nativo

8

CLASS LIBRARY • È una collezione di tipi riutilizzabili che definiscono le funzionalità del codice managed cui sono associati e permettono lo sviluppo di particolari applicazioni tra cui:

- i window forms - ASP.NET - Web services (HTML) - Window services

• Realizza la macchine virtuale responsabile dell’esecuzione del codice intermedio prodotto • si propone di realizzare l’integrazione con le tecnologie esistenti per ottenere persistenza relazionale all’interno del’ambiente web (che per natura è privo di stato) • si occupa:

- della gestione delle stringe - della connettività ai DB - dell’accesso ai file - della raccolta dei dati  opera a contatto con il CLR

3. Netframework 3.0

Introduzione Lancio (in parallelo a vista) del nuovo frame work introduzione di nuove tecnologie per lo sviluppo di applicazioni con:

1. ottime prestazioni grafiche 2. mod di comunicazione sicura 3. max interoperabilità 4. modellazione di processi aziendali diversi

comprende 4 moduli: 1. window communication foundation 2. window presentation foundation 3. window workflow foundatio 4. window cardspace

1.Window communication foundation • insieme di tecnologie per sviluppare ed eseguire sistemi connessi l’architettura dei web services è alla base di questa nuova tipologia di infrastruttura di comunicazione WCF a. trasmette msg in modo sicuro, b. assicura completa interoperabilità c. semplifica lo sviluppo di sistemi connessi d. crea un architettura componibile ed estensibile • WCF rappresenta una collezione di servizi che espongono degli endpoint la cui fx è quella di agire da porta per comunicare con il mondo esterno ENDPOINT a. ADDRESS: indirizzo internet su cui risiede (URL) b. BINDING: specifica le modalità utilizzate per comunicare (protocollo, codifica, tecnologie di

sicurezza) c. CONTRACT: collezioni di operazioni che specifica cosa è comunicato al mondo esterno

9

2.Window presentation foundation • nasce per dare un riferimento unitario nella creazione dell’interfaccia grafica di applicazioni window per sfruttare le potenzialità del computer non solo come puro strumento di lavoro ma anche come mezzo per usufruire di contenuti multimediali • le interfacce grafiche hanno delle limitazioni perchè il rendere grafico GDI è immutato da 20anni e quindi non si sfruttano le potenzialità a disposizione dell’HWsi introduce quindi GDI+ che permette lo sfruttamento completo della scheda grafica • WPF è una tecnologia versatile che supporta sia applicazioni classiche 2D 3D vettoriali sia altre più moderne che sfruttano intensamente i contenuti multimediali e che permettono la navigazione • I def a supporto un nuovo linguaggio XAML che permette di definire gli oggetti nell’area di lavoro utilizzando TAG XML (come nelle pg web)

3.Window workflow foundation • modello di programmazione che comprende

a. un engine b. strumenti per la creazione rapida di applicazioni web per la gestione di workflow (flussi di

attività che si modificano in fx dell’interazione con l’utente) • diversi tipi di workflow:

- workflow sulla linea di business - interfacce ut che def flussi di pg - workflow sulla manipolazione di doc - workflow composti per SOA (service oriended applications) - workflow di regole di business

• esempio workflow: shopping chart web serviceweb service di ASP:NET utilizzato da siti di e- commerce per la gestione della shopping chart dell’utente:

- creazione lista - aggiunta e eliminazione prodotti - definizione di ordini

4.Window cardspace Componente progettato per proteggere l’identità digitale degli utenti dell’applicazione con focus particolare per evitare la manomissione dei dati il suo funzionamento segue 7 regole

10

3. frame work basati su MVC

Architettura model view controller MVC • probl: imprevedibilità delle modalità di interazione degli ut con il sistema nec di 1 arch che permetta la separazione tra la gest dei dati e la loro presentazione • sol: architettura model view controller tc fornisce 1 interfaccia GUI costituita da + schermate che mostrano i dati, codificato su file distinti • tre tipologie di componenti: 1. il modelfx di business 2. il viewlogica di presentazione 3. il controllerlogica di controllo

Utilizzo Riesce a creare un efficiente separazione dei componenti grazie a cui: • +GUI possono usare lo stesso model • Si semplifica il supporto di C diversi (si crea sl 1 view+controller che si interfacciano ad 1 model esistente) • Migliore scalabilità • Migliore manutenibilità • Facilità di distribuzione

Frame work per lo sviluppo di applicazioni web Frame work per lo sviluppo rapido di applicazioni web basati su diversi linguaggi di scripting lto S orientati ad oggetti:

1. python 2. ruby 3. PHP permettono di ridurre il tempo di realizzazione di un’applicazione web combinando i benefici del pattern MVC con quelli dei ling interpretati

11

Sviluppo rapido di applicazioni web Ogni frame work ha una sua utilità se permette almeno una parziale riduzione dei tempi di sviluppo.

• Problema della compilazione Poiché il linguaggio umano non è leggibile dalla macchina è necessario un processo di traduzione svolto da un compilatore[tutti i link che rich una compilazione sono detti linguaggi compilati (Java C C++)]Il compilatore crea un file eseguibile indipendente dal codice sorgente PROBL=per ogni cambiamento dv fermare l’applicazione • Linguaggi di scripting

I ling di scripting sono legati ad un codice sorgente (PHP Ruby Python) e quindi non è necessaria la compilazione  un interprete traduce immediatamente in codice macchina eseguibile per ogni rich della g web VANTAGGIO=per ogni cambiamento non interrompo l’applicazione PROBLEMA=maggiore sforzo di calcolo rich e > tempi necessari SOLUZIONE=metodi per accelerare interpretazione scriptngtecniche di caching • Tutti i frame work in esame sono basati su MVC tc beneficiano dei

vantaggi dovuti a: 1. Separazione dei componenti 2. Rapidità sviluppo applic

Framework basati su php • pHP è uno dei + diffusi linguaggi di scripting interpretati sviluppato in ambiente open source allo scopo di realizzare paine web dinamiche • evoluzione

1. all’intro era 1 raccolta di script CGI 2. ampliamento: riscrittura in C + possibilità di integrazione con HTML 3. caratteristiche attuali: estensibilità+ supporto programmazione ad ggetti+

connessione con DB 4. PHP5 è competitors di ASP

• caratteristiche 1. sintassi simile a C 2. linguaggio semplice per programmatori non esperti 3. prestazione avanzate per professionisti 4. è necessario un PARSER PHP che comunichi con il Sweb e i DB per pg

dinamiche 5. vantaggio = portabilità (link interpretato) 6. output= doc HTML+PDF+XML+XHTML+Flash 7. funzionalità di caching server side 8. supporto di molti DButilizzo trasparente 9. la possibilità di aprire network sockets permette il dialogo con servizi esterni 10. utilizzo di qlq protocollo

• tipologie di frame work PHPdifferiscono nelle funzionalità (scelta fx delle contesto di utilizzo, no superiorità netta di nessuno): framework 1. END FRAMEWORK 2. CAKE FRAMEWORK

3. SIMFONY FRAMEWORK 4. SEAGULL FRAMEWORK 5. WACT FRAMEWORK

12

6. PRADO 7. PHP ON TRAX 8. ZOOP FRAMEWORK 9. EZCOMPONENTS 10. CODE IGNITER

Funzionalità a. Supporto versione PHP4 b. Supporto versione PHP5

c. Compatibilità MVC d. Connessione con + DB e. Mappatura object oriented f. Inclusione di oggetti derivanti da DB g. Motore interno per la generazione di template h. Sistemi di caching i. Filtraggio dati j. Supporto Ajax k. Gestione autenticazione l. Supporto moduli aggiuntivi (parserRSS feed)

Python e framework Django Framework web di alto livello che incoraggia lo sviluppo rapido di applicazioni e un design pulito e pragmatico • Caratteristiche:

- Metodo per la mappatura della URL - Semplicità nella visualizzazione e nella modifica delle form HTML - Conversione di info in strutture coerenti con linguaggio di programmazione - Separazione della logica di contenuto da quella di presentazione - Ampia disponibilità di librerie - Consente Sviluppo sw modulare - Portabilità delle applicazioni compatibilità delle librarie con n piattaforme - Sinteticità rispetto java:>efficienza e >pulizia - Possibilità di utilizzo interattivo dell’interprete (verifiche parziali) - Integrazione con strati memorizzazione dati

• Sviluppo rapido consentito da Python: linguaggio di scripting interpretato multiperadigma (3): - Programmazione ad oggetti - Programmazione funzionale - Programmazione strutturata

• Python caratterizzato da controllo sui tip utilizzati :in ogni istante ogni variabile deve avere un valore definito univocamente per la scarsa velocità è adatto ad applicazioni semplici • Django utilizza codice Python:è un framework che mira a realizzare applicazioni che:

- Consentano di intercambiare componenti dell’applicazione stessa - Permetta la comunicazione tramite API tra essi si adottano i concetti alla base dell’architettura MVC: integrazione strati diversi

• Vantaggi: 1. separazione tra codice e logica di programmazione rande indip ruolo

programmatore/designer 2. si eliminano problemi di ridondanza nell’accesso ai datidirettamente

comandi Python non in SQL 3. URL e codice disaccoppiati (associo stesso codice a diversi URL) 4. logica di programmazione e configurazione del DB separate

13

RUBY e il FRAMEWORK RUBY ON RAILS (ROR) • Framework open source per lo sviluppo rapido di applicazioni web scritto in Ruby e modellato con architettura MVC. • Alto valore per la Cp di ridurre i tempi di sviluppo abolendo i file di configurazione e introducendo 1 forte automatizzazione • Principi guida: 1. “don’t repeat yourself “=si pongono le def 1 sola volta collegamenti tr acomponenti non impostati manualmente 2. “convention over configuration”=minimo intervento del programmatore sulla configurazione • Rub: 1. linguaggio di grande espressivitàfonde Perl Python Lisp Smalltalk. Ling di scripting

interpretato fondamentalmente (non solo) ad oggetti. 2. Struttura a blocchi (= chiusure) permette di evitare ridondanzefunzioni di ambiente in

sostituzione di un ciclo esplicito • Il frame work distingue in 3 ambienti separati le tre fasi di sviluppo dell’applicazione:

1. amb di sviluppo: si possono visualizzare immediatamente le modifiche sul codice 2. amb di test: automatizzazione delle procedure per la verifica della consistenza 3. amb di produzione: viene dp che sono st eliminati tt gli errori  i dati utilizzati ne diversi ambienti appartengono a DB separati • paradigma MVC:

1. modelactive record: supporta la connessione a DB multipli, offre una GUI (mySQL query browser), def la funzione di migration dei dati

2. controller action controller: gestisce e controlla il view 3. viewaction view: definizione della presentazione della pg web dinamica

(codice Ruby racchiuso in HTML come pg JSP) • problema ROR:

1. interfacciamento con sistemi legacy 2. interoperabilità con altri sistemi

non sono stati rilasciati commenti
Questa è solo un'anteprima
3 pagine mostrate su 13 totali
Scarica il documento