15.06.2013 Views

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

al momento della progettazione C/S.<br />

Carnielli Efrem: Programmazione a componenti<br />

Pr<strong>in</strong>cipi <strong>di</strong> progettazione<br />

Il bilanciamento <strong>di</strong> questi fattori, oltre a garantire buone prestazioni, assicura che si<br />

stia progettando un sistema scalare.<br />

L’architettura su più livelli (multi-tier) è naturalmente orientata alla<br />

scalabilità.<br />

3.2.3 Concorrente vs simultaneo<br />

Un altro importante concetto che è bene sapere al f<strong>in</strong>e <strong>di</strong> una buona progettazione<br />

è la <strong>di</strong>st<strong>in</strong>zione tra concorrente e simultaneo.<br />

Si parla <strong>di</strong> concorrenza quando due entità competono per la stessa risorsa.<br />

Si parla <strong>di</strong> simultaneità quando si accede contemporaneamente, ma non<br />

necessariamente si è <strong>in</strong> concorrenza per una risorsa.<br />

Supponiamo che faccia una ricerca su Google, quando effettuo la richiesta mi<br />

compare un pag<strong>in</strong>a con tutti i risultati trovati. In tutto il mondo ci possono essere<br />

20.000 persone che sono davanti alla stessa pag<strong>in</strong>a simultaneamente e la stanno<br />

leggendo. Solo nel momento <strong>in</strong> cui decido a quale pag<strong>in</strong>a accedere <strong>in</strong>vio una<br />

richiesta, per cui entro <strong>in</strong> concorrenza con tutti coloro che ne hanno <strong>in</strong>viata una.<br />

Ma dei 20.000 mila che leggono avrò che solo qualche cent<strong>in</strong>aio avrà <strong>in</strong>viato la mia<br />

stessa richiesta, per cui sarà <strong>in</strong> competizione con me. Questo per <strong>di</strong>re che avrò<br />

20.000 accessi simultanei, ma solo 200 concorrenti.<br />

Se dovessi ricercare un libro su Amazon le cose cambiano, <strong>in</strong> quanto questo ricorda<br />

gli utenti che fanno accesso e che hanno un carrello e carica la sessione <strong>di</strong> ogni<br />

utente.<br />

Amazon è statefull, mentre google stateless.<br />

Nell' esempio gli utenti concorrenti <strong>in</strong>cidono sulla complessità computazionale,<br />

mentre quelli simultanei su quella temporale, cioè sullo spazio <strong>di</strong> memoria del<br />

server che mantiene le sessioni degli utenti.<br />

E' sul numero <strong>di</strong> utenti concorrenti che vado a decidere la capacità <strong>di</strong> carico del<br />

sistema <strong>in</strong> fase <strong>di</strong> progettazione, dopo uno stu<strong>di</strong>o accurato.<br />

3.3 Gestione degli errori<br />

A questo punto nasce il problema <strong>di</strong> capire dove collocare la gestione degli errori.<br />

Se è possibile, l’errore deve essere gestito nel livello che l’ha generato, altrimenti<br />

viene passato ad un livello superiore. Per far questo bisogna def<strong>in</strong>ire bene le<br />

responsabilità <strong>di</strong> ogni componente. Non è necessario che tutti gli errori arriv<strong>in</strong>o <strong>in</strong><br />

71

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!