ManyDesigns Portofino: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
tagged isolated of cluster Orfana0.
Nessun oggetto della modifica
Riga 4: Riga 4:
|Nome = ManyDesigns Portofino
|Nome = ManyDesigns Portofino
|Logo = ManyDesignsPortofinoScreenShot.jpg
|Logo = ManyDesignsPortofinoScreenShot.jpg
|Screenshot =
|Didascalia =
|Sviluppatore = [[ManyDesigns srl]]
|Sviluppatore = [[ManyDesigns srl]]
|UltimaVersione = 3.1.10
|UltimaVersione = 4.0.8
|DataUltimaVersione = [[22 marzo]] [[2011]]
|DataUltimaVersione = 3 Dicembre 2012
|UltimaVersioneBeta =
|DataUltimaVersioneBeta =
|SistemaOperativo = multipiattaforma
|SistemaOperativo = multipiattaforma
|Linguaggio = java
|Linguaggio = java
|Licenza = [[GNU General Public License|GPL v3]] con FLOSS exception
|Genere =
|Licenza = [[GNU General Public License|GPL v3]] o Licenza commerciale
|SoftwareLibero =
|Lingua =
|SitoWeb = [http://www.manydesigns.com/ www.manydesigns.com]
|SitoWeb = [http://www.manydesigns.com/ www.manydesigns.com]
}}
}}


'''ManyDesigns Portofino''' è un [[web application framework]] open source scritto in [[Java (linguaggio)|Java]], il quale supporta diversi database sia commerciali sia open source, basato sul framework [[Struts2]] [[Model-View-Controller|MVC]]. Segue i principi del model-driven engineering.
'''ManyDesigns Portofino''', o più semplicemente Portofino, è un [[web application framework]] scritto in [[Java (linguaggio)|Java]] e distribuito con licenza open source [[GNU General Public License|GPL]] v3 con [[FLOSS]] exception.


Il framework permette la creazione di applicazioni web basate sui database.
Portofino è indirizzato ai progetti di piccola e media dimensione, alla produttività e allo sviluppo in tempi brevi, e assicura qualità enterprise in termini di robustezza e manutenibilità.
Il processo di creazione delle pagine viene effettuato con un "[[Wizard_(informatica)|wizard]]", con una configurazione manuale attraverso l'interfaccia web, o personalizzato con un [[Linguaggio di scripting|linguaggi di scripting]].
Con progetto piccolo/medio si intende un'applicazione con un [[CRUD]] basato su 10-20 tabelle di database, uno o due workflow, differenti regole per quel che riguarda utenti, permessi, report on-line/stampati, e diverse integrazioni con sistemi esistenti.
Il framework unisce le principali caratteristiche tipiche di un [[Content management system|Content Management System]] con quelle di uno strumento [[Rapid Application Development|RAD]].


Portofino è principalmente pensato per programmatori Java che sviluppino applicazioni industriali e siti web dinamici.
Portofino è sviluppato dalla ManyDesigns srl e distribuito in due modalità di licenza ([[dual-licensing]]). La licenza open source è la [[GNU General Public License|GPL]] v3 con [[FLOSS]] exception.
E' 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.
==Approccio model-driven==
Portofino segue i principi del [[model-driven engineering]], dello sviluppo [[model-driven development|model driven]]<ref>G.Granatella, Aprile 2010, [http://www.infomedia.it/ "Model Driven Development con ManyDesigns Portofino"], ''Computer Programming'', Vol.18 n.2</ref> e della modellazione [[domain-specific modeling|domain-specific]]. Le applicazioni sono scritte definendo dei modelli logici, i quali descrivono le strutture delle applicazioni e le loro funzionalità. In questo senso, i modelli servono allo stesso scopo dei [[Linguaggio di programmazione|linguaggi di programmazione]], ma ad un livello più elevato di astrazione.


Portofino è sviluppato e mantenuto da ManyDesigns S.r.l.
==Modelli per domini specifici==
Portofino supporta modell di vario tipo:
*Modello dei dati: fatto di classi, attributi e relazioni, automaticamente mappato sul database (tabelle, colonne e integrità referenziale).
*Modello dei workflow: fatto di stati, transizioni e guardie.
*Modello utenti: fatto da un nucleo di classi che descrive gli utenti e i gruppi di utenti.
*Modello dei permessi: l'intersezione dei dati, workflow e modello utenti, tecnicamente è implementato attraverso una matrice di permessi con lo scopo di definire il sistema di controllo degli accessi.
*Attributi calcolati: il calcolo automatico di certi attributi su altri attributi, usando una sintassi simile ai fogli elettronici.
*Modello dei vincoli: basato sugli attributi calcolati, gestisce la validazione dei dati e le regole semantiche che possono coinvolgere attributi multipli.
*Modelo dei report: l'integrazione con librerie di reportistica ([[JFreeChart]] e [[JasperReports]]) in un ambiente model driven altamente produttivo.
*Modello delle notifiche: per le comunicazioni email tra gli eventi del sistema e gli utenti.
*Tutti i modelli possono essere considerati specifici di domino, e il loro campo di applicazione è il dominio delle applicazioni web. Gli stessi modelli (per esempio il modello dei dati e quello dei workflow) può essere considerato come più generale. Comunque, in Portofino sono usati nel dominio specifico delle applicazioni web (per esempio operazioni di creazione, lettura, modifica e cancellazione).


==Storia==
==Interfacce utente generate==
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.
Portofino genera automaticamente le interfacce utente basate sui modelli. Include:


Le versioni precedenti seguono i principi dello sviluppo [[Ingegneria guidata dal modello|model driven]] <ref>G.Granatella, Aprile 2010, [http://www.infomedia.it/ "Model Driven Development con ManyDesigns Portofino"], ''Computer Programming'', Vol.18 n.2</ref> e della modellazione [[Domain-specific language|domain-specific]].
*form ( creazione-lettura-modifica-cancellazione)
Le applicazioni sono scritte definendo dei modelli logici, che descrivono le strutture delle applicazioni e le loro funzionalità.
*navigazione delle relazioni
In questo senso, i modelli servono allo stesso scopo dei [[Linguaggio di programmazione|linguaggi di programmazione]], ma ad un livello più elevato di astrazione.
*ricerche con filtri multipli flessibili
*ricerca full-text
*operazioni sui workflow
*navigazione breadcrumbs
*lettura/scrittura dei campi basati sui permessi
*validazione dei campi
*selezioni in cascata
*gestione utenti
*autoregistrazione utenti e recupero password
*caricamento di file binari
*cruscotti interattivi con drill-down
*report parametrici in pdf, excel e altri formati


La nuova 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.
==Supporto ai database, astrazione e refactoring==
E' possibile inoltre effettuare maggiori personalizzazioni attraverso gli script in [[Groovy]].
Sono supportati i seguenti database.
Closed source:
* [[Oracle]]
* [[IBM DB2]]
* [[Microsoft SQL Server]]
Open source:
* [[MySQL]]
* [[PostgreSQL]]
* [[Apache Derby]] (come database embedded non di produzione)
Portofino fornisce un livello di astrazione per il [[Data Definition Language]] (DDL). Nonostante la presenza di standard ISO, questa area è eterogenea tra i diversi database. Il livello di astrazione isola l'utente dalle diverse differenze, includendo:
*Tipi di dati
*Sintassi delle DDL
*Funzionalità delle DDL (per esempio con certi database non è possibile cambiare la dimensione di una colonna VARCHAR. Portofino in maniera trasparente permette questa operazione su tutti i database).
*Gestione dei valori null nelle colonne univoche. Portofino assicura una compatibilità ISO a tre valori logici. Ci sono database (per esempio Microsoft SQL Server) che non supportano questa caratteristica in maniera nativa.


La tabella seguente mostra i principali cambiamenti archittetturali fra le versioni legacy e la nuova versione.
Portofino risolve anche i problemi di applicare cambiamenti di modelli su database che sono già popolati. Questo è fatto con un uso intensivo di operazioni ALTER TABLE, che preservano i dati esistenti, opposto all'operazione CREATE TABLE che assume un database vuoto.
Questo produce un approccio incrementale allo sviluppo, simile al [[refactoring]], favorendo [[metodologie agili]].


{| class="wikitable"
==Storia==
|-
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.
! Funzioni !! Versioni legacy !! Versioni 4.x
Le release principali sono state:
|-
| [[Model-View-Controller| framework MVC]] || [[Struts]] || Stripes
|-
| Persistenza || Soluzione sviluppata internamente || [[Hibernate]]
|-
| Scripting || [[BeanShell]] || [[Groovy]]
|-
| Framework CSS/Javascript || Nessuno || YUI, [[JQuery|jQuery]] and [[JQuery UI|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.
*Portofino 1.0 (marzo 2006): sviluppo originale, supportando Oracle e PostgreSQL.
*Portofino 2.0 (gennaio 2008): Aggiunto supporto per DB2, SQL Server e MySQL.
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.
*Portofino 2.0.12 (febbraio 2009): Prima release pubblica open-source. Supporto per Derby.
*Portofino 3.0 (novembre 2009): Basato su Struts2 MVC per struttura interna, estensioni e personalizzazioni. Esteso il modello utenti e auto registrazione.
*Portofino 3.1 (marzo 2010): Semplificazione modello fisico su database


Nel 2006 Portofino ha ricevuto il premio Perotto<ref>A.Giangreco, Novembre 2006, [http://www.bjliguria.it/portal/page/categoryItem?contentId=160377 "Il software vincente per costruire altri software"], ''Liguria Business Journal'', Year 2 Issue 11(12)</ref><ref>Dixet, October 10th, 2006, [http://www.dixet.it/index.php?P=17&id=41 "Datasiel: il premio Perotto per il sociale"]</ref> nella sezione industria.
Nel 2006 Portofino ha ricevuto il premio Perotto<ref>A.Giangreco, Novembre 2006, [http://www.bjliguria.it/portal/page/categoryItem?contentId=160377 "Il software vincente per costruire altri software"], ''Liguria Business Journal'', Year 2 Issue 11(12)</ref><ref>Dixet, October 10th, 2006, [http://www.dixet.it/index.php?P=17&id=41 "Datasiel: il premio Perotto per il sociale"]</ref> 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==

===Struttura di una applicazione===
Portofino è una applicazione web in Java e quindi necessita di un application server per poter essere utilizzata.
La distribuzione del framework include anche [Tomcat|Apache Tomcat], ma può essere utilizzato anche con altri application server.
Il [WAR_(formato_file)|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.

===Connetività ai Database===
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 [[Tavola CRUD|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.
Portofino supporta anche le chiavi straniere sia semplici che composte.

===Tipologie di pagina===
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.
==Voci correlate==
==Voci correlate==
* [[Web application framework]]
* [[Web application framework]]
Riga 102: Riga 123:
* [http://www.manydesigns.com/ ManyDesigns Portofino homepage]
* [http://www.manydesigns.com/ ManyDesigns Portofino homepage]
* [http://sourceforge.net/projects/portofino/ Portofino a SourceForge.net]
* [http://sourceforge.net/projects/portofino/ Portofino a SourceForge.net]
* [http://java.sun.com/j2ee/verified/directory.html Java Powered for the Enterprise directory]
* [http://www.oracle.com/technetwork/java/javaee/directory-141301.html Java Powered for the Enterprise directory]
* [http://programmazione.it/index.php?entity=eitem&idItem=42859 http://programmazione.it/index.php?entity=eitem&idItem=42859]
* [http://programmazione.it/index.php?entity=eitem&idItem=42859 http://programmazione.it/index.php?entity=eitem&idItem=42859]
* [http://www.gt-logiciel-libre.org/2009/09/20-startups-innovantes-open-source-nominees-pour-les-open-innovation-awards/ http://www.gt-logiciel-libre.org/2009/09/20-startups-innovantes-open-source-nominees-pour-les-open-innovation-awards/] (in Francese)
* [http://www.systematic-paris-region.org/fr/actualites/l-open-world-forum-devoile-les-20-startups-innovantes-de-l-open-source-nominees-pour-les- Open World Forum] (in Francese)
{{Portale|Web}}
{{Portale|Web}}



Versione delle 17:10, 13 dic 2012

ManyDesigns Portofino
software
Logo
Logo
Schermata di esempio
Schermata di esempio
Genere
SviluppatoreManyDesigns srl
Ultima versione4.0.8 (3 Dicembre 2012)
Sistema operativoMultipiattaforma
LinguaggioMateria:Java
LicenzaGPL v3 con FLOSS exception
Sito webwww.manydesigns.com

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

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. E' 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.

Portofino è sviluppato e mantenuto da ManyDesigns S.r.l.

Storia

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. 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. E' 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[2][3] 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

Struttura di una applicazione

Portofino è una applicazione web in Java e quindi necessita di un application server per poter essere utilizzata. La distribuzione del framework include anche [Tomcat|Apache Tomcat], ma può essere utilizzato anche con altri application server. Il [WAR_(formato_file)|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.

Connetività ai Database

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. Portofino supporta anche le chiavi straniere sia semplici che composte.

Tipologie di pagina

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.

Voci correlate

Note

  1. ^ G.Granatella, Aprile 2010, "Model Driven Development con ManyDesigns Portofino", Computer Programming, Vol.18 n.2
  2. ^ A.Giangreco, Novembre 2006, "Il software vincente per costruire altri software", Liguria Business Journal, Year 2 Issue 11(12)
  3. ^ Dixet, October 10th, 2006, "Datasiel: il premio Perotto per il sociale"

Collegamenti esterni

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

Template:Voci isolate