ManyDesigns Portofino

Da Wikipedia, l'enciclopedia libera.
ManyDesigns Portofino
Logo
Sviluppatore ManyDesigns srl
Ultima versione 4.0.10 (25 marzo 2013)
Sistema operativo Multipiattaforma
Linguaggio Java
Genere
Licenza LGPL
Sito web www.manydesigns.com

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

Il framework permette la creazione di applicazioni web basate sui database. Il processo di creazione delle pagine viene effettuato con un wizard, con una configurazione manuale attraverso l'interfaccia web, o personalizzato con un linguaggi di scripting. Il framework unisce le principali caratteristiche tipiche di un Content management system con quelle di uno strumento RAD.

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.

Una delle principali caratteristiche dello strumento è la possibilità di connettersi ad un database esistente e di generare una applicazione web completa e funzionante in base all'analisi automatica della struttura del database.

Storia[modifica | modifica wikitesto]

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.

Le versioni precedenti 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 nuova 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. È possibile inoltre effettuare maggiori personalizzazioni attraverso gli script in Groovy.

La tabella seguente mostra i principali cambiamenti archittetturali fra le versioni legacy e la nuova versione.

Funzioni Versioni legacy Versioni 4.x
framework MVC Struts Stripes
Persistenza Soluzione sviluppata internamente Hibernate
Scripting BeanShell Groovy
Framework CSS/Javascript Nessuno YUI, jQuery and jQuery UI
Sicurezza Soluzione sviluppata internamente Apache Shiro
Report JasperReports e JFreeChart Formatting Objects Processor (FOP), iText e JFreeChart
Refactoring del Database Soluzione sviluppata internamente Liquibase

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 4.x è attivamente sviluppata, mantenuta e supportata. La versione 3.x è mantenuta con rilasci 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 rilasciato nel 2006 come applicazione closed-source. Nel febbraio 2009 è stato rilasciato in open-source sotto la licenze GPL v3 con FLOSS exception.

Descrizione tecnica[modifica | modifica wikitesto]

Struttura di una applicazione[modifica | modifica wikitesto]

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 | modifica wikitesto]

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 | modifica wikitesto]

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 | modifica wikitesto]

  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", Liguria Business Journal, Year 2 Issue 11(12)
  4. ^ Dixet, October 10th, 2006, "Datasiel: il premio Perotto per il sociale"

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Web Portale Web: accedi alle voci di Wikipedia che trattano di Web