Smartweb Project

E’ con gioia e privilegio che pubblicizzo un progetto portato avanti da un mio carissimo amico, nonché “commilitone” di tante battaglie virtuali, che ci ha visti combattere spalla a spalla per lunghissimo tempo, sin dai tempi del Commodore Amiga… lo ritengo un vero “fratello” per tantissimi motivi, che non sto qui ad elencare…😉

Se vi state chiedendo cosa abbia creato Roberto Lo Giacco di tanto innovativo, vi preannuncio che è “materia” per esperti programmatori: se non comprendete in pieno quello che leggerete di seguito è perfettamente normale… è un pò come tentare di capire il “bugiardino” di un qualsiasi medicinale che elenca una serie di features tecniche di cui gran parte di noi non ne comprende in pieno la terminologia utilizzata, mancando di una Laurea in medicina e farmacologia…

Comunque in parallelo con Roberto abbiamo spulciato e corretto la bozza di testo, in maniera da renderla quanto meno “commestibile” anche a chi non è esperto della materia. La mia collaborazione ha toccato la parte grafica (quel diagramma in 3D è opera mia) e ne seguirà un “evoluzione” ancora più interessante, che verrà prima testata e subito dopo pubblicata nello stesso sito. Grazie a questa collaborazione a distanza (vi confermo che lavorare da casa con l’ADSL, avendo totale libertà di orario, FUNZIONA alla grande!) ho approfondito argomenti che prima avevo solo potuto sfiorare non avendo l’occasione di metterli in pratica, per cui, in un certo senso, è una collaborazione che ha giovato ad entrambi… tra l’altro, grazie ad una mia fortuita dritta, verrà implementato un particolare “ingranaggio” che Roby integrerà quanto prima nel suo progetto… 🙂

SMARTWEB PROJECT

Smartweb Overview

SmartWeb è un framework, una “piattaforma” tramite la quale sviluppare “a strati” una applicazione distribuita, in maniera da:

1. Separare il lavoro a più persone/preposti;
2. Separare il lavoro in unità funzionalmente distinte per semplificare la manutenzione e l’evoluzione.

Ciò da la possibilità di operare solo sulla parte che ha bisogno di modifiche, senza toccare il resto dell’applicazione. Per cui si traduce in primis in un’ottima manutenzione dell’applicazione evitando l’insorgere di problemi sugli altri “strati”, e secondariamente una suddivisione strutturata dell’applicazione in tre categorie: Presentazione, Business e Persistenza.

La tecnologia utilizzata per sviluppare è prettamente Java (J2EE) con lo sfruttamento di alcuni framework disponibili nel mondo dell’open source per non reinventare la ruota: Struts di Apache (http://struts.apache.org/) e Hibernate di Red Hat/JBoss tra le principali.

Strato “Presentazione”
Lo strato “Presentazione” usa, se si considera un’applicazione web, l’interfaccia tra l’utente e l’applicazione stessa, e viene rappresentata principalmente da Java Server Pages (JSP). Una JSP, oltre a permettere la comunicazione tra utente e applicazione, ha un compito molto importante: quello di rappresentare le informazioni all’utente.
Può capitare per un qualsiasi motivo di dover ad esempio cambiare l’aspetto delle pagine del sito, magari per renderlo più gradevole all’utente che lo utilizza. Cambiare la grafica non vuol dire necessariamente cambiare anche la gestione delle informazioni, che molto probabilmente rimarrà uguale. Prendiamo ad esempio un’applicazione web “all in one”, cioè non progettata e suddivisa a strati, e immaginiamo di dover apportare delle modifiche alle pagine del sito: vorrebbe dire “mettere le mani” sull’intero codice, il che può portare ad effettuare modifiche non richieste che possono compromettere il funzionamento dell’intera applicazione.

Lo strato “Presentazione” funziona in maniera molto semplice: le JSP rappresentano le informazioni all’utente il quale può interagire con esse. Ogni volta che l’utente intende richiedere una JSP richiama una “Action”. L’Action esegue una serie di operazioni necessarie a soddisfare la richiesta dell’utente. A questo punto l’Action restituisce i risultati ottenuti dall’elaborazione, che verranno “inviati” alla JSP, che si occuperà di “presentare” le nuove informazioni.

Strato “Business”
Al Business Tier è delegata tutta la logica di business, in particolare la “gestione” dei dati su cui l’applicazione deve lavorare. Il Business tier si può immaginare come la “mente”, lo strato in cui si decide “come fare”. Come già detto ogni richiesta richiama un Action che si occupa prevalentemente di recuperare le informazioni provenienti dalla richiesta e di passarle allo strato di Business. Qui viene deciso come procedere nel trattamento dei dati in modo da ottenere le informazioni richieste. Nello strato di Business viene decisa tutta la logica che dovrà essere adottata per risolvere i problemi ma non si interviene direttamente sui dati, per intenderci in questo strato non si va a leggere o scrivere sul database ad esempio, come vedremo in seguito questo avviene nel Persistance tier.

Man mano che vengono esemplificati i concetti viene da se, che grazie all’uso di una programmazione a “strati” con cui si “modularizza” l’applicazione, se ne “intuiscono” all’istante i notevoli vantaggi apportabili. Ad esempio se in una applicazione si decidesse che i dati presentati all’utente devono essere ottenuti in maniera diversa, adoperando un’altra logica per la loro produzione, è facile capire che basterà lavorare esclusivamente sullo strato di Business lasciando inalterata la visualizzazione, perché i dati che verranno presentati saranno sempre quelli ma ottenuti in maniera diversa.

In SmartWeb i componenti del Business tier sono i BusinessObject ed il Domain, questo ultimo è una particolarità di SmartWeb che consente una modularizzazione migliore dell’applicazione.

Strato “Persistence”.
Nello strato Persistence, detto in breve, si salvano e richiamano i dati da una fonte tipo un database o un filesystem. In questo strato i BusinessObject diventano righe all’interno del database o strutture dati all’interno di un file XML a seconda dell’implementazione che si ritiene più utile. E’ facile immaginare come, avendo isolato in uno strato ben definito questa caratteristica sia possibile passare abbastanza facilmente dall’una all’altra soluzione in maniera più o meno trasparente. Lo stesso dicasi se volessimo salvare le informazioni in un formato binario proprietario oppure se volessimo renderle disponibili attraverso un server LDAP o qualunque altra sciocchezza ci venisse in mente. L’elemento che disaccoppia questa logica di gestione dei dati è la BusinessObjectFactory che, essendo specifica di ciascun BusinessObject, consente di avere una gestione differente dei dati anche all’interno della stessa applicazione. In altre parole potremmo decidere di salvare gli utenti dell’applicazione all’interno di un database relazionale come Oracle e contemporaneamente salvare la posta degli utenti dentro cartelle nel formato MailDir (uno degli standard) mentre la loro rubrica è dispobile attraverso LDAP… il tutto senza nulla cambiare nè nella logica di gestione degli utenti, nè in quella della casella di posta nè in quella della rubrica… e nulla si vedrebbe dentro le pagine JSP o nelle Action che lega queste informazioni a quelle sorgenti dati!

Altre info sono pubblicate sul sito madre, che è in costante crescita ed evoluzione:

http://smartweb.sourceforge.net

5 Responses to “Smartweb Project”


  1. 1 RyoXYZ 5 giugno 2007 alle 10:50

    Non ci ho capito na mazza ma complimenti a Roberto e a te! Dal tono che hai usato nel descrivere il tutto si capisce che finalmente il lavoro che stai facendo è appagante e soprattutto privo di qualsiasi persona e/o persone che ti frantumano i coglioni in continuazione. Ergo, lavori meglio ma sopratutto come vuoi!😉

  2. 2 Lapo 5 giugno 2007 alle 14:56

    Mi associo alla mazza, ma cmq la enfasi della spiegazione sugli strati è significativa. Grande ciccio.

  3. 3 Zeirus 5 giugno 2007 alle 15:35

    @ RyoXYZ e Lapo

    Da premettere che il mio lavoro, per dirla in termini di “pasticciere”, si è limitato soltanto all’apposizione della classica “ciliegina” sulla torta… per cui è bene sottolineare che la parte “sostanziosa” è tutta opera di Roberto e dei suoi collaboratori programmatori… semmai in futuro potrei “decorarla” con qualche piccolo tocco grafico supplementare, ma non ho avuto e non avrò mai un ruolo diretto nel “codice” vero e proprio…. diamo a Roberto quel che è di Roberto…😉

  4. 4 Giuseppe Contartese 24 giugno 2007 alle 16:20

    Faccio ,come sempre , i complimenti al “Grande Maestro” Roberto e mi compiaccio di avere trovato,spulciando nelle pagine web un’immagine raffigurante l’architettura di smartWeb.Utilizzo smartWeb da un pò di mesi e non posso che apprezzarne il funzionamento,nonchè l’eleganza e l’efficienza del framework.Il consiglio che vado a postare è quello di scaricarlo, cominciare ad utilizzarlo e testarlo nelle proprie applicazioni web (in ambiente J2EE s’intende).E bravo cicciuzzu…diamo a Roberto ..quel che è di Roberto..visto che Roberto, di già ,dà a noi quel che è suo..

  5. 5 Roberto Lo Giacco 24 giugno 2007 alle 17:58

    Grazie dei complimenti ragazzi, ma ci tengo a precisare che il lavoro di Zeirus è stato importante quanto tutto il resto: ogni contributo in un progetto open source ha il suo valore e sicuramente una grafica accattivante aumenta la visibilità di un sito e, di conseguenza, il numero di persone che contribuiscono.

    Mi dispiace che non siate riusciti a capire di cosa si tratta, ma d’altronde si tratta di uno strumento per programmatori quindi se non avete la minima idea di quali siano i problemi che un programmatore deve affrontare c’è poco da spiegare🙂

    D’altro canto però potreste sempre dare il vostro contributo sotto altri aspetti: c’è tanto da fare e sempre troppo poco tempo! Anche il solo diffondere il verbo (evangelizzare) è apprezzato!


Comments are currently closed.



Enter your email address to follow this blog and receive notifications of new posts by email.

Segui assieme ad altri 383 follower

Zeirus’s Twitter Page

Categorie

Archivio


%d blogger cliccano Mi Piace per questo: