Date post: | 03-May-2015 |
Category: |
Documents |
Upload: | santuzza-longhi |
View: | 215 times |
Download: | 1 times |
a.a. 2004/05 Tecnologie Web 1
Architettureparte II
a.a. 2004-2005
parte 2
a.a. 2004/05 Tecnologie Web 2
Componenti• Possiedono interfacce standard (almeno un per
l’introspezione)• Applicazioni non complete• Distribuibili separatamente• Utilizzabili in combinazioni non predicibili• Indipendenti dalle caratteristiche tecnologiche del
sistema finale• Sono oggetti (nel senso canonico)
a.a. 2004/05 Tecnologie Web 3
Componenti (2)
• Gruppi di programmi gestiti come unità di codice eseguibile, connettibili dinamicamente e accedibili attraverso interfacce documentate che possono essere identificate a run-time
a.a. 2004/05 Tecnologie Web 4
Come realizzare una componente
DataExt. method
Ext. method
….
Ext. methodInt. Method
...
Int. Method
Proxy / Wrapper
Traditional
OO
Data
Code
Obj.Obj.Obj.Obj.
Data
Code
a.a. 2004/05 Tecnologie Web 5
Java Beans
• Integrati nel layout grafico che li contiene
• Generano eventi per il mondo esterno
• Possiedono proprietà leggibili e modificabili
• Supportano l’introspezione
• Sono persistenti
• Sono personalizzabili
a.a. 2004/05 Tecnologie Web 6
COM e DCOM: le originiCOM e DCOM: le origini
MicrosoftMicrosoft
DCOMDCOM(Distributed COM)(Distributed COM)
ActiveXActiveXOLEOLE COMCOM==
COMCOM
OLEOLE
OLE1OLE1
OLE2OLE2
Pre 1996Pre 1996 Post 1996Post 1996
OLE = Object Linking and Embedding
COM = Component Object Model
COM+ = Estensione della tecnologia COM
OLE = Object Linking and Embedding
COM = Component Object Model
COM+ = Estensione della tecnologia COM
COM+COM+
a.a. 2004/05 Tecnologie Web 7
COM e DCOMCOM e DCOM
IUnknown
Interfaccia 1
Interfaccia n
Oggetto COMOggetto COM
QueryInterface
AddRef
Release
a.a. 2004/05 Tecnologie Web 8
COM e DCOMCOM e DCOM
ClientClient OggettoOggettoNello stesso Nello stesso processo processo
ClientClient OggettoOggettoCOMCOM
Client ProcessClient Process Server ProcessServer Process
Sulla stessa Sulla stessa macchinamacchina
Tra due macchineTra due macchine(DCOM)(DCOM)
COMCOMDCERPC
ClientClient
Server MachineServer MachineClient MachineClient Machine
COMCOM OggettoOggetto
““Marshalling”Marshalling”
a.a. 2004/05 Tecnologie Web 9
Ereditarietà in DCOM
• Ereditarietà dell’interfaccia: SI
• Ereditarieta dell’implementazione: NO
• Polimorfismo degli oggetti DCOM: SI
a.a. 2004/05 Tecnologie Web 10
Ereditarietà per Contenimento (o delegazione)
a.a. 2004/05 Tecnologie Web 11
Ereditarietà per Aggregazione
a.a. 2004/05 Tecnologie Web 12
Interfacce
• In COM/DCOM le interfacce sono immutabili• Globally Unique IDentifiers (GUID) di 16 byte
per definire univocamente e immutabilmente le interfacce
• Le interfacce risolvono il problema del versioning
a.a. 2004/05 Tecnologie Web 13
Esempio Visual Basic (VBA)
Sub ControlloOrtografico()Sub ControlloOrtografico() Dim Obj as ObjectDim Obj as Object Set Set ObjObj = = CreateObjectCreateObject(“Excel.Application”)(“Excel.Application”) Parola = InputBox(“Scrivi una parola”)Parola = InputBox(“Scrivi una parola”) If If Obj.CheckSpellingObj.CheckSpelling(Parola) then(Parola) then MsgBox(“Parola valida”)MsgBox(“Parola valida”) ElseElse MsgBox(“Parola errata”)MsgBox(“Parola errata”) End ifEnd ifEnd SubEnd Sub
a.a. 2004/05 Tecnologie Web 14
Logic and Logic and abstractionsabstractions
Active ControlsActive Controls
Active ScriptingActive Scripting
Visual Basic form-Visual Basic form-based applicationbased application
MFC/SDK applicationMFC/SDK application
Java applet Java applet or applicationor application
DurableDurablestatestate
Architettura Three-Tier (DNA)
a.a. 2004/05 Tecnologie Web 15
Business Objects• Rappresentano oggetti dell’applicazione (cliente,
conto corrente, fattura, automobile, …)• Realizzano le “business rules”• Saranno utilizzati in combinazioni non predicibili
a priori (connessioni dinamiche ritardate)• Sono realizzati come componenti installate sul
secondo livello di un’architettura three-tier
a.a. 2004/05 Tecnologie Web 16
Object Transaction Monitors (OTM)
Object Request BrokerObject Request Broker
Market ShareMarket Share
1 s t Q t r 2 n d Q t r0
2 0
4 0
6 0
8 0
1 s t Q t r 2 n d Q t r
Ambiente di esecuzione evolutoAmbiente di esecuzione evoluto
a.a. 2004/05 Tecnologie Web 17
ClientsClients
ServerServer
NetworkNetwork
Microsoft COM+: costruire applicazioni scalabili
Thread PoolThread Pool
QueueQueue
ConnectionsConnections
ContextContext SecuritySecurity
Shared DataShared Data
ReceiverReceiver
SynchronisationSynchronisationService LogicService Logic
Co
nfig
uratio
nC
on
figu
ration
Man
agem
ent
Man
agem
ent
a.a. 2004/05 Tecnologie Web 18
COM+: i servizi integrati nella piattaforma
ClientsClients
Windows NT Server 4.0Windows NT Server 4.0
NetworkNetwork
Thread PoolThread Pool
QueueQueue
ConnectionsConnections
ContextContext SecuritySecurity
Shared DataShared Data
ReceiverReceiver
SynchronisationSynchronisationService LogicService Logic
Co
nfig
uratio
nC
on
figu
ration
Man
agem
ent
Man
agem
ent
a.a. 2004/05 Tecnologie Web 19
Programmazione con MTS/COM+
Set ctxObject = GetObjectContext()YOUR CODE YOUR CODE
Set objfoo = ctxObject.CreateInstance()YOUR CODEYOUR CODE
ctxObject.SetComplete
ctxObject.SetAbort
Set ctxObject = GetObjectContext()YOUR CODE YOUR CODE
Set objfoo = ctxObject.CreateInstance()YOUR CODEYOUR CODE
ctxObject.SetComplete
ctxObject.SetAbort
““Voglio accedere al Voglio accedere al mio contesto”mio contesto”
““Chiama un altro Chiama un altro oggetto”oggetto”
““Bene: riusa, Bene: riusa, fà commit, fà pulizia”fà commit, fà pulizia”
““Ci sono problemi: Ci sono problemi: aiutami!”aiutami!”
No TX codeNo TX codeNo Thread codeNo Thread codeNo Locking codeNo Locking code
Etc.Etc.
a.a. 2004/05 Tecnologie Web 20
La Piattaforma J2EE
• J2SE: Java 2 Platform, Standard Edition. – Ambiente runtime per esecuzione di applicazioni Java e
insieme di API (Application Programming Interface) per sviluppare applicazioni di vario tipo (applets, applicazioni stand-alone, …)
• J2EE: Java 2 Platform, Enterprise Edition:– framework per lo sviluppo di applicazioni server-side
complesse
• J2ME: Java 2 Platform, Micro Edition:– framework per lo sviluppo di applicazioni su micro
device (PDA, telefonini Java-enabled, etc.)
a.a. 2004/05 Tecnologie Web 21
Proprietà
• J2EE: adatta allo sviluppo di applicazioni Web-based a livello di impresa, e.g., per commercio elettronico
• Il suo competitor è Microsoft .net• Impresa (enterprise): organizzazione di business• Enterprise software applications: applicazioni SW
che facilitano la gestione delle attività di impresa– interagire con clienti e partners via Internet
– facilitare l’interazione tra le varie parti di un’impresa, eventualmente distribuite geograficamente
– gestione del business: resource planning, gestione inventari, ...
a.a. 2004/05 Tecnologie Web 22
Caratteristiche di applicazioni “enterprise”
• Necessità informative: spesso le stesse informazioni sono utilizzate sotto forma diversa dai consumatori attività di business diverse processano le stesse informazioni, ma utilizzando formati diversi
• Complessità dei processi di business: necessità di raccogliere, gestire e condividere informazioni, basandosi su una logica complessa
• Eterogeneità delle applicazioni: un’impresa utilizza molte applicazioni basate su architetture e tecnologie diverse (legacy software)
a.a. 2004/05 Tecnologie Web 23
Requisiti di gestione del software d’impresa
• Velocizzazione del processo di sviluppo delle applicazioni: cambiano gli standard, le tecnologie, le applicazioni devono entrare in uso velocemente
• Affidabilità e disponibilità: il SW deve essere sempre accessibile (Web) ed essere affidabile (e.g., transazioni)
• Sicurezza: protezione delle informazioni dell’azienda • Scalabilità: accesso efficiente a risorse, tolleranza al
carico di milioni di utenti (Web)• Integrazione: le applicazioni vanno integrate nei
sistemi informativi già esistenti
a.a. 2004/05 Tecnologie Web 24
J2EE• Si sono sviluppate soluzioni diverse per affrontare i
vari problemi• J2EE: permette di integrare tali soluzioni e facilita lo
sviluppo del SW– Modello di programmazione con approccio alla costruzione
di applicazioni basato su API– Infrastruttura che permette di eseguire le applicazioni in
modo efficiente e scalabile• basato su Java portabile• basato sul concetto di Contenitore servizi di gestione di base
(messaggi, transazioni, ciclo di vita delle componenti, …) forniti dall’infrastruttura
• Modulare, componenti riusabili
a.a. 2004/05 Tecnologie Web 25
Java 2 Enterprise Edition (1)
• Standard Sun per le soluzioni “enterprise”, prevede le seguenti librerie:– Enterprise Java Beans (EJB): modello delle
componenti sul lato server– Java Naming and Directory Interface (JNDI)– Remote Method Invocation (RMI): accesso
distribuito in rete agli oggetti Java– Servlets: presentazione dinamica e gestione
sessioni per i client web
a.a. 2004/05 Tecnologie Web 26
Java 2 Enterprise Edition (2)
– Java Server Pages (JSP): facilitano la creazione di pagine HTML, DHTML e XML
– Java Messaging Service (JMS): comunicazione via message & queuing o publish & subscribe
– Java Transaction Service (JTA): gestione delle transizioni distribuite (XA o CORBA OTS)
– Java DataBase Connection (JDBC) accesso uniforme agli RDBMS
– Java Autentication and Authorization Service– JavaMail: accesso ai server di posta elettronica
Costruiti “sopra” i servizi CORBA
a.a. 2004/05 Tecnologie Web 27
Enterprise Java Beans• Entity EJB
– supportano accessi condivisi– rappresentano dati persistenti su DB– identificati da una chiave univoca (primary key)
• Session EJB– eseguono le richieste di un singolo client– vita per il tempo della connessione– implementano la logica di business
• Message-Driven EJB (v. 2.0)– in ricezione di messaggi asincroni (JMS o altri)– vita breve per l’elaborazione di un singolo messaggio
a.a. 2004/05 Tecnologie Web 28
CICS
JSPServlet
Session Bean
JCAResourceManager
Message-DrivenBean
EntityBean
Applet
Browser
DBMS
ERP
J2ME
ServerDesktop
Applicazioni J2EE
a.a. 2004/05 Tecnologie Web 29
Elementi di un ambiente EJB
EJB ContainerEJB Container
EJB instance
method-1()method-2()
HomeHome
Object (Remote)Object (Remote)
EJB instance
method-1()method-2()
Crea, distrugge, cercaCrea, distrugge, cerca
Sicurezza - accesso ai dati - transazioni, ...Sicurezza - accesso ai dati - transazioni, ...
EJB ServerEJB Server
a.a. 2004/05 Tecnologie Web 30
EJB Server
• Fornisce la Java Virtual Machine e le classi di supporto agli EJB
• Fornisce le funzioni di base di ORB e TP monitor
• Fornisce le funzioni di accesso ai DB
• Realizza il bilanciamento del carico e l’alta disponibilità
a.a. 2004/05 Tecnologie Web 31
EJB Container
• fornisce l’ambiente in cui gli EJB di una classe vengono eseguiti
• fornisce ai client l’accesso a EJB Home e Object• realizza, insieme all’EJB server, i servizi di base:
sicurezza, transazioni, naming, persistenza (dello stato)
• può gestire pool di oggetti della stessa classe
a.a. 2004/05 Tecnologie Web 32
EJB Object (Remote)
• Rappresenta l’interfaccia dell’EJB verso il mondo esterno
• Filtra ed integra i messaggi verso le istanze di EJB
• Coordina le transazioni
• Nome: <classe>
a.a. 2004/05 Tecnologie Web 33
EJB Home
• Permette di creare istanze di oggetti di una classe e di cercarle
• Nome: <classe>Home
• Metodi:– create ()– destroy ()– interfaccia finder (solo per entity EJB)
a.a. 2004/05 Tecnologie Web 34
Sviluppo di un EJB
Si veda ...
a.a. 2004/05 Tecnologie Web 35
Formati di deployment J2EE
– Ogni prodotto richiede file “deployment descriptor” proprietari per descrivere le caratteristiche non standard (load balancing, gestione guasti, risorse…)
a.a. 2004/05 Tecnologie Web 36
Dichiarazione di un’interfaccia remota (Object)
import javax.ejb.EJBObject;import java.rmi.RemoteException;import java.math.*;
public interface Converter extends EJBObject { public BigDecimal dollarToYen(BigDecimal dollars) throws RemoteException; public BigDecimal yenToEuro(BigDecimal yen) throws RemoteException;}
a.a. 2004/05 Tecnologie Web 37
Esempio: creazione dell’interfaccia Home
import java.io.Serializable;import java.rmi.RemoteException;import javax.ejb.CreateException;import javax.ejb.EJBHome;
public interface ConverterHome extends EJBHome { Converter create() throws RemoteException,
CreateException;} (si veda http://java.sun.com/j2ee/tutorial/1_3-fcs/ per l’esempio completo)
a.a. 2004/05 Tecnologie Web 38
Esempio: implementazione dei metodi esposti
import java.rmi.RemoteException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import java.math.*;
public class ConverterBean implements SessionBean {
public BigDecimal dollarToYen(BigDecimal dollars) { … implementazione ... }
public BigDecimal yenToEuro(BigDecimal yen) { … implementazione ... }
public ConverterBean() {} public void ejbCreate() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {}}
a.a. 2004/05 Tecnologie Web 39
Esempio: il clientimport javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import
java.math.BigDecimal;
public class ConverterClient { public static void main(String[] args) { try { Context initial = new InitialContext(); Object objref = initial.lookup ("java:comp/env/ejb/SimpleConverter");
ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objref, ConverterHome.class);
Converter currencyConverter = home.create(); BigDecimal param = new BigDecimal ("100.00"); BigDecimal amount = currencyConverter.dollarToYen(param); System.exit(0);
} catch (Exception ex) {System.err.println(”!!!"); ex.printStackTrace(); } } }
a.a. 2004/05 Tecnologie Web 40
Interazioni fra le classi J2EE
a.a. 2004/05 Tecnologie Web 41
EJB ContainerEJB Container
ClientClient
EJB Jar
EJB Jar
DeploymentDescriptor
DeploymentDescriptor
Istanza del beanIstanza
del bean
NamingServiceNamingService
EJB HomeEJB
Home
EJB Context
EJB ContextEJB
ObjectEJB
Object
lookup interfaccia home con JNDI
findByPrimaryKey(..)
create(..)new o activate
EJB Objects
Pool
EJB Objects
Pool
ejbActivate(..)ejbPassivate(..)
isCallerInRole(..)
contesto di esecuzione fornito in automatico dal container ad ogni chiamata
metodi del bean es. ejbRemove()metodi di business
es. addPrestito(..)
Architettura Enterprise JavaBeans
a.a. 2004/05 Tecnologie Web 42
Persistenza ed EJB
• Bean-managed persistence (BMP)– i dati sono acceduti direttamente dal codice
attraverso librerie quali JDBC o SQLJ.
• Container-managed persistence (CMP)– il container gestisce la persistenza in modo
automatico.– Container-managed relationships (CMR)– EJB Query Language (EJB QL)
a.a. 2004/05 Tecnologie Web 43
Mapping fra Entity Beans e DB
a.a. 2004/05 Tecnologie Web 44
Dichiarazione di dati CMP public class OrderBean implements EntityBean{
public Integer orderId;public String customerName;public Address customerAddress;// some code
}
<entity><description>CMP Entity Bean</description><display-name>Order</display-name><ejb-name>Order</ejb-name><home>order.OrderHome</home><remote>order.Order</remote><ejb-class>order.OrderBean</ejb-class><persistence-type>Container</persistence-type><primkey-field>orderId</primkey-field><prim-key-class>java.lang.Integer</prim-key-class><reentrant>False</reentrant><cmp-field>
<field-name>orderId</field-name></cmp-field><cmp-field>
<field-name>customerName</field-name></cmp-field><cmp-field>
<field-name>customerAddress</field-name></cmp-field>
</entity>
deployment descriptor:
a.a. 2004/05 Tecnologie Web 45
Service Oriented Architecture
• Perché nasce la SOA
• Web Services– .NET– Java
a.a. 2004/05 Tecnologie Web 46
Esempio di E-business workflow IPrima:• Acme manufacturing utilizza software
proprietario per organizzare prese della Federal Express
Adesso
• Acme utilizza il sito della Federal Express per seguire il percorso del pacco
a.a. 2004/05 Tecnologie Web 47
Esempio di E-business workflow IIPrima:• Acme manufacturing ordina un computer
dalla Dell e ne segue il procedimento con telefonate
Adesso
• Acme utilizza il sito della Dell per seguire le fasi di processamento dell’ordine, preproduzione, produzione, preparazione alla consegna e spedizione
a.a. 2004/05 Tecnologie Web 48
Service Oriented Architecture• Business to Business integration
• Integrazione di applicazioni sviluppate su piattaforme eterogenee
• Evoluzione middleware
• E-business workflow
a.a. 2004/05 Tecnologie Web 49
Service Oriented ArchitectureUtilità nel descrivere i processi aziendali in
forma leggibile su Web dai clienti
Utilità nel descrivere i processi aziendali in forma leggibile da macchine
a.a. 2004/05 Tecnologie Web 50
Service-oriented Architecture Interaction• Uses interface metadata
• One-to-one connections
• Client directs flow
• Linear path of execution
• Closed to unforeseen input once a flow is started
Interfacestub
Interface proxy
Client Server
Service-oriented or Event-driven
Source Sink
Event-driven Notification• Uses event descriptor metadata
• Many-to-many connections
• Sink (recipient) determines flow
• Dynamic, parallel, asynchronous flows
• Can react to new external input while process is in flight
Event
a.a. 2004/05 Tecnologie Web 51
Web Services
Services
Components
Granularity
ScopeB2B Market,
Global Enterprise
Coarse
Objects
HTTP+SOAP
MOM
ORB
Typical Access via
Small Enterprise,Complex Application
Homogeneous Application
Program
Tighter LooserCoupling
Procedural
Call
Dalle procedure ai servizi
a.a. 2004/05 Tecnologie Web 52
Trans-action
file
FTP
ORBl
Message
Gateway
APPC
APPC
CICS gateway
ORB
Messagequeue
Messagequeue
Messagequeue
Down-loadfile
Down-loadfile
Down-loadfile
HTTP/XML
Trans-action
file Screenscrape
ScreenscrapeScreen
scrapeTrans-action
file
CICS gatewayTrans-action
file
SocketsRPC
La complessità dei sistemi informativi aziendali nasce dalla sovrapposizione nel
tempo delle soluzioni
a.a. 2004/05 Tecnologie Web 53
Enterprise
ASPs and
Outsourcers
Suppliers
Subsidiary
Consumers
Business Customer
s & Dealers
Data CenterERP HR
Billing
Web-BasedIntermediaries
Suppliers
Web-BasedIntermediaries
SalesBranch
Virtual Enterprise
Soluzione: un’infrastruttura aziendale di intercomunicazione fra le applicazioni
Shop Floor
ShippingDept
ServicePurchasing Marketing
Infrastruttura aziendale di Intercomunicazione
Business Customers
a.a. 2004/05 Tecnologie Web 54
Service Oriented Architectures (SOA)
Infrastruttura integrazione
a.a. 2004/05 Tecnologie Web 55
EnterOrder
Composite Services/Process Objects
Batch Client
CustomerInventory Billing
Call Center
Browser
B2C Retail B2B Sales
A/R
Get Inventory
Update Inventory
GetBalance
Update Billing
Elemental Services/Business Objects
Open Account
Orders
InquireBalance
Get Orders
Update Orders
InquireOrders
GetID No.
Get Address
Change Address
Client Applications
SOA: il sistema informativo organizzato a Servizi
a.a. 2004/05 Tecnologie Web 56
Service-Oriented Architecture : The architecture of interfaces
Service Interface
Service Implementation
ServiceSoftware component that is a business-complete logical unit of work, accessible programmatically from independently designed contexts via a direct openly documented interface
SOAApplication software topology consisting of services and service consumers (clients) in loosely coupled 1-to-1 relationships InterfaceInterface
proxy
Service Consumer (Client)
a.a. 2004/05 Tecnologie Web 57
All-New Service
Wrapped Service
Composite Service
Serviceinterface
Serviceimplementation
Non-SOAapplications
Service Consumer
Service Consumer
Service Implementation:What Happens Behind The Interface
a.a. 2004/05 Tecnologie Web 58
Module 4
Module 3
Module 2
Module 5
Event1
Module 1
Event Driven
Event2
Event3
Fork
Join
Client 1
Server 1 Server 2/Client 2
Server 3 Server 4
Service Oriented
Flussi di esecuzione
a.a. 2004/05 Tecnologie Web 59
Funzioni di un Integration Broker
Messaging, Gateways,
File Transfer
Me
tada
ta M
ana
gem
ent
De
velo
pmen
t To
ols
Ma
na
gem
en
t To
ols
Se
curi
ty a
nd
Dire
cto
ry
Business Process Management
Process Manager
Communication, Data Movement
Transformation
Intelligent Routing
Message Broker
Event and StateMonitoring
BusinessActivityMonitor
a.a. 2004/05 Tecnologie Web 60
Esempio di Architettura Multicanale
a.a. 2004/05 Tecnologie Web 61
I Web Services• Composizione di applicazioni attraverso componenti
distribuite sul WWW
• Standard, tutti basati sull’XML:
– SOAP (Simple Object Access Protocol) il protocollo di richiamo di procedure remote come web services
– WSDL (Web Services Description Language): il linguaggio di definizione dei web services
– UDDI (Universal Description, Discovery and Integration) il protocollo per ricercare i web services, una sorta di "elenco telefonico" o "pagine gialle" dei web services
a.a. 2004/05 Tecnologie Web 62
Formato dei messaggi SOAP
• SOAP Header– dati opzionali sulla chiamata stessa
(autenticazione, pagamento, dove sono dichiarati i tipi usati, …)
• SOAP Body– contiene i dati delle chiamate e/o i
risultati di ritorno
a.a. 2004/05 Tecnologie Web 63
WSDL
• WSDL allows Web services to be self-describing.
• A WSDL document includes nine basic XML elements:
• Five abstract elements — port type, operation, message, part and type
• Three concrete elements — service, port and binding
• One definition element — provides definitions relating to the service.
Abstract Implementation
Port Type
Operation
Messages <types> … </types> <parts> … </parts>
Binding
End Point End Point
MapsTo
ProtocolAssociated
WithPort
a.a. 2004/05 Tecnologie Web 64
definitionselement
<message>elements
<portType>element
typeselement
messageelement
portTypeelement
bindingelement
serviceelement
<?xml version="1.0"?><definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"xmlns:tns="http://example.com/stockquote.wsdl"xmlns:xsd1="http://example.com/stockquote.xsd"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns="http://schemas.xmlsoap.org/wsdl/">
<types><schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema"><element name="TradePriceRequest">
<complexType><all>
<element name="tickerSymbol" type="string"/></all>
</complexType></element>
</schema>
</types><message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message><portType name="StockQuotePortType">
<operation name="GetLastTradePrice"><input message="tns:GetLastTradePriceInput"/><output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType><binding name="StockQuoteSoapBinding">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice"><soap:operation soapAction="http://example.com/GetLastTradePrice"/>
<input><soap:body use="literal"/>
</input><output>
<soap:body use="literal"/></output>
</operation></binding><service name="StockQuoteService">
<documentation>My first service</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port></service>
</definitions>
operationelement
portelement
WSDL Document Elements
a.a. 2004/05 Tecnologie Web 65
UDDI Registry Data Structures<businessEntity >authorizedName="0100003PAJ" operator=www.ibm.com/services/uddi businessKey="83B31400-7581-11D5-889B 0004AC49CC1E"> ......
.....
</businessEntity>
<businessServices><businessService serviceKey="7BB589E0-7586-11D5-889B-
0004AC49CC1E" businessKey="83B31400-7581-11D5-889B-0004AC49CC1E">
.....
.......
</businessServices>
<bindingTemplates> <bindingTemplatebindingKey="7BB6C260-7586-11D5-889B-0004AC49CC1E serviceKey"7BB589E0-7586-11D5-
8890004AC49CC1E">
</bindingTemplate>
<bindingTemplatebindingKey="7BBB0820-7586-11D5-889B-0004AC49CC1E serviceKey= "7BB589E0-7586-11D5-889B0004AC49CC1E">.....
</bindingTemplate></bindingTemplates>
<tModelauthorizedName="Harpo Marx operator="www.ibm.com/services/udi tModel key="983d-999a-4567>
.....
</tModel>
<publisherAssertions generic = "2.0"
operator="www.ibm.com/services/uddi" authorizedName="Sweeney Todd" xlmns =urn:sweeneysmeatpies.com:http>">.
</publisherAssertions>
"white pages"Name, description, contacts, categories
<tModelauthorizedName="Chico Marx"operator="www.ibm.com/services/uddi" tModel key="1234-3456-7da9">
.....
</tModel>
Referencesone or more
"green" pagesbusiness process, service description, bindings
tModelTechnical information for using the service
"yellow pages"Business categories (NAICS, UN/SPSC,
geographical taxonomies)
Publisher AssertionsAsserts a relationship between two Business
Entities
Referencesone or more
businessrelationship
a.a. 2004/05 Tecnologie Web 66
Service Interface
Import
Types
Message
PortType
Binding
Business Service
BindingTemplate Finds
Port
Points To
Import
Service
Business Entity
Points To
Imports
Service Implementation
UDDIRegistrationFile
WSDLFile
Mapping WSDL to UDDI
tModel
a.a. 2004/05 Tecnologie Web 67
eXtensible Markup Language (XML)
• Standard del W3C
• Deriva dallo Standard Generalized Markup Language (SGML) come l’HTML
• Orientato alla rappresentazione dei dati
• Il formato di un documento XML è definito in un DTD (Data Type Definition)
• L’eXtensible Stylesheet Language (XSL) descrive le regole di trasformazione di documenti XML in altri documenti XML o HTML
a.a. 2004/05 Tecnologie Web 68
Esempio di documento XML
<?xml version="1.0" encoding="UTF-8" ?><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE RICHIESTA_PAGAMENTO<!DOCTYPE RICHIESTA_PAGAMENTO SYSTEM SYSTEM
“ “http://www.miodtdserv.com/richiesta_pagamenti.dtdhttp://www.miodtdserv.com/richiesta_pagamenti.dtd")")>>
<!--<!-- Messaggio relativo ad una richiesta di pagamento a Messaggio relativo ad una richiesta di pagamento a seguito di fattura seguito di fattura -->-->
<<RICHIESTA_PAGAMENTORICHIESTA_PAGAMENTO>>
<<FATTURA APPROVATA_DAFATTURA APPROVATA_DA="="Mario RossiMario Rossi"" DATA DATA="="22-Set-22-Set-19991999““
LIVELLOLIVELLO="="UrgenteUrgente"" FIRMATA_DA FIRMATA_DA="="Mario RossiMario Rossi">">
<<CLIENTECLIENTE>>Burlini Costruzioni spaBurlini Costruzioni spa</</CLIENTECLIENTE>>
<<ORDINE_ACQUISTOORDINE_ACQUISTO>>OA1234X99OA1234X99</</ORDINE_ACQUISTOORDINE_ACQUISTO>>
<<IMPORTOIMPORTO>>LIT 100.000LIT 100.000</</IMPORTOIMPORTO>>
</</FATTURAFATTURA>>
</</RICHIESTA_PAGAMENTORICHIESTA_PAGAMENTO>>
a.a. 2004/05 Tecnologie Web 69
Esempio di DTD<?xml version="1.0" encoding="UTF-8" ?><?xml version="1.0" encoding="UTF-8" ?>
<!-- Dichiarazione del documento "Richiesta di Pagamento" --<!-- Dichiarazione del documento "Richiesta di Pagamento" -->>
<!ELEMENT <!ELEMENT RICHIESTA_PAGAMENTORICHIESTA_PAGAMENTO ( (FATTURAFATTURA)+>)+>
<!ELEMENT <!ELEMENT FATTURAFATTURA ( (CLIENTE, ORDINE_ACQUISTO, IMPORTOCLIENTE, ORDINE_ACQUISTO, IMPORTO)>)>
<!ATTLIST ARTICOLO <!ATTLIST ARTICOLO APPROVATA_DAAPPROVATA_DA CDATA #REQUIRED> CDATA #REQUIRED>
<!ATTLIST ARTICOLO <!ATTLIST ARTICOLO FIRMATA_DAFIRMATA_DA CDATA #REQUIRED> CDATA #REQUIRED>
<!ATTLIST ARTICOLO <!ATTLIST ARTICOLO DATADATA CDATA #IMPLIED> CDATA #IMPLIED>
<!ATTLIST ARTICOLO <!ATTLIST ARTICOLO LIVELLOLIVELLO (Urgente|Normale) " (Urgente|Normale) "NormaleNormale" >" >
<!ELEMENT <!ELEMENT CLIENTECLIENTE (#PCDATA)> (#PCDATA)>
<!ELEMENT <!ELEMENT ORDINE_ACQUISTOORDINE_ACQUISTO (#PCDATA)> (#PCDATA)>
<!ELEMENT <!ELEMENT IMPORTOIMPORTO (#PCDATA)> (#PCDATA)>
a.a. 2004/05 Tecnologie Web 70
Simple API for XML (SAX).
a.a. 2004/05 Tecnologie Web 71
Document Object Model (DOM)
a.a. 2004/05 Tecnologie Web 72
Trasformazioni XSLT
XSLT (eXtensible Stylesheet Language for Transformations)
a.a. 2004/05 Tecnologie Web 73
COM
DNAMTS
.NET
DNA2000
COM+
DCOM
…….
1990s 2000s
Distributed Components
Components
Transactional Components
Three-Tier Architecture
Enterprise Quality of Service
Loose Coupling
Internet Network Computing
Evoluzione delle soluzioni Microsoft
a.a. 2004/05 Tecnologie Web 74
Microsoft .NET (1)
• CLR (Common Language Runtime) – interprete di IL (Intermediate Language) derivabile da molti
linguaggi di programmazione: VB, C++, C#, Cobol
– tutti i linguaggi supportati diventano object oriented (ereditarietà, costruttori parametrici) superando i limiti di COM
– garbage collection della memoria
– gestione delle eccezioni
– sicurezza durante l’interpretazione
– compilatore just-in-time
– gestione delle versioni
• Spazi di nomi gerarchici (namespace)
a.a. 2004/05 Tecnologie Web 75
Microsoft .NET (2)
• Intercomunicazione fra oggetti COM e .NET
• ASP.NET: – sviluppo di pagine HTML dinamiche con gestione degli eventi sui
controlli visuali (Web Forms)
– sviluppo facilitato di Web Services
a.a. 2004/05 Tecnologie Web 76
System System
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
GlobalizationGlobalizationDiagnosticsDiagnosticsConfigurationConfigurationCollectionsCollections
ResourcesResourcesReflectionReflectionNetNetIOIO
ThreadingThreadingTextTextServiceProcessServiceProcessSecuritySecurity
DesignDesignADOADO
SQLTypesSQLTypesSQLSQL
XPathXPathXSLTXSLT
RuntimeRuntimeInteropServicesInteropServices
RemotingRemoting
SerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionStateCachingCaching SecuritySecurity
ServicesServicesDescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
UIUIHtmlControlsHtmlControls
WebControlsWebControls
System.DrawingSystem.Drawing
ImagingImagingDrawing2DDrawing2D
TextTextPrintingPrinting
System.Windows.FormsSystem.Windows.Forms
DesignDesign ComponentModelComponentModel
Il Framework .Net
a.a. 2004/05 Tecnologie Web 77
JVM e CLR
a.a. 2004/05 Tecnologie Web 78
Running Process’ Memory
SomeSources.exe
IL
Metadata
JIT Compiler
10010100 10110000 10000000 1011101011011011 11010111 11000010 01110110
Native Machine Language
The CPU executes the JIT-compiled machine code directly
At execution time the IL and Metadata are JIT compiled
Executing a Managed Application
a.a. 2004/05 Tecnologie Web 79
Altre caratteristiche di .NET
• Librerie XML e web services• Tutti i linguaggi sono completamente OO
(ereditarietà) ed interoperabili (stesso MSIL)• Assembly (unità autodescrittive di deployment)• Versioning delle interfacce (fine del “DLL hell”)• Remoting• ADO.NET: vista dei dati basata su XML
a.a. 2004/05 Tecnologie Web 80
Enterprise Services
ASP.NETASP.NET
Enterprise Enterprise ServicesServices
ADO.NETADO.NET {{
Gli Enterprise Services forniscono i servizi di MTS/COM+ (transazioni, pooling risorse...)
a.a. 2004/05 Tecnologie Web 81
Network
Managed Process
ASP.Net ISAPI DLL
Hosting the .NET Framework CLR
XML Web Service objects
SOAP MethodRequest
SOAP MethodResponse
Web Server
Ser
vice
-Cli
ent
ASP.Net
a.a. 2004/05 Tecnologie Web 82
Esempio di Web Service con ASP.NET
<%@ WebService Language="C#" Class="DateService" %>using System;using System.Web.Services;
public class DateService:WebService{ [WebMethod] public String GetDateString() { return DateTime.Now.ToString("D"); }}
DateService.asmxDateService.asmx
• Servizi implementati in file .ASMX
a.a. 2004/05 Tecnologie Web 83
Esempio di richiamo di un Web Service in .NET
using System;
class App{ public static void Main(){ DateService webObj = new DateService(); webObj.Url = "http://www.miaazienda.com/Services/DateService.asmx"; String dateString = webObj.GetDateString(); Console.WriteLine(dateString); }}
DateClient.csDateClient.cs
• Simple model for network communication– Object Instantiation– Method Call
• DateService type is a proxy object
a.a. 2004/05 Tecnologie Web 84
JWSDP• Java Web Services Development Pack come
infrastruttura per lo sviluppo di applicazioni Web-based
• Tecnologie di– accesso a Database mediante JDBC– gestione di XML– gestione di applicazioni Server-side (Servlets, JSP) – Gestione dei Web Services
a.a. 2004/05 Tecnologie Web 85
JWSDP• JAXP – processa documenti XML utilizzando
diversi parsers• JAXB – permette la corrispondenza tra elementi
XML a classi Java• JAXM – invia messaggi SOAP su Internet in
modo standard• JAXR – permette di accedere ai business
registries e condividere le informazioni• JAX-RPC – invia chiamate a messaggi SOAP e
riceve la risposta
a.a. 2004/05 Tecnologie Web 86
Soluzione Java per i Web Services
OS
WebContainer
EJBContainer
JVM
Application Server
SOAPProcessor
LocalUDDI
WSDL
Servlets
JSPsEJBs
Connectors
Internet Router
Firewall
Load
Balancer
WebServers
IntegrationBrokers
RDBMS
Legacy
Middle TierFront-End Tier Back-End Tier
ApplicationServer Subtier
a.a. 2004/05 Tecnologie Web 87
Composizione di WS (I)
• Servizio composto: utilizza altri servizi per fornire il servizio richiesto
• Middleware per la composizione di servizi fornisce astrazioni e infrastrutture per la definizione ed esecuzione del servizio composto
a.a. 2004/05 Tecnologie Web 88
Composizione di WS (II)
Esempio: supply chain
Supplier I
Supplier II
Supply chain
contabilità fornitori
a.a. 2004/05 Tecnologie Web 89
Composizione di WS (III)
• Modello e linguaggio di composizione
• ambiente di sviluppo
• Ambiente di esecuzione
a.a. 2004/05 Tecnologie Web 90
Dimensioni del modello di composizione di WS
• Modello delle componenti
• Modello di orchestrazione
• Modello dei dati e di accesso ai dati
• Modello di selezione
• Transazioni
• Gestione delle eccezioni
a.a. 2004/05 Tecnologie Web 91
BPEL: Business Process Execution Language for Web Services
• Linguaggio che supporta la specifica di composizione e coordinazione
• Specifiche per processo eseguibile per definire l’implementazione logica di un servizio composto
• Comportamento esterno del servizio e implementazione interna
a.a. 2004/05 Tecnologie Web 92
Gli standard XML
Transports
XML, XML Schemas, Encoding
SOAP (WS Routing, WS Attachment, DIME)
WSDL, UDDI, WS-Introspection
WS-Coordination
WS-Transaction
WS-SecurityReliable
Messaging
BPEL (Business Process Automation)
IBM’s and Microsoft’s “Web Services Architecture”(as of September 2002)
TBD
ImplementedStandards
ProposedStandards
Pre-Web ServicesStandards
a.a. 2004/05 Tecnologie Web 93
Software Engineering
• Ciclo di vita del software
• OO Design e UML
a.a. 2004/05 Tecnologie Web 94
Requisiti di Sistema
validazione
Requisiti Software
validazione
Disegno di Sistema
validazione
Disegno di Dettaglio
validazione
Programmazione
Unit Test
Test
Avviamento e Manutenzione
Il Ciclo di Vita del Software(a cascata)
Analysis PhaseAnalysis Phase
System DesignSystem Design
Object DesignObject Design
ImplementationImplementation
Delivery & Delivery & MaintenanceMaintenance
a.a. 2004/05 Tecnologie Web 95
Esempio Waterfall
• Design dell’architettura– Top-down design– Decidere il linguaggio di programmazione– Decidere sul riuso– Design delle interfacce dei moduli– Tutte le decisioni di design devono essere
giustificate chiaramente
a.a. 2004/05 Tecnologie Web 96
Esempio Waterfall (cont.)
• Detailed Design– Design delle strutture dati e degli algoritmi dei moduli
• Codifica– Tradurre il design dettagliato in codice
• Testing– Test con dati tipici, dati errati
– Stress testing
• Manutenzione
a.a. 2004/05 Tecnologie Web 97
Problemi del Waterfall
• Non accade– Progetti reali tendono a non seguire un flusso
sequenziale• Attività sono fatte opportunisticamente durante tutte le “fasi”
• Non prevede incertezza e modifica dei requisiti– Like ordering with no chance to look around, compare
prices, change your mind, etc. (McCracken and Jackson, 1981)
• Consegna solo alla fine (lunga attesa)
a.a. 2004/05 Tecnologie Web 98
Quando il Waterfall funziona
• Progetti molto semplici
• Progetti dove i requisiti sono stabili e orientati alla matematica e il sistema può essere testato facilmente– Esempio: centrale nucleare
a.a. 2004/05 Tecnologie Web 99
Prototyping
• “When a new system concept or new technology is used, one has to build a system to throw awayto throw away, for even the best planning is not so omniscient as to get it right the first time.” (Brooks, 1975)
• Modelli da eliminare utilizzati per capire I requisiti ed esporre i rischi
• Non devono essere basati sul codice (es., arta)
a.a. 2004/05 Tecnologie Web 100
Natura del prototyping
Un approccio plan-based adatto a piccoli, agili sviluppi durante l’analisi dei requisiti
a.a. 2004/05 Tecnologie Web 101
Analisi dei requisiti
Prototyping
Prodotto ingegnerizzato
Requisiti
QuickDesign
CostruirePrototype
ValutarePrototype
RaffinarePrototype
Modifiche?Yes
No
(Pressman, 1996)
a.a. 2004/05 Tecnologie Web 102
Problemi del Prototyping
• Cliente vede una versione funzionante che può non essere costruita con qualità e manutabilità in mente e non capisce che deve essere gettata via
• E’ difficile da gettare via in ogni caso…– Compromessi di implementazione utilizzati per
veloci prototipi possono diventare parte della versione funzionante
a.a. 2004/05 Tecnologie Web 103
Incrementale
• Forma originale: “Evolutionary delivery” (Gilb, 1988)
• Sistema consegnato in pezzi, alta priorità viene prima
• Incrementi iniziali informano requisiti per futuri incrementi
• Dimensione degli incrementi varia (originalmente un massimo di alcune settimane)
a.a. 2004/05 Tecnologie Web 104
Incrementale
Def outlinerequisiti
IntegrazIncrement.
Validaz.sistema
Assegn. requisitiagli incrementi
Design systemarchitecture
Svilup Incremsistema
Validaz.Increment.
SistemaFinale
Sistema incompleto
(Sommerville, 2001)
a.a. 2004/05 Tecnologie Web 105
Extreme Programming (XP)
• “Listening, Testing, Coding, Designing. That's all there is to software. Anyone who tells you different is selling something.” – Kent Beck
• Processo software evolutivo e Lightweight
a.a. 2004/05 Tecnologie Web 106
XP Valori e Principi
• 4 Valori:– Semplicità– Comunicazione– Feedback– Coraggio
Principi base: Feedback rapido Assume
semplicità Cambiamenti
incrementali Abbraccia il
cambiamento Lavoro di qualità
a.a. 2004/05 Tecnologie Web 107
XP Practices
• Planning game
• Releases corte
• Metafore
• Design semplice
• Testing
• Refactoring
Pair programming Proprietà collettiva Continuous
integration Settimana di 40 ore Cliente On-site Standards di
codifica
a.a. 2004/05 Tecnologie Web 108
Extreme Programming
(Wells, 2000)
a.a. 2004/05 Tecnologie Web 109
UML per documentare le applicazioni three-tier
• L’UML è un linguaggio di modellazione accettato come standard da importanti organizzazioni ed aziende (OMG e Microsoft fra le altre) particolarmente adatto alla descrizione di applicazioni three-tier e/o a componenti.
• Molte metodologie (per esempio Rational Unified Process) sono basate su UML
• UML è composto da una serie di formalismi, fra di essi citiamo quelli più utili a descrivere il progetto in esame:
– Use case diagrams
– Class diagrams
– Sequence diagrams
– Component diagrams
Un articolo che spiega i passi dello sviluppo da UML a EJB cliccare qui
a.a. 2004/05 Tecnologie Web 110
Componenti di UML
a.a. 2004/05 Tecnologie Web 111
Use Case Diagrams
• Gli Use Case descrivono delle funzioni elementari viste dal punto di vista dell’utente finale
• L’elenco degli Use Case rappresenta l’intera copertura funzionale dell’applicazione
• Ogni Use Case può essere descritto con un testo allegato o con altri diagrammi (sequence e activity) che ne descrivono il comportamento dettagliato
Receive Alert
Input relationship data
Customer
Confirm Contract
a.a. 2004/05 Tecnologie Web 112
Class Diagrams
Login<<servlet>>
Update Contract Data<<servlet>>
ContractManager<<Session EJB>>
Customer<<Entity EJB>>
Contract<<Entity EJB>>
0..*
1..1
• I class diagram rappresentano le componenti logiche dell’applicazione
• possono rappresentare: componenti grafiche, procedure, dati…
• le classi possono avere attributi e metodi associati
Tier 1 Tier 3Tier 2
a.a. 2004/05 Tecnologie Web 113
Sequence Diagrams• I Sequence diagrams descrivono, per uno specifico use case, le interazioni
che intervengono fra le classi
• Dai sequence diagrams si ottengono dati utili all’analisi delle comunicazioni in rete
• Realizzando sequence diagram per ogni use case dell’applicazione si certifica la completezza dei class diagram
: Update Contract Data
: Client : ContractManager
: Contract : Customer
input new dataupdate( ) setMaxAmount( )
sendAlert( )
Firewallhttp
FirewallIIOP
WS AS
a.a. 2004/05 Tecnologie Web 114
Component Diagram
• I Component Diagram descrivono i moduli software che compongono l’applicazione
• Si possono descrivere le relazioni fra le classi e le componenti che implementano tali classi (interfacce)
• Dai component diagram alcuni strumenti CASE permettono la generazione di codice (Java, VB, C++ …)
Contract<<Entity EJB>>
Contract
ContractHome
a.a. 2004/05 Tecnologie Web 115
Un esempio: una BibliotecaDiagramma degli Use Case
Acquisizione nuovo libro o CD
Restituzione
Prestito di un libro o CD
Utente Biblioteca
Nuova iscrizione
<<estende>>
Bibliotecario
a.a. 2004/05 Tecnologie Web 116
Descrizione dello Use Case “Prestito”
USE CASE: Prestito
ACTOR:
Bibliotecario
PRECONDIZIONI:
Un iscritto alla biblioteca si presenta per un prestito di un libro o CD
DESCRIZIONE:
L’iscritto può richiedere direttamente il titolo del libro o CD, nel caso non si ricordasse esattamente il titolo, può indicarne l’autore.
Il bibliotecario effettua la ricerca e viene visualizzata una lista di libri o CD che possono essere presi in prestito e li propone all’iscritto.
L’iscritto ne seleziona uno e lo chiede in prestito.
Il bibliotecario va a reperire il libro o CD e registra l’effettuato prestito.
ECCEZIONI:
Il libro o CD non è disponibile in biblioteca: il prestito non viene effettuato.
Il libro o CD è già in prestito: il prestito non viene effettuato.
La persona richiedente non è ancora iscritto: il bibliotecario lo iscrive e poi continua l’operazione di prestito.
L’iscritto ha già troppi libri o CD in prestito: il prestito non viene effettuato.
POSTCONDIZIONI:
Prestito effettuato: libro o CD esce dalla biblioteca.
a.a. 2004/05 Tecnologie Web 117
Finestra “Ricerca”
a.a. 2004/05 Tecnologie Web 118
Finestra “Prestito”
a.a. 2004/05 Tecnologie Web 119
Diagrammma delle Classi
Libro
Editore : String
CD
Casa_Discografica : String
Prestito
Data : Date
Crea()
ElencoIscritti
NuovaIscrizione()
RicercaIscritto()
Iscritto
Nome : String
String
NArticoli : Number
NuovoPrestito()
RilasciaPrestito()
+Elenco_Iscritti
+Iscritto
Biblioteca
OraApertura : Ora
OraChiusura : Ora
RicercaPerTitolo()
RicercaPerAutore()
ProdottoMultimediale
Titolo : String
Autore : String
Locazione
RichiestaDisponibilità()
RendiIndisponibile()
RendiDisponibile()
+prestito
+prestito
prestito
1
*
+appartiene1
+appartiene*
appartiene
a.a. 2004/05 Tecnologie Web 120
Sequence Diagram dello Use Case “prestito”
: BibliotecarioUniversitaria :
Biblioteca : Prodotto
Multimediale : Finestra Prestito : Finestra Ricerca : Prestito : Iscritto : ElencoIscritti
1: Attiva finestra
2: RicercaPerAutore (String)
3: RicercaPerTitolo (String)
6: Attiva finestra
7: RicercaIscritto( )
8: Crea ( )
9: NuovoPrestito ( )
10: RendiIndisponibile ( )11: conferma
5: lista
4: RichiestaDisponibilità ( )
alternativi
a.a. 2004/05 Tecnologie Web 121
State Diagram di “Prodotto Multimediale”
Iniziale
Eliminato
In Acquisto
Acquistato
acquisto Registrato
Disponibile
In Prestito
Disponibile
inventario
catalogazione
In Prestito
restituzione
perdita
prestito
richiesta