Schema UML dei componenti del server AMALFIm (77kb)
Singoli componenti:
PersonalDataManager
BookmarkManager
ConfigurationManager
IgnoreManager
DBConnector (server-agent)
ObjectServer
ObjectRegistryACL
DBAbstractor
StatisticServer
DBConnector (statistic server)
Costituisce il nucleo fondamentale del server-agent. Viene creato per ogni utente che richiede il servizio e non puo' essere trasferito tra utenti. Fa riferimento a quattro oggetti esterni: un bookmark manager per la gestione dei bookmark dell'utente (AMALFIm integra un bookmark repository), un ignore manager (gestisce la lista dei siti che vengono ignorati dalle analisi di AMALFIm), un configuration manager (dove viene gestita la configurazione che l'utente ha fornito manualmente) ed una database connection, riferimento per le operazioni con il database. Il profilo dell'utente viene qui memorizzato sotto forma di albero, dove ad ogni nodo sono associati un numero imprecisato di nodi figli che ne specializzano l'argomento. Ogni nodo, oltre all'identificativo dell'argomento stesso, contiene un punteggio ad esso riferito. Tra gli attributi, infine, e' presente un tag che consente all'utente di scegliere se essere incluso o meno nelle analisi statistiche (che comunque non vanno a ledere la sua privacy).
Lo user-agent puo' invocare il metodo interestScore, con cui, a fronte di una
lista contenente gli argomenti di cui tratta un determinato oggetto che si trova
a valutare (nell'esempio del plugin per il browser, questa analisi viene compiuta
su una pagina web), il server risponde con un intero che quantifica l'interesse
dell'utente per quel determinato oggetto. Tale intero viene calcolato sul server,
seguendo un algoritmo il piu' raffinato possibile.
Il metodo deliverProfileData consente al client di fornire i dati ricavati da
nuove analisi compiute sul comportamento dell'utente, e va a modificare l'albero
che attualmente contiene il profilo dell'utente.
Il BookmarkManager prende in carico la gestione dei bookmark dell'utente, trattati come un albero di directory (esattamente come sono gestiti dai piu' comuni browser). Le funzioni stesse che gestiscono i bookmark riguardano l'inserimento e la cancellazione di nodi e foglie dall'albero stesso.
La gestione della lista dei siti da ignorare nelle statistiche (es. webmail, server di banner, ecc.) avviene mediante questo oggetto, che integra semplici funzioni di manipolazione della lista stessa.
La configurazione utente dello user-agent viene trattata da questo oggetto. Si vuole lasciare distinta la configurazione fornita dall'utente e quella risultante dall'analisi del suo comportamento. L'utente definisce un albero contenente i propri interessi, albero che sara' sottoinsieme di una struttura predefinita, quale ad esempio la classificazione per argomenti disponibile su siti come OpenDirectory.
L'oggetto DBConnector costituisce un filtro per tutte le richieste di operazioni su database compiute dal server-agent. Essendo l'unico oggetto autorizzato a portare avanti le richieste verso il DB, esso puo' integrare la loro verifica a fronte delle ACL specificate nel server.
Il server principale di AMALFIm e' costituito dall'ObjectServer che inizializza il sistema e rimane in attesa delle richieste di autenticazione da parte degli utenti, che si identificano mediante UserID e password. Ulteriori restrizioni possono essere applicate sull'IP di provenienza delle richieste, per escludere eventuali client indesiderati oppure per bloccare alcuni tipi di attacco di tipo DoS. Questo stesso oggetto serve ad accettare le richieste di servizi statistici e ad inizializzare le connessioni a database per tutta l'applicazione.
Un singolo oggetto si occupa delle richieste di autenticazione e della regolamentazione dell'accesso a database, per garantire la centralizzazione della sicurezza a livello di applicazione. Lo stesso oggetto, una volta verificati i diritti dell'agente ad usufruire del server, inizializza il server-agent e ne segue il ciclo vitale, registrandone il nome e controllandone i tempi di idle e la connessione, eventualmente rimuovendo l'oggetto server-agent precedentemente creato. Al suo interno viene previsto lo spazio per conservare una tabella delle ACL relative agli oggetti attualmente attivi, oltre che la possibilita' di modifica di queste stesse ACL.
Il DBAbstractor rappresenta la connessione al database di supporto all'applicazione. Al suo interno viene gestito il layer di astrazione da database che consente di utilizzare il server AMALFIm su database diversi, al fine di aumentarne la portabilita'. I parametri con cui viene inizializzato sono quelli classici delle connessioni a DB, cosi' come i metodi.
Il servizio di statistica e' concentrato quasi interamente all'interno dell'oggetto StatisticServer, il quale viene creato con lo UserID dell'utente che effettua la richiesta, che puo' impostare l'argomento di ricerca oppure delle URI di riferimento. Le operazioni possibili sono un calcolo dell'interesse globale relativamente ad uno specifico argomento, la presenza di una data URI all'interno dei bookmark degli utenti (quantificata dal numero di utenti che hanno aggiunto tale URI ai loro bookmark) e la presenza di una data URI nelle liste di ignore. Tali richieste si basano su analisi globali del database, prive di qualsiasi riferimento diretto agli utenti.
Anche il servizio di statistica possiede il proprio oggetto di connessione a database, che provvede a filtrare le richieste tramite le ACL impostate nel server, per evitare l'esecuzione di operazioni non consentite (si pensi ad esempio all'aggiunta di un dato bookmark all'intera popolazione di utenti, una nuova forma di spamming...)
|