| ManyDesigns Portofino software | |
|---|---|
| Genere | Framework per applicazioni web |
| Sviluppatore | ManyDesigns srl |
| Ultima versione | 4.0.10 (25 marzo 2013) |
| Sistema operativo | Multipiattaforma |
| Linguaggio | Java |
| 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 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.
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 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. 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 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.
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:
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.
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.
Il framework supporta sette tipologie di pagina come descritto di seguito.
Tutte le pagine sono implementate come action bean scritti in Java. Le pagine possono essere personalizzate estendendo le classi Java negli script Groovy.