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 ...
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