A.a. 2004/05Tecnologie Web1 Architetture parte II a.a. 2004-2005 parte 2.

Post on 03-May-2015

215 views 1 download

transcript

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

QQ

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