ManyDesigns Portofino

web application framework scritto in Java e distribuito con licenza open source LGPL

ManyDesigns Portofino, o più semplicemente Portofino, è un web application framework scritto in Java e distribuito con licenza open source LGPL.

ManyDesigns Portofino
software
Logo
Logo
Schermata di esempio
Schermata di esempio
Genere
SviluppatoreManyDesigns srl
Ultima versione4.0.10 (25 marzo 2013)
Sistema operativoMultipiattaforma
LinguaggioJava
LicenzaLGPL
Sito webwww.manydesigns.com

Il framework permette la creazione di applicazioni web basate sui database relazionali. Il processo di creazione delle pagine viene effettuato con un wizard, con una configurazione manuale attraverso l'interfaccia web, o personalizzato con un linguaggio di scripting.

Portofino è principalmente pensato per programmatori Java che sviluppino applicazioni industriali e siti web dinamici. È progettato per soddisfare tre necessità tipiche di un progetto IT quali la produttività, la ricchezza di funzionalità e l'affidabilità dell'architettura.

Le principali caratteristiche dello strumento sono la possibilità di connettersi ad un database esistente per generare un'applicazione web completa e funzionante, in base all'analisi automatica della struttura del database, e la possibilità di modificare l'applicazione stessa mentre essa è in esecuzione, aggiungendo nuove pagine o nuove funzionalità direttamente dall'interfaccia web o, in maniera più tradizionale e strutturata, modificando i sorgenti sul file system, senza necessità di ricompilare e riavviare. Per questo motivo, il framework presenta alcune caratteristiche tipiche di un Content management system oltre a quelle più tipiche di uno strumento RAD.

Storia modifica

Le versioni del framework 1.x, 2.x, e 3.x (versioni legacy) sono considerate delle evoluzioni incrementali del progetto iniziale, mentre la versione 4 ha introdotto una nuova riprogettazione. La versione 5, uscita nel 2019, non è più basata sul paradigma MVC classico (il client invia un modulo, il server lo processa e restituisce la nuova pagina HTML) ma adotta un modello "rich web application", con un client in Angular Material che comunica via server in modalità REST.

Le versioni fino alla 3 seguono i principi dello sviluppo model driven[1] e della modellazione domain-specific. Le applicazioni sono scritte definendo dei modelli logici, che descrivono le strutture delle applicazioni e le loro funzionalità. In questo senso, i modelli servono allo stesso scopo dei linguaggi di programmazione, ma ad un livello più elevato di astrazione.

La versione 4.x sposta l'attenzione dal modello logico al modello fisico[2]. Anziché vincolare lo sviluppatore a creare attraverso il framework il modello per il database, Portofino permette di connettersi a database esistenti, realizzati eventualmente con strumenti esterni. Rimane possibile effettuare maggiori personalizzazioni dell'applicazione attraverso script scritti in Groovy.

La tabella seguente mostra i principali cambiamenti architetturali fra le versioni legacy e le nuove versioni.

Funzioni Versioni legacy Versioni 4.x Versioni 5.x
framework MVC Struts Stripes Nessuno
Persistenza Soluzione sviluppata internamente Hibernate 4 Hibernate 5
Scripting BeanShell Groovy Groovy
Framework CSS/JavaScript Nessuno jQuery, jQuery UI e Bootstrap Angular Material
Sicurezza Soluzione sviluppata internamente Apache Shiro Apache Shiro
Report JasperReports e JFreeChart Formatting Objects Processor (FOP), iText e JFreeChart iText, Apache POI
Refactoring del Database Soluzione sviluppata internamente Liquibase Liquibase
Altre tecnologie - - Spring

Nonostante le differenze sopracitate, alcuni principi di progettazione, come la possibilità di modificare l'applicazione tramite la sola interfaccia web, sono presenti in tutte le versioni.

La versione corrente 5.x è attivamente sviluppata, mantenuta e supportata. Le versioni 4.x e 3.x sono mantenute con release per correzioni ai bug. Le versioni 1.x e 2.x sono obsolete e non più mantenute.

Nel 2006 Portofino ha ricevuto il premio Perotto[3][4] nella sezione industria.

Portofino è stato distribuito nel 2006 come applicazione closed-source. Nel febbraio 2009 è stato reso disponibile in open-source sotto la licenze GPL v3 con FLOSS exception.

Descrizione tecnica modifica

Struttura di una applicazione modifica

Portofino è una applicazione web in Java e quindi necessita di un application server per poter essere utilizzata. La distribuzione del framework include anche Tomcat, ma può essere utilizzato anche con altri application server. Il war contiene le librerie del framework, risorse css e JavaScript e le pagine jsp dell'interfaccia predefinita. Il war contiene anche una cartella "apps" dove lo sviluppatore può salvare le sue applicazioni. Un'applicazione (o più semplicemente app) consiste nei seguenti file e cartelle:

  • app.properties: il file con le proprietà per l'applicazione
  • blobs: la cartella dove sono salvati i file binari
  • dbs: la cartella per gli script Liquibase
  • groovy: la cartella dove vengono salvate le classi Groovy condivise dall'intera applicazione
  • pages: una cartella che contiene le pagine
  • portofino-messages.properties: il file I18N per l'internazionalizzazione
  • portofino-model.xml: un file xml che contiene le informazioni per la connessione e i metadati
  • web: una cartella per le risorse web specifiche per l'applicazione

Questi file e cartelle sono di solito modificati attraverso l'interfaccia web, ma è anche possibile modificarli direttamente sul file system con un editor di testi o un IDE.

Connettività ai database modifica

Portofino supporta come base dati le seguenti piattaforme commerciali e open: Oracle, Microsoft SQL Server, MySQL, PostgreSQL, e H2. Il framework si connette al database impostato e ne espone le tabelle attraverso un'interfaccia web per le operazioni CRUD. Le tabelle che non hanno una chiave primaria non possono essere esposte con questo metodo. Indici, vincoli di unicità, viste e stored procedure, benché non rilevate dal framework, possono essere utilizzate.

Portofino supporta la maggior parte dei data type dei database. Le chiavi primarie possono essere sia semplici che composte e di tutti i tipi. Supporta anche le chiavi straniere sia semplici che composte.

Tipologie di pagina modifica

Il framework supporta sette tipologie di pagina come descritto di seguito.

CRUD
Supporta le operazioni CRUD (Create, Read, Update, Delete) su una tabella del database, fornisce inoltre alcune operazioni accessorie come le esportazioni in PDF e Excel.
Chart
Istogrammi e grafici a torta interattivi.
Custom
Un modello per costruire pagine personalizzate.
Text
Testo html formattato con allegati quali immagini o documenti.
Calendar
Un calendario interattivi popolato con eventi estratti dalla base dati.
Many-to-many
Un'interfaccia per gestire le relazioni molti a molti.
Change password
Un'interfaccia per cambiare la propria password.

Tutte le pagine sono implementate come action bean scritti in Java. Le pagine possono essere personalizzate estendendo le classi Java negli script Groovy.

Note modifica

  1. ^ G.Granatella, Aprile 2010, "Model Driven Development con ManyDesigns Portofino", Computer Programming, Vol.18 n.2
  2. ^ Tecniche Model Driven nell'Industria Italiana: Risultati di un'indagine e condivisione di esperienze [1]
  3. ^ A.Giangreco, Novembre 2006, "Il software vincente per costruire altri software" Archiviato il 6 aprile 2008 in Internet Archive., Liguria Business Journal, Year 2 Issue 11(12)
  4. ^ Dixet, October 10th, 2006, "Datasiel: il premio Perotto per il sociale" Archiviato il 22 luglio 2011 in Internet Archive.

Voci correlate modifica

Collegamenti esterni modifica