2004 CiBiSoft.com – Carlo Barazzetta

Delphi Day 2004
Piacenza 9 giugno 2004
InstantObjects
Un Object Persistence Framework
Open Source
per Delphi 5,6,7 pro e Kylix 3
presentato da
Carlo Barazzetta
www.cibisoft.com
© 2004 CiBiSoft.com – Carlo Barazzetta
La mappatura
object/relational
Per ridurre le distanze tra il modello OO e il
modello relazionale
 Per memorizzare oggetti in strutture relazionali
(tabelle/record)
 Per sviluppare applicazioni OO senza database
ad oggetti
 Questo meccanismo di mappatura è contenuto in
un OPF (Object Persistence Framework)

Rif: http://www.ambysoft.com/persistenceLayer.html
© 2004 CiBiSoft.com – Carlo Barazzetta
Cosa è un O.P.F.

Un layer software che consente la
persistenza degli oggetti del modello su
vari mezzi di storage (database SQL o file
oriented, file XML...).


Il sistema di mappatuta O/R è una parte
dell'OPF.
Che scopo ha un OPF

Disaccoppia le classi del modello dal modo in
cui verranno salvate le istanze rendendo il
meccanismo di persistenza trasparente al
programmatore
© 2004 CiBiSoft.com – Carlo Barazzetta
Vantaggi di un OPF

Indipendenza dal motore e dalla struttura del
database


Possibilità di sfruttare la metodologia OO


In particolare l'incapsulamento e l'ereditarietà
Significativa riduzione delle ridondanze nel
codice


Il codice non vi fa mai riferimento esplicitamente
Rispetto ad un approccio “tradizionale” basato su
DataSet
Maggior riutilizzo del codice
© 2004 CiBiSoft.com – Carlo Barazzetta
Svantaggi di un OPF

Curva di apprendimento più ripida

Specie per chi ha esperienza con l'approccio
“tradizionale” Delphi di accesso ai dati.
Necessità di maggiori skill per i programmatori
 Minor sfruttamento delle caratteristiche dei
server database



Programmazione lato server, locking, transazioni...
Prestazioni generalmente inferiori

Rispetto ad applicazioni C/S o 3 tier ben
architettate
© 2004 CiBiSoft.com – Carlo Barazzetta
InstantObjects: Storia

Background
Una (sfortunata) storia come prodotto commerciale
 Creato in Danimarca da Seleqt
 Difficoltà ad avere il support adeguato


Progetto Open-Source
Rilasciato sotto licenza MPL
 L'interesse è cresciuto grazie alla disponibilità dei
sorgenti.
 Una solida base di utenti/sviluppatori
...compresi noi di Delphi & Dintorni!

© 2004 CiBiSoft.com – Carlo Barazzetta
Un semplice esempio

Una classe semplicissima (TPhone)

Definiamo la classe e le sue proprietà
 Osserviamo
il codice sorgente prodotto
(la modifica è bidirezionale)

Utilizziamo un broker per creare il database
 Osserviamo

la struttura creata
Creiamo una piccola interfaccia utente
 Aggiungere
un oggetto
 Scaricare gli oggetti dal db
© 2004 CiBiSoft.com – Carlo Barazzetta
IO: Supporto a design-time

Il Model Explorer
 Class
editor
 Class treeview
 Database builder

Il generatore di codice
 Struttura
delle classi in InstantObjects
 Esempio di codice generato (occhio ai commenti!)

Il file mdr
 Contiene
la mappatura (i commenti)
 Viene generato a partire dai sorgenti e è incluso
nell'exe
© 2004 CiBiSoft.com – Carlo Barazzetta
Persistence Layer: classi

TInstantObject
 Classe


base per tutti gli oggetti
Tip: crearne sempre una propria
TInstantAttribute
 Base
per tutti gli attributi
 oggetti di classi derivate da TInstantAttribute,
ed esposti come proprietà da TinstantObject

TinstantQuery
 Accesso

ai dati in “simil-sql”
TInstantConnector e i Brokers
 Un
broker isola le specificità di un back-end e/o di
una libreria di accesso ai dati
© 2004 CiBiSoft.com – Carlo Barazzetta
Presentation Layer: classi

TInstantExposer
 Un
dataset con i campi mappati sugli attributi di un
oggetto (ObjectClassName e FieldOptions)
 Può mostrare un solo record/oggetto o un elenco di
oggetti (amObject, amContent)
 Per usare i componenti data-aware
 Supporta lettura e scrittura
 Permette il filtraggio lato client (“a valle”)

TInstantSelector
 Un
Exposer con un TInstantQuery interno
 Per leggere dal DB elenchi di oggetti filtrati

Uso di DataSetFields per Master-Details
© 2004 CiBiSoft.com – Carlo Barazzetta
Presentation Layer: esempio

Intro Demo:

Un Modello più complesso:
 uso
di attributi semplici, Part, Parts, Reference,
References

Una interfaccia utente più evoluta:
 Ereditarietà

visuale
Uso di Selector ed Exposer
 (amObject
e amContent)
 ComboBox (uso dei field “object reference”)

Controlli di validità:
 Set(Property),
BeforeStore... isValidObject
© 2004 CiBiSoft.com – Carlo Barazzetta
Esempio: Demo “Primer”
Esempio da studiare bene e provare a
modificare prima di iniziare con nuovi progetti.
 Modello semplice ma completo

 Ereditarietà
e incapsulamento
Possibilità di testare i vari brokers
 Possibilità di provare il linguaggio simil-sql
 Generatore Random di dati
 Esportazione in XML del modello dati
 Versione compatibile con Kylix 3

© 2004 CiBiSoft.com – Carlo Barazzetta
Esempio: Sport Club Manager
Generazione alternativa sorgenti I.O. e
struttura DB.
 Il problema delle uses circolari:



Mappatura “Viste logiche”


Classi di base e classi applicative
(solo per broker SQL)
Soluzioni efficaci a problemi complessi:

Gestione multilingua sui dati
© 2004 CiBiSoft.com – Carlo Barazzetta
Perché Scegliere
InstantObjects?

Punti di forza
Molto RAD rispetto alla concorrenza
 Molto flessibile a livello di programmazione
 Supporto per i controlli data-aware
 Disponibilità di diversi Brokers di accesso ai dati
 Disponibile per Delphi 5,6,7 Pro e Kylix 3
 E' completo e funziona!

© 2004 CiBiSoft.com – Carlo Barazzetta
Il problema del Porting
Struttura del DB rigida
 Impossibile fare un porting “parziale”
 Il problema dell'Id univoco contro le chiavi
multiple.
 Se si è lavorato bene la parte di presentation e
le stampe si possono salvare.
 Le regole di business vanno completamente
riscritte (ma si semplificano!)

© 2004 CiBiSoft.com – Carlo Barazzetta
InstantObjects: disponibilità

Sito ufficiale:
 http://www.instantobjects.org
 http://sourceforge.net/projects/instantobjects/
 Sorgenti,
demos, help
 CVS

Newsgroup italiano e internazionale ospitato
da Delphi & Dintorni:
 news://news.delphiedintorni.it
© 2004 CiBiSoft.com – Carlo Barazzetta
Conclusioni
Un OPF funzionante gratis per Delphi
Professional e Kylix!
 Addio record, è stato bello finché è durato!
 Un bel passo avanti... per i più coraggiosi!

© 2004 CiBiSoft.com – Carlo Barazzetta
La situazione del progetto
Open Source

Carlo Wolter: Project Manager
Rilasciata la versione compatibile con Kylix 3
(compreso il demo Primer)
 Lavori in corso:

 miglioramento
delle prestazioni
 Supporto agli attributi Currency
 Nuovi Brokers (IBO, XML...)
 Analisi external Parts/References
 Feature Requests
© 2004 CiBiSoft.com – Carlo Barazzetta
Feature requests
© 2004 CiBiSoft.com – Carlo Barazzetta
Developer list
© 2004 CiBiSoft.com – Carlo Barazzetta